Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -1,8 +1,11 @@
|
|||||||
package com.zt.plat.module.contractorder.enums.contract;
|
package com.zt.plat.module.contractorder.enums.contract;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典枚举
|
* 字典枚举
|
||||||
*/
|
*/
|
||||||
|
@Getter
|
||||||
public enum DictEnum {
|
public enum DictEnum {
|
||||||
|
|
||||||
/** ERP请求状态 */
|
/** ERP请求状态 */
|
||||||
@@ -60,19 +63,7 @@ public enum DictEnum {
|
|||||||
*/
|
*/
|
||||||
private final String remark;
|
private final String remark;
|
||||||
|
|
||||||
public String getLabel() {
|
public static DictEnum getByCodeAndType(String code, String dictType) {
|
||||||
return label;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCode() {
|
|
||||||
return code;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRemark() {
|
|
||||||
return remark;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static DictEnum getByCode(String code, String dictType) {
|
|
||||||
return DictEnum.valueOf(dictType + "_" +code);
|
return DictEnum.valueOf(dictType + "_" +code);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ public class ContractController implements BusinessControllerMarker {
|
|||||||
@PostMapping("/submit/erp")
|
@PostMapping("/submit/erp")
|
||||||
@Operation(summary = "提交ERP")
|
@Operation(summary = "提交ERP")
|
||||||
@PreAuthorize("@ss.hasPermission('base:contract:erp')")
|
@PreAuthorize("@ss.hasPermission('base:contract:erp')")
|
||||||
public CommonResult<Boolean> submitErp(@RequestBody List<Long> ids) {
|
public CommonResult<List<String>> submitErp(@RequestBody List<Long> ids) {
|
||||||
return success(contractService.submitErp(ids));
|
return success(contractService.submitErp(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ public interface ContractService {
|
|||||||
* @param ids 合同ID集合
|
* @param ids 合同ID集合
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Boolean submitErp(List<Long> ids);
|
List<String> submitErp(List<Long> ids);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除合同
|
* 删除合同
|
||||||
|
|||||||
@@ -706,7 +706,7 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
|| DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()))) {
|
|| DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()))) {
|
||||||
|
|
||||||
throw exception(CONTRACT_STATUS_NOT_UPDATE,
|
throw exception(CONTRACT_STATUS_NOT_UPDATE,
|
||||||
DictEnum.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
DictEnum.getByCodeAndType(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 校验合同名称是否重复
|
// 校验合同名称是否重复
|
||||||
@@ -730,6 +730,29 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
// 请求更新的合同信息
|
// 请求更新的合同信息
|
||||||
ContractMainDO newContractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class);
|
ContractMainDO newContractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class);
|
||||||
|
|
||||||
|
// 校验ERP的公司
|
||||||
|
if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())
|
||||||
|
|| StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) {
|
||||||
|
if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())) {
|
||||||
|
ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getPurchaseCompanyNumber());
|
||||||
|
if (erpCompany == null) {
|
||||||
|
throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.PURCHASE);
|
||||||
|
} else {
|
||||||
|
newContractMainDO.setErpPurchaseCompanyNumber(erpCompany.getNumber());
|
||||||
|
newContractMainDO.setErpPurchaseCompanyName(erpCompany.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) {
|
||||||
|
ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getSalesCompanyNumber());
|
||||||
|
if (erpCompany == null) {
|
||||||
|
throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.SALES);
|
||||||
|
} else {
|
||||||
|
newContractMainDO.setErpSalesCompanyNumber(erpCompany.getNumber());
|
||||||
|
newContractMainDO.setErpSalesCompanyName(erpCompany.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 删除关联信息
|
// 删除关联信息
|
||||||
// 查询合同明细
|
// 查询合同明细
|
||||||
List<ContractDetailDO> detailDOS = contractDetailMapper
|
List<ContractDetailDO> detailDOS = contractDetailMapper
|
||||||
@@ -952,7 +975,7 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
String msg = id.toString()
|
String msg = id.toString()
|
||||||
+ ":"
|
+ ":"
|
||||||
+ CONTRACT_STATUS_NOT_DELETE.getMsg()
|
+ CONTRACT_STATUS_NOT_DELETE.getMsg()
|
||||||
.replace("{}", DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
.replace("{}", DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||||
result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", msg));
|
result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1032,7 +1055,7 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
|| DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode().equals(contractMainDO.getStatus()))) {
|
|| DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode().equals(contractMainDO.getStatus()))) {
|
||||||
|
|
||||||
throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL,
|
throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL,
|
||||||
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 合同内容校验
|
// 合同内容校验
|
||||||
@@ -1119,7 +1142,7 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
if (!DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(contractMainDO.getStatus())) {
|
if (!DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(contractMainDO.getStatus())) {
|
||||||
|
|
||||||
throw exception(CONTRACT_STATUS_NOT_APPROVAL,
|
throw exception(CONTRACT_STATUS_NOT_APPROVAL,
|
||||||
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取当前流程正在审批的任务节点
|
// 获取当前流程正在审批的任务节点
|
||||||
@@ -1289,7 +1312,9 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean submitErp(List<Long> ids) {
|
public List<String> submitErp(List<Long> ids) {
|
||||||
|
|
||||||
|
List<String> results = new ArrayList<>();
|
||||||
|
|
||||||
// 遍历合同ID集合
|
// 遍历合同ID集合
|
||||||
ids.forEach(id -> {
|
ids.forEach(id -> {
|
||||||
@@ -1305,30 +1330,47 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
|| DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()))) {
|
|| DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()))) {
|
||||||
|
|
||||||
throw exception(CONTRACT_STATUS_NOT_SUBMIT_ERP,
|
throw exception(CONTRACT_STATUS_NOT_SUBMIT_ERP,
|
||||||
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 生成ERP合同映射表
|
// 生成ERP合同映射表
|
||||||
ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO);
|
ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO);
|
||||||
|
|
||||||
// 调用ERP模块
|
// 调用ERP模块
|
||||||
Map<Boolean, String> erpResult = sendToErp(erpContractVO);
|
JSONObject erpResult = sendToErp(erpContractVO);
|
||||||
log.info("合同提交ERP结果:{}", erpResult);
|
log.info("合同提交ERP结果:{}", erpResult);
|
||||||
|
String result = id
|
||||||
|
+"-"+erpResult.getBool("success")
|
||||||
|
+(erpResult.getBool("success") ? "" : "-" + erpResult.getStr("errMsg"));
|
||||||
|
results.add(result);
|
||||||
|
|
||||||
|
// 更新合同状态
|
||||||
|
if (erpResult.getBool("success")) {
|
||||||
|
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode());
|
||||||
|
contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_FIND.getCode());
|
||||||
|
contractMainMapper.updateById(contractMainDO);
|
||||||
|
} else {
|
||||||
|
contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_PUSH_ERROR.getCode());
|
||||||
|
contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_RLBK.getCode());
|
||||||
|
// contractMainDO.setCause(erpResult.getStr("errMsg"));
|
||||||
|
contractMainMapper.updateById(contractMainDO);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
throw exception(CONTRACT_NOT_EXISTS);
|
results.add(id+"-"+"false"+"-"+CONTRACT_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return true;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<Boolean, String> sendToErp(ErpContractSaveReqVO erpContractVO) {
|
private JSONObject sendToErp(ErpContractSaveReqVO erpContractVO) {
|
||||||
Map<Boolean, String> erpResult = new HashMap<>();
|
JSONObject erpResult = new JSONObject();
|
||||||
try {
|
try {
|
||||||
String result = erpContractService.submitErp(erpContractVO);
|
String result = erpContractService.submitErp(erpContractVO);
|
||||||
erpResult.put(true, result);
|
erpResult.putOnce("success", true);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
erpResult.put(false, e.getMessage());
|
erpResult.putOnce("success", false);
|
||||||
|
erpResult.putOnce("errMsg", e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
return erpResult;
|
return erpResult;
|
||||||
@@ -1439,7 +1481,7 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
// 合同状态校验
|
// 合同状态校验
|
||||||
if (!DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus())) {
|
if (!DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus())) {
|
||||||
throw exception(CONTRACT_STATUS_NOT_ARCHIVE,
|
throw exception(CONTRACT_STATUS_NOT_ARCHIVE,
|
||||||
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置归档状态
|
// 设置归档状态
|
||||||
@@ -1467,7 +1509,7 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
// 合同状态校验
|
// 合同状态校验
|
||||||
if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) {
|
if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) {
|
||||||
throw exception(CONTRACT_STATUS_NOT_ARCHIVE,
|
throw exception(CONTRACT_STATUS_NOT_ARCHIVE,
|
||||||
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置作废状态
|
// 设置作废状态
|
||||||
@@ -1498,7 +1540,7 @@ public class ContractServiceImpl implements ContractService {
|
|||||||
// 合同状态校验
|
// 合同状态校验
|
||||||
if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) {
|
if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) {
|
||||||
throw exception(CONTRACT_STATUS_NOT_ARCHIVE,
|
throw exception(CONTRACT_STATUS_NOT_ARCHIVE,
|
||||||
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置完结状态
|
// 设置完结状态
|
||||||
|
|||||||
@@ -22,11 +22,17 @@ public class ErpSubmitReqDTO {
|
|||||||
* "sign": 签名,uuid+srcsys+密码,MD5 32位小写签名,密码另行约定
|
* "sign": 签名,uuid+srcsys+密码,MD5 32位小写签名,密码另行约定
|
||||||
* "req": {具体参数,参见RFC功能列表}
|
* "req": {具体参数,参见RFC功能列表}
|
||||||
*/
|
*/
|
||||||
|
@Schema(description = "接口编号,必须,参见RFC功能列表,可调用接口编号范围051-900")
|
||||||
private String funcnr;
|
private String funcnr;
|
||||||
|
@Schema(description = "调用系统业务单据编号,必须,在外部系统唯一,用于关联")
|
||||||
private String bskey;
|
private String bskey;
|
||||||
|
@Schema(description = "SAP系统ID, 必须")
|
||||||
private String usrid;
|
private String usrid;
|
||||||
|
@Schema(description = "源调用系统ID,必须")
|
||||||
private String usrnm;
|
private String usrnm;
|
||||||
private String sign;
|
// @Schema(description = "签名,uuid+srcsys+密码,MD5 32位小写签名,密码另行约定")
|
||||||
|
// private String sign;
|
||||||
|
@Schema(description = "具体参数,参见RFC功能列表")
|
||||||
private Map<String, Object> req;
|
private Map<String, Object> req;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -159,13 +159,13 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ
|
|||||||
JSONObject dataJson = dataArray.getJSONObject(i);
|
JSONObject dataJson = dataArray.getJSONObject(i);
|
||||||
if (dataJson != null) {
|
if (dataJson != null) {
|
||||||
ErpProductiveVersionDO DO = new ErpProductiveVersionDO();
|
ErpProductiveVersionDO DO = new ErpProductiveVersionDO();
|
||||||
DO.setFactoryNumber(dataJson.getString("MATNR") != null ? dataJson.getString("MATNR").trim() : null);
|
DO.setFactoryNumber(dataJson.getString("WERKS") != null ? dataJson.getString("WERKS").trim() : null);
|
||||||
DO.setMaterialNumber(dataJson.getString("WERKS") != null ? dataJson.getString("WERKS").trim() : null);
|
DO.setMaterialNumber(dataJson.getString("MATNR") != null ? dataJson.getString("MATNR").trim() : null);
|
||||||
DO.setProductiveVersionNumber(dataJson.getString("VERID") != null ? dataJson.getString("VERID").trim() : null);
|
DO.setProductiveVersionNumber(dataJson.getString("VERID") != null ? dataJson.getString("VERID").trim() : null);
|
||||||
DO.setProductiveVersionName(dataJson.getString("TEXT1"));
|
DO.setProductiveVersionName(dataJson.getString("TEXT1"));
|
||||||
DO.setBomNumber(dataJson.getString("STLAL"));
|
DO.setBomNumber(dataJson.getString("STLAL"));
|
||||||
DO.setBlineGroup(dataJson.getString("PLNNR"));
|
DO.setBlineGroup(dataJson.getString("ALNAL"));
|
||||||
String alnalValue = dataJson.getString("ALNAL");
|
String alnalValue = dataJson.getString("PLNNR");
|
||||||
// 修复:增加对空字符串的判断
|
// 修复:增加对空字符串的判断
|
||||||
DO.setGroupCount(alnalValue != null && !alnalValue.trim().isEmpty() ? Long.valueOf(alnalValue.trim()) : null);
|
DO.setGroupCount(alnalValue != null && !alnalValue.trim().isEmpty() ? Long.valueOf(alnalValue.trim()) : null);
|
||||||
String number = dataJson.getString("MATNR").trim() + "-" + dataJson.getString("WERKS").trim() + "-" + dataJson.getString("VERID").trim();
|
String number = dataJson.getString("MATNR").trim() + "-" + dataJson.getString("WERKS").trim() + "-" + dataJson.getString("VERID").trim();
|
||||||
|
|||||||
@@ -107,9 +107,6 @@ public class ErpConfig {
|
|||||||
requestBody.put("bskey", reqDTO.getBskey());
|
requestBody.put("bskey", reqDTO.getBskey());
|
||||||
requestBody.put("usrid", reqDTO.getUsrid());
|
requestBody.put("usrid", reqDTO.getUsrid());
|
||||||
requestBody.put("usrnm", reqDTO.getUsrnm());
|
requestBody.put("usrnm", reqDTO.getUsrnm());
|
||||||
if (reqDTO.getSign() != null) {
|
|
||||||
requestBody.put("sign", reqDTO.getSign());
|
|
||||||
}
|
|
||||||
if (reqDTO.getReq() != null) {
|
if (reqDTO.getReq() != null) {
|
||||||
requestBody.put("req", reqDTO.getReq());
|
requestBody.put("req", reqDTO.getReq());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user