Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
潘荣晟
2025-10-21 18:05:13 +08:00
7 changed files with 75 additions and 39 deletions

View File

@@ -1,8 +1,11 @@
package com.zt.plat.module.contractorder.enums.contract;
import lombok.Getter;
/**
* 字典枚举
*/
@Getter
public enum DictEnum {
/** ERP请求状态 */
@@ -60,19 +63,7 @@ public enum DictEnum {
*/
private final String remark;
public String getLabel() {
return label;
}
public String getCode() {
return code;
}
public String getRemark() {
return remark;
}
public static DictEnum getByCode(String code, String dictType) {
public static DictEnum getByCodeAndType(String code, String dictType) {
return DictEnum.valueOf(dictType + "_" +code);
}
}

View File

@@ -145,7 +145,7 @@ public class ContractController implements BusinessControllerMarker {
@PostMapping("/submit/erp")
@Operation(summary = "提交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));
}

View File

@@ -105,7 +105,7 @@ public interface ContractService {
* @param ids 合同ID集合
* @return
*/
Boolean submitErp(List<Long> ids);
List<String> submitErp(List<Long> ids);
/**
* 删除合同

View File

@@ -706,7 +706,7 @@ public class ContractServiceImpl implements ContractService {
|| DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()))) {
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);
// 校验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
@@ -952,7 +975,7 @@ public class ContractServiceImpl implements ContractService {
String msg = id.toString()
+ ":"
+ 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));
}
@@ -1032,7 +1055,7 @@ public class ContractServiceImpl implements ContractService {
|| DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode().equals(contractMainDO.getStatus()))) {
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())) {
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
public Boolean submitErp(List<Long> ids) {
public List<String> submitErp(List<Long> ids) {
List<String> results = new ArrayList<>();
// 遍历合同ID集合
ids.forEach(id -> {
@@ -1305,30 +1330,47 @@ public class ContractServiceImpl implements ContractService {
|| DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()))) {
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合同映射表
ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO);
// 调用ERP模块
Map<Boolean, String> erpResult = sendToErp(erpContractVO);
JSONObject erpResult = sendToErp(erpContractVO);
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 {
throw exception(CONTRACT_NOT_EXISTS);
results.add(id+"-"+"false"+"-"+CONTRACT_NOT_EXISTS);
}
});
return true;
return results;
}
private Map<Boolean, String> sendToErp(ErpContractSaveReqVO erpContractVO) {
Map<Boolean, String> erpResult = new HashMap<>();
private JSONObject sendToErp(ErpContractSaveReqVO erpContractVO) {
JSONObject erpResult = new JSONObject();
try {
String result = erpContractService.submitErp(erpContractVO);
erpResult.put(true, result);
erpResult.putOnce("success", true);
} catch (Exception e) {
erpResult.put(false, e.getMessage());
erpResult.putOnce("success", false);
erpResult.putOnce("errMsg", e.getMessage());
}
return erpResult;
@@ -1439,7 +1481,7 @@ public class ContractServiceImpl implements ContractService {
// 合同状态校验
if (!DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus())) {
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())) {
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())) {
throw exception(CONTRACT_STATUS_NOT_ARCHIVE,
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
}
// 设置完结状态