Merge branch 'refs/heads/dev' into test
This commit is contained in:
@@ -22,4 +22,5 @@ public interface ErrorCodeConstants {
|
||||
ErrorCode CONTRACT_STATUS_NOT_SUBMIT_APPROVAL = new ErrorCode(1_027_000_007, "{}状态合同不允许提交审核");
|
||||
ErrorCode CONTRACT_STATUS_NOT_APPROVAL = new ErrorCode(1_027_000_008, "{}状态合同不允许审核");
|
||||
ErrorCode CONTRACT_ERP_COMPANY_PLEASE_BIND = new ErrorCode(1_027_000_009, "请先绑定{}ERP公司信息");
|
||||
ErrorCode CONTRACT_STATUS_NOT_DELETE = new ErrorCode(1_027_000_010, "{}状态合同不允许删除");
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ public class TableFieldConstants {
|
||||
public static final String ID = "ID";
|
||||
|
||||
/* 合同主信息表 */
|
||||
// 系统合同编号;自动生成,校验唯一
|
||||
public static final String BSE_CTRT_MAIN_SYS_CTRT_NUM = "SYS_CTRT_NUM";
|
||||
// 合同名称;与ERP(HTMC)对应,校验唯一
|
||||
public static final String BSE_CTRT_MAIN_CTRT_NAME = "CTRT_NAME";
|
||||
public static final String BSE_CTRT_MAIN_CTRT_NAME_LABEL = "合同名称";
|
||||
|
||||
@@ -63,4 +63,8 @@ public enum DictEnum {
|
||||
public String getRemark() {
|
||||
return remark;
|
||||
}
|
||||
|
||||
public static DictEnum getByCode(String code, String dictType) {
|
||||
return DictEnum.valueOf(dictType + "_" +code);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*;
|
||||
import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO;
|
||||
import com.zt.plat.module.contractorder.service.contract.ContractService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
@@ -71,13 +70,20 @@ public class ContractController implements BusinessControllerMarker {
|
||||
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得合同详情")
|
||||
@Parameter(name = "id", description = "合同ID", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('base:contract:get')")
|
||||
public CommonResult<ContractRespVO> get(@RequestParam("id") Long id) {
|
||||
ContractRespVO contractRespVO = contractService.get(id);
|
||||
return success(contractRespVO);
|
||||
}
|
||||
|
||||
@GetMapping("/get/by-system-contract-number")
|
||||
@Operation(summary = "根据系统合同编号获得合同详情")
|
||||
@PreAuthorize("@ss.hasPermission('base:contract:get')")
|
||||
public CommonResult<ContractRespVO> getBySystemContractNumber(@RequestParam("systemContractNumber") String systemContractNumber) {
|
||||
ContractRespVO contractRespVO = contractService.getBySystemContractNumber(systemContractNumber);
|
||||
return success(contractRespVO);
|
||||
}
|
||||
|
||||
@PutMapping("update")
|
||||
@Operation(summary = "修改合同")
|
||||
@PreAuthorize("@ss.hasPermission('base:contract:update')")
|
||||
@@ -85,13 +91,11 @@ public class ContractController implements BusinessControllerMarker {
|
||||
return success(contractService.update(reqVO));
|
||||
}
|
||||
|
||||
// TODO
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除合同")
|
||||
@Parameter(name = "ids", description = "合同ID集合", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('base:contract:delete')")
|
||||
public CommonResult<Boolean> delete(@RequestParam("ids") Long[] ids) {
|
||||
return success(true);
|
||||
public CommonResult<List<JSONObject>> delete(@RequestBody List<Long> ids) {
|
||||
return success(contractService.delete(ids));
|
||||
}
|
||||
|
||||
// TODO
|
||||
@@ -144,11 +148,10 @@ public class ContractController implements BusinessControllerMarker {
|
||||
public void viewApproval() {
|
||||
}
|
||||
|
||||
// TODO
|
||||
@PostMapping("/submit/erp")
|
||||
@Operation(summary = "提交ERP")
|
||||
@PreAuthorize("@ss.hasPermission('base:contract:erp')")
|
||||
public void submitErp(@RequestBody List<Long> ids) {
|
||||
contractService.submitErp(ids);
|
||||
public CommonResult<List<String>> submitErp(@RequestBody List<Long> ids) {
|
||||
return success(contractService.submitErp(ids));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,7 +86,9 @@ public class PurchaseOrderController implements BusinessControllerMarker {
|
||||
@PreAuthorize("@ss.hasPermission('bse:purchase-order:query')")
|
||||
public CommonResult<PurchaseOrderRespVO> getPurchaseOrder(@RequestParam("id") Long id) {
|
||||
PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id);
|
||||
return success(BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class));
|
||||
PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class);
|
||||
purchaseOrderService.setOrderDetails(purchaseOrderRespVO);
|
||||
return success(purchaseOrderRespVO);
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@@ -94,7 +96,9 @@ public class PurchaseOrderController implements BusinessControllerMarker {
|
||||
@PreAuthorize("@ss.hasPermission('bse:purchase-order:query')")
|
||||
public CommonResult<PageResult<PurchaseOrderRespVO>> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) {
|
||||
PageResult<PurchaseOrderDO> pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class));
|
||||
PageResult<PurchaseOrderRespVO> purchaseOrderRespVOPageResult = BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class);
|
||||
purchaseOrderRespVOPageResult.getList().forEach(purchaseOrderRespVO -> purchaseOrderService.setOrderDetails(purchaseOrderRespVO));
|
||||
return success(purchaseOrderRespVOPageResult);
|
||||
}
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@@ -135,7 +139,7 @@ public class PurchaseOrderController implements BusinessControllerMarker {
|
||||
|
||||
//通过订单号查询订单信息
|
||||
@PostMapping("/get-order-by-order-no")
|
||||
@Operation(summary = "通过订单号查询订单信息")
|
||||
@Operation(summary = "通过订单号查询订单信息", description = "通过订单号查询订单信息")
|
||||
public CommonResult<List<PurchaseOrderDetailsRespVO>> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List<String> orderNos){
|
||||
return success(purchaseOrderService.getOrderByOrderNo(orderNos));
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
@@ -62,7 +63,7 @@ public class PrchOrdDtlSaveReqVO {
|
||||
|
||||
@Schema(description = "税码(字典: PRCH_TAX);推送ERP", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "税码(字典: PRCH_TAX);推送ERP不能为空")
|
||||
private BigDecimal taxNum;
|
||||
private String taxNum;
|
||||
|
||||
@Schema(description = "是否基于GR的发票校验;推送ERP")
|
||||
private String isGrInv;
|
||||
@@ -149,7 +150,7 @@ public class PrchOrdDtlSaveReqVO {
|
||||
private String isEnb;
|
||||
|
||||
@Schema(description = "科目分配详情;科目分配类别为K或P时使用(JSON)")
|
||||
private String actsCtgrDtl;
|
||||
private JSONObject actsCtgrDtl;
|
||||
|
||||
@Schema(description = "委托加工详情;委托加工订单使用(JSON)")
|
||||
private String enttDtl;
|
||||
|
||||
@@ -164,6 +164,7 @@ public class PurchaseOrderRespVO {
|
||||
@Schema(description = "订单明细")
|
||||
@ExcelProperty("订单明细")
|
||||
private List<PrchOrdDtlRespVO> prchOrdDtlRespVOS;
|
||||
|
||||
@Schema(description = "物料类型(字典:MTRL_TP)", example = "2")
|
||||
@ExcelProperty("物料类型(字典:MTRL_TP)")
|
||||
private String mtrlTp;
|
||||
|
||||
@@ -24,9 +24,9 @@ public class PurchaseOrderSaveReqVO {
|
||||
@Schema(description = "ERP订单号")
|
||||
private String orderSAPNumber;
|
||||
|
||||
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "订单号不能为空")
|
||||
private String systemOrderNumber;
|
||||
// @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
// @NotEmpty(message = "订单号不能为空")
|
||||
// private String systemOrderNumber;
|
||||
|
||||
@Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "公司编码;推送ERP(必须)不能为空")
|
||||
@@ -94,10 +94,10 @@ public class PurchaseOrderSaveReqVO {
|
||||
|
||||
@Schema(description = "代理方名称", example = "张三")
|
||||
private String agentName;
|
||||
|
||||
@Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "订单编码不能为空")
|
||||
private String orderNumber;
|
||||
//
|
||||
// @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
// @NotEmpty(message = "订单编码不能为空")
|
||||
// private String orderNumber;
|
||||
|
||||
@Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "系统合同编号不能为空")
|
||||
|
||||
@@ -104,7 +104,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO {
|
||||
* 税码(字典: PRCH_TAX);推送ERP
|
||||
*/
|
||||
@TableField("TAX_NUM")
|
||||
private BigDecimal taxNum;
|
||||
private String taxNum;
|
||||
/**
|
||||
* 是否基于GR的发票校验;推送ERP
|
||||
*/
|
||||
@@ -271,11 +271,4 @@ public class PrchOrdDtlDO extends BusinessBaseDO {
|
||||
@TableField("ELEM_CDG")
|
||||
private String elemCdg;
|
||||
|
||||
/**
|
||||
* 物料字典
|
||||
*
|
||||
*/
|
||||
@TableField("MTRL_TP")
|
||||
private String mtrlTp;
|
||||
|
||||
}
|
||||
|
||||
@@ -141,8 +141,8 @@ public class PurchaseOrderDO extends BusinessBaseDO {
|
||||
/**
|
||||
* 订单编码
|
||||
*/
|
||||
@TableField("ORD_NUM")
|
||||
private String orderNumber;
|
||||
// @TableField("ORD_NUM")
|
||||
// private String orderNumber;
|
||||
/**
|
||||
* 系统合同编号
|
||||
*/
|
||||
@@ -237,4 +237,12 @@ public class PurchaseOrderDO extends BusinessBaseDO {
|
||||
*/
|
||||
@TableField("IS_PUSH")
|
||||
private int isPush;
|
||||
|
||||
|
||||
/**
|
||||
* 物料字典
|
||||
*
|
||||
*/
|
||||
@TableField("MTRL_TP")
|
||||
private String mtrlTp;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public interface PurchaseOrderMapper extends BaseMapperX<PurchaseOrderDO> {
|
||||
.eqIfPresent(PurchaseOrderDO::getRemark, reqVO.getRemark())
|
||||
.eqIfPresent(PurchaseOrderDO::getAgentNumber, reqVO.getAgentNumber())
|
||||
.likeIfPresent(PurchaseOrderDO::getAgentName, reqVO.getAgentName())
|
||||
.eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber())
|
||||
// .eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber())
|
||||
.eqIfPresent(PurchaseOrderDO::getContractNumber, reqVO.getContractNumber())
|
||||
.eqIfPresent(PurchaseOrderDO::getMaterialNumber, reqVO.getMaterialNumber())
|
||||
.likeIfPresent(PurchaseOrderDO::getMaterialName, reqVO.getMaterialName())
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.zt.plat.module.contractorder.service.contract;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO;
|
||||
import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*;
|
||||
@@ -101,5 +102,21 @@ public interface ContractService {
|
||||
* @param ids 合同ID集合
|
||||
* @return
|
||||
*/
|
||||
void submitErp(List<Long> ids);
|
||||
List<String> submitErp(List<Long> ids);
|
||||
|
||||
/**
|
||||
* 删除合同
|
||||
*
|
||||
* @param ids 合同ID集合
|
||||
* @return 删除结果
|
||||
*/
|
||||
List<JSONObject> delete(List<Long> ids);
|
||||
|
||||
/**
|
||||
* 根据系统合同编号获得合同详情
|
||||
*
|
||||
* @param systemContractNumber 系统合同编号
|
||||
* @return 合同信息
|
||||
*/
|
||||
ContractRespVO getBySystemContractNumber(String systemContractNumber);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.zt.plat.module.contractorder.service.contract;
|
||||
|
||||
import cn.hutool.json.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
@@ -21,10 +22,7 @@ import com.zt.plat.module.contractorder.api.dto.contract.*;
|
||||
import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*;
|
||||
import com.zt.plat.module.contractorder.dal.dataobject.contract.*;
|
||||
import com.zt.plat.module.contractorder.dal.mysql.contract.*;
|
||||
import com.zt.plat.module.contractorder.enums.ApiConstants;
|
||||
import com.zt.plat.module.contractorder.enums.DateConstants;
|
||||
import com.zt.plat.module.contractorder.enums.ProcessConstants;
|
||||
import com.zt.plat.module.contractorder.enums.TableFieldConstants;
|
||||
import com.zt.plat.module.contractorder.enums.*;
|
||||
import com.zt.plat.module.contractorder.enums.contract.DictEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO;
|
||||
@@ -370,6 +368,100 @@ public class ContractServiceImpl implements ContractService {
|
||||
return respVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ContractRespVO getBySystemContractNumber(String systemContractNumber) {
|
||||
// 返回结果
|
||||
ContractRespVO respVO = new ContractRespVO();
|
||||
|
||||
// 查询并设置合同主信息
|
||||
ContractMainDO contractMainDO = contractMainMapper.selectOne(TableFieldConstants.BSE_CTRT_MAIN_SYS_CTRT_NUM,systemContractNumber);
|
||||
if (contractMainDO == null) {
|
||||
throw exception(CONTRACT_NOT_EXISTS);
|
||||
}
|
||||
BeanUtils.copyProperties(contractMainDO, respVO);
|
||||
|
||||
// 查询并设置合同明细
|
||||
List<ContractDetailDO> detailDOS = contractDetailMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, contractMainDO.getId());
|
||||
if (detailDOS != null && !detailDOS.isEmpty()) {
|
||||
respVO.setDetail(BeanUtils.toBean(detailDOS, DetailRespVO.class));
|
||||
respVO.getDetail().forEach(detail -> {
|
||||
|
||||
// 查询并设置交货计划
|
||||
List<ContractPlanDO> planDOS = contractPlanMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detail.getId());
|
||||
if (planDOS != null && !planDOS.isEmpty()) {
|
||||
detail.setPlans(BeanUtils.toBean(planDOS, PlanRespVO.class));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 查询并设置价款结算条款
|
||||
List<ContractFormulaDO> formulaDOS = contractFormulaMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractMainDO.getId());
|
||||
if (formulaDOS != null && !formulaDOS.isEmpty()) {
|
||||
respVO.setFormulas(BeanUtils.toBean(formulaDOS, FormulaRespVO.class));
|
||||
|
||||
respVO.getFormulas().forEach(formula -> {
|
||||
|
||||
// 查询并设置基础系数配置
|
||||
List<ContractCoefficientDO> coefficientDOS = contractCoefficientMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId());
|
||||
if (coefficientDOS != null && !coefficientDOS.isEmpty()) {
|
||||
formula.setCoefficients(BeanUtils.toBean(coefficientDOS, CoefficientRespVO.class));
|
||||
}
|
||||
// 查询并设置品位等级价配置
|
||||
List<ContractGradeDO> gradeDOS = contractGradeMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId());
|
||||
if (gradeDOS != null && !gradeDOS.isEmpty()) {
|
||||
formula.setGrades(BeanUtils.toBean(gradeDOS, GradeRespVO.class));
|
||||
}
|
||||
// 查询并设置调整价配置
|
||||
List<ContractDeductDO> deductDOS = contractDeductMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId());
|
||||
if (deductDOS != null && !deductDOS.isEmpty()) {
|
||||
formula.setDeducts(BeanUtils.toBean(deductDOS, DeductRespVO.class));
|
||||
}
|
||||
// 查询并设置市场价配置
|
||||
List<ContractPriceDO> priceDOS = contractPriceMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId());
|
||||
if (priceDOS != null && !priceDOS.isEmpty()) {
|
||||
formula.setPrices(BeanUtils.toBean(priceDOS, PriceRespVO.class));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 查询并设置参数降级规则
|
||||
List<ContractDemoteDO> demoteDOS = contractDemoteMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, contractMainDO.getId());
|
||||
if (demoteDOS != null && !demoteDOS.isEmpty()) {
|
||||
respVO.setDemotes(BeanUtils.toBean(demoteDOS, DemoteRespVO.class));
|
||||
}
|
||||
|
||||
// 查询并设置品位不计价规则
|
||||
List<ContractNotDO> notDOS = contractNotMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, contractMainDO.getId());
|
||||
if (notDOS != null && !notDOS.isEmpty()) {
|
||||
respVO.setNots(BeanUtils.toBean(notDOS, NotRespVO.class));
|
||||
}
|
||||
|
||||
// 查询并设置合同动态表单
|
||||
List<TemplateInstanceDataDO> templateInstanceDataDOS = templateInstanceDataMapper
|
||||
.selectList(TableFieldConstants.BSE_TMPL_INSC_DAT_INSC_ID, contractMainDO.getInstanceId());
|
||||
if (templateInstanceDataDOS != null && !templateInstanceDataDOS.isEmpty()) {
|
||||
respVO.setDynamicsFields(BeanUtils.toBean(templateInstanceDataDOS, TemplateInstanceDataRespVO.class));
|
||||
}
|
||||
|
||||
// 查询并设置合同动态条款
|
||||
List<TemplateInstanceItemDO> templateInstanceItemDOS = templateInstanceItemMapper
|
||||
.selectList(TableFieldConstants.BSE_TMPL_INSC_ITM_INSC_ID, contractMainDO.getInstanceId());
|
||||
if (templateInstanceItemDOS != null && !templateInstanceItemDOS.isEmpty()) {
|
||||
respVO.setDynamicsItems(BeanUtils.toBean(templateInstanceItemDOS, TemplateInstanceItemRespVO.class));
|
||||
}
|
||||
|
||||
return respVO;
|
||||
}
|
||||
|
||||
@Transactional
|
||||
@Override
|
||||
public Boolean update(ContractSaveReqVO reqVO) {
|
||||
@@ -412,7 +504,7 @@ public class ContractServiceImpl implements ContractService {
|
||||
|| DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(oldContractMainDO.getStatus())) {
|
||||
|
||||
throw exception(CONTRACT_STATUS_NOT_UPDATE,
|
||||
DictEnum.valueOf(oldContractMainDO.getStatus()).getLabel());
|
||||
DictEnum.getByCode(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||
}
|
||||
|
||||
// 请求更新的合同信息
|
||||
@@ -596,6 +688,83 @@ public class ContractServiceImpl implements ContractService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JSONObject> delete(List<Long> ids) {
|
||||
|
||||
// 执行结果
|
||||
List<JSONObject> result = new ArrayList<>();
|
||||
|
||||
ids.forEach(id -> {
|
||||
|
||||
// 查询合同是否存在
|
||||
ContractMainDO contractMainDO = contractMainMapper.selectById(id);
|
||||
if (contractMainDO == null) {
|
||||
result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", id.toString() + ":" + CONTRACT_NOT_EXISTS));
|
||||
}
|
||||
|
||||
// 合同状态校验
|
||||
if (!DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus())) {
|
||||
String msg = id.toString()
|
||||
+ ":"
|
||||
+ CONTRACT_STATUS_NOT_DELETE.getMsg()
|
||||
.replace("{}", DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||
result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", msg));
|
||||
}
|
||||
|
||||
// 删除关联信息
|
||||
// 查询合同明细
|
||||
List<ContractDetailDO> detailDOS = contractDetailMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id);
|
||||
if (detailDOS != null && !detailDOS.isEmpty()) {
|
||||
detailDOS.forEach(detailDO -> {
|
||||
Long detailDOId = detailDO.getId();
|
||||
|
||||
// 删除交货计划
|
||||
contractPlanMapper.delete(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detailDOId.toString());
|
||||
});
|
||||
|
||||
// 删除合同明细
|
||||
contractDetailMapper.delete(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id.toString());
|
||||
}
|
||||
|
||||
// 查询价款结算条款
|
||||
List<ContractFormulaDO> formulaDOS = contractFormulaMapper
|
||||
.selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id);
|
||||
if (formulaDOS != null && !formulaDOS.isEmpty()) {
|
||||
formulaDOS.forEach(formulaDO -> {
|
||||
|
||||
// 价款结算条款ID
|
||||
Long formulaDOId = formulaDO.getId();
|
||||
|
||||
// 删除基础系数配置
|
||||
contractCoefficientMapper.delete(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formulaDOId.toString());
|
||||
// 删除品位等级价配置
|
||||
contractGradeMapper.delete(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formulaDOId.toString());
|
||||
// 删除调整价配置
|
||||
contractDeductMapper.delete(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formulaDOId.toString());
|
||||
// 删除市场价配置
|
||||
contractPriceMapper.delete(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formulaDOId.toString());
|
||||
});
|
||||
|
||||
// 删除价款结算条款
|
||||
contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id.toString());
|
||||
}
|
||||
|
||||
// 删除参数降级规则
|
||||
contractDemoteMapper.delete(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, id.toString());
|
||||
|
||||
// 删除品位不计价规则
|
||||
contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, id.toString());
|
||||
|
||||
// 删除合同数据
|
||||
contractMainMapper.deleteById(id);
|
||||
|
||||
result.add(new JSONObject().putOnce("deleted", true).putOnce("msg", id.toString()));
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String submitApproval(Long id) {
|
||||
|
||||
@@ -618,7 +787,7 @@ public class ContractServiceImpl implements ContractService {
|
||||
|| DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) {
|
||||
|
||||
throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL,
|
||||
DictEnum.valueOf(contractMainDO.getStatus()).getLabel());
|
||||
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||
}
|
||||
|
||||
// 合同内容校验
|
||||
@@ -684,7 +853,7 @@ public class ContractServiceImpl implements ContractService {
|
||||
|| DictEnum.BSE_CTRT_STS_DELETED.getCode().equals(contractMainDO.getStatus())) {
|
||||
|
||||
throw exception(CONTRACT_STATUS_NOT_APPROVAL,
|
||||
DictEnum.valueOf(contractMainDO.getStatus()).getLabel());
|
||||
DictEnum.getByCode(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel());
|
||||
}
|
||||
|
||||
return "";
|
||||
@@ -828,7 +997,10 @@ public class ContractServiceImpl implements ContractService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void submitErp(List<Long> ids) {
|
||||
public List<String> submitErp(List<Long> ids) {
|
||||
|
||||
// 返回结果
|
||||
List<String> result = new ArrayList<>();
|
||||
|
||||
// 遍历合同ID集合
|
||||
ids.forEach(id -> {
|
||||
@@ -983,9 +1155,20 @@ public class ContractServiceImpl implements ContractService {
|
||||
erpContractVO.setUpdaterName(contractMainDO.getUpdaterName());
|
||||
|
||||
// 调用ERP模块
|
||||
erpContractService.submitErp(erpContractVO);
|
||||
String erpResult = null;
|
||||
try {
|
||||
erpResult = erpContractService.submitErp(erpContractVO);
|
||||
} catch (Exception e) {
|
||||
erpResult = e.getMessage();
|
||||
}
|
||||
log.info("合同提交ERP结果:{}", erpResult);
|
||||
result.add(id.toString() + ":" + erpResult);
|
||||
} else {
|
||||
result.add(id.toString() + ":" + CONTRACT_NOT_EXISTS);
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -81,4 +81,6 @@ public interface PurchaseOrderService {
|
||||
* @return 订单信息
|
||||
*/
|
||||
List<PurchaseOrderDetailsRespVO> getOrderByOrderNo(List<String> orderNo);
|
||||
|
||||
void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.contractorder.service.purchaseorder;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson2.JSONArray;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
|
||||
import com.zt.plat.module.bpm.api.task.BpmTaskApi;
|
||||
@@ -10,12 +13,16 @@ import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
|
||||
import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO;
|
||||
import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
|
||||
import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*;
|
||||
import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO;
|
||||
import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO;
|
||||
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PrchOrdDtlMapper;
|
||||
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper;
|
||||
import com.zt.plat.module.contractorder.enums.purchaseorder.PurchaseOrderStatusEnum;
|
||||
import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO;
|
||||
import com.zt.plat.module.erp.service.erp.ErpOrderService;
|
||||
import com.zt.plat.module.system.api.sequence.SequenceApi;
|
||||
import com.zt.plat.module.system.api.user.AdminUserApi;
|
||||
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -62,6 +69,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
|
||||
@Resource
|
||||
private BpmTaskApi bpmTaskApi;
|
||||
@Resource
|
||||
private PrchOrdDtlMapper prchOrdDtlMapper;
|
||||
|
||||
@Resource
|
||||
private SequenceApi sequenceApi;
|
||||
|
||||
|
||||
@Override
|
||||
public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) {
|
||||
@@ -72,6 +85,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
} else {
|
||||
purchaseOrder.setStatus(PurchaseOrderStatusEnum.TO_SUBMIT_ERP.getCode());
|
||||
}
|
||||
//生成订单号
|
||||
String orderNumber = generateOrderNumber(purchaseOrder.getMtrlTp());
|
||||
purchaseOrder.setSystemOrderNumber(orderNumber);
|
||||
purchaseOrderMapper.insert(purchaseOrder);
|
||||
// 返回
|
||||
//批量插入订单明细
|
||||
@@ -200,6 +216,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String submitErp061(List<Long> ids) {
|
||||
//通过订单号查询订单
|
||||
List<PurchaseOrderWithDetailsVO> purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids);
|
||||
@@ -207,7 +224,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> {
|
||||
ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO();
|
||||
if (purchaseOrderWithDetailsVO.getPurchaseOrder() != null) {
|
||||
erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getOrderNumber());
|
||||
erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getSystemOrderNumber());
|
||||
erpOrderSaveReqVO.setCompCode(purchaseOrderWithDetailsVO.getPurchaseOrder().getCompanyNumber());//公司代码
|
||||
erpOrderSaveReqVO.setVendor(purchaseOrderWithDetailsVO.getPurchaseOrder().getSupplierNumber());// 供应商帐号
|
||||
erpOrderSaveReqVO.setDocType(purchaseOrderWithDetailsVO.getPurchaseOrder().getType());//采购凭证类型
|
||||
@@ -220,7 +237,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
erpOrderSaveReqVO.setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber());//小协议号
|
||||
|
||||
}
|
||||
if (purchaseOrderWithDetailsVO.getOrderDetails()!= null){
|
||||
if (purchaseOrderWithDetailsVO.getOrderDetails() != null) {
|
||||
purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> {
|
||||
erpOrderSaveReqVO.setPoItem(orderDetail.getLineNum()); //行号
|
||||
erpOrderSaveReqVO.setMaterial(orderDetail.getRcvFactNum());//物料号
|
||||
@@ -230,9 +247,22 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
erpOrderSaveReqVO.setActsCtgrDtl(orderDetail.getActsCtgrDtl());
|
||||
});
|
||||
}
|
||||
erpOrderService.submitOrderToErp(erpOrderSaveReqVO);
|
||||
String s = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO);
|
||||
log.info("订单推送成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId());
|
||||
String erpId = JSONObject.parseObject(s).get("id").toString();
|
||||
if (erpId != null) {
|
||||
//更新订单
|
||||
int i = purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()).setOrderSAPNumber(erpId));
|
||||
if (i > 0) {
|
||||
log.info("更新订单ERPID成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId());
|
||||
} else {
|
||||
log.info("订单更新失败,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId());
|
||||
throw new RuntimeException("订单更新失败");
|
||||
}
|
||||
}
|
||||
});
|
||||
//推送后把erp订单id设置到订单里
|
||||
|
||||
return "ERP推送成功";
|
||||
} else {
|
||||
return "订单不存在";
|
||||
@@ -241,12 +271,16 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
|
||||
@Override
|
||||
public boolean submitErp062(Long id) {
|
||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectByOrderId(id);
|
||||
if (purchaseOrderDO== null){
|
||||
List<PurchaseOrderWithDetailsVO> purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(List.of(id));
|
||||
if (purchaseOrderWithDetailsVOS.isEmpty()) {
|
||||
throw exception(PURCHASE_ORDER_NOT_EXISTS);
|
||||
}
|
||||
if (purchaseOrderDO.getOrderSAPNumber().isEmpty()){ return true;}
|
||||
|
||||
if (purchaseOrderWithDetailsVOS.get(0).getPurchaseOrder().getOrderSAPNumber().isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
ErpOrderUpdateReqVO erpOrderUpdateReqVO = new ErpOrderUpdateReqVO();
|
||||
setValue(erpOrderUpdateReqVO, purchaseOrderWithDetailsVOS.get(0));
|
||||
erpOrderService.submitOrderToErp062(erpOrderUpdateReqVO);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -255,10 +289,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
// 校验存在
|
||||
validatePurchaseOrderExists(orderId);
|
||||
PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(status);
|
||||
if (byCode== null){
|
||||
if (byCode == null) {
|
||||
throw exception(PURCHASE_ORDER_STATUS_ERROR);
|
||||
}
|
||||
return purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(orderId).setStatus(status))>0;
|
||||
return purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(orderId).setStatus(status)) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -273,5 +307,76 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
return purchaseOrderDetailsRespVOS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO) {
|
||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderRespVO.getId());
|
||||
if (purchaseOrderDO == null) {
|
||||
return;
|
||||
}
|
||||
List<PrchOrdDtlDO> prchOrdDtlDOS = prchOrdDtlMapper.selectList(new LambdaQueryWrapper<PrchOrdDtlDO>().eq(PrchOrdDtlDO::getOrdId, purchaseOrderDO.getId()));
|
||||
purchaseOrderRespVO.setPrchOrdDtlRespVOS(BeanUtils.toBean(prchOrdDtlDOS, PrchOrdDtlRespVO.class));
|
||||
}
|
||||
|
||||
private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) {
|
||||
//head
|
||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderWithDetailsVO.getPurchaseOrder().getId());
|
||||
erpOrderUpdateReqVO.setPoNumber(purchaseOrderWithDetailsVO.getPurchaseOrder().getOrderSAPNumber()).setDeleteInd(purchaseOrderDO.getDeleted() ? 1 : 0).setCurrency(purchaseOrderWithDetailsVO.getPurchaseOrder().getCurrencyNumber()).setExchRate(purchaseOrderWithDetailsVO.getPurchaseOrder().getExchangeRate());
|
||||
//exte
|
||||
erpOrderUpdateReqVO.setZzhth(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber()).setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getAgreementNumber()).setZnote(purchaseOrderWithDetailsVO.getPurchaseOrder().getRemark()).setZlifnr(purchaseOrderWithDetailsVO.getPurchaseOrder().getAgreementNumber());
|
||||
//item
|
||||
setItems(erpOrderUpdateReqVO, purchaseOrderWithDetailsVO);
|
||||
//itex
|
||||
setItex(erpOrderUpdateReqVO, purchaseOrderWithDetailsVO);
|
||||
//acct
|
||||
// 使用FastJSON2直接将List转换为JSONArray
|
||||
// acct部分:转换List为JSONArray
|
||||
List<JSONObject> actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream()
|
||||
.map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject)
|
||||
.toList();
|
||||
|
||||
// 直接使用FastJSON2将List转换为JSONArray(关键优化点)
|
||||
JSONArray jsonArray = JSONArray.from(actsCtgrDtlList);
|
||||
|
||||
// 设置到对象中
|
||||
erpOrderUpdateReqVO.setAccts(jsonArray);
|
||||
}
|
||||
|
||||
private void setItems(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) {
|
||||
List<ErpOrderUpdateReqVO.item> items = new ArrayList<>();
|
||||
purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> {
|
||||
PrchOrdDtlDO prchOrdDtlDO = prchOrdDtlMapper.selectById(orderDetail.getId());
|
||||
ErpOrderUpdateReqVO.item item = new ErpOrderUpdateReqVO.item(); // item
|
||||
item.setPo_item(prchOrdDtlDO.getLineNum());//行号
|
||||
item.setMaterial(prchOrdDtlDO.getRcvFactNum());//物料号
|
||||
item.setPlant(prchOrdDtlDO.getRcvFactNum());//工厂
|
||||
item.setStge_loc(prchOrdDtlDO.getRcvWrhNum());//库位
|
||||
item.setQuantity(prchOrdDtlDO.getQty());// 数量
|
||||
item.setPo_unit(prchOrdDtlDO.getUnt());// 计量单位
|
||||
item.setNet_price(prchOrdDtlDO.getInTaxUprc());// 含税单价
|
||||
item.setTax_code(prchOrdDtlDO.getTaxNum());//税码
|
||||
item.setAcctasscat(prchOrdDtlDO.getActsCtgr());//科目分配类别
|
||||
item.setMatl_group(prchOrdDtlDO.getMtrlCpntNum());//物料组
|
||||
item.setShort_text(prchOrdDtlDO.getShrtTxt());//短文本
|
||||
item.setDelete_ind(prchOrdDtlDO.getDeleted() ? 1 : 0);//行项目删除标识
|
||||
items.add(item);
|
||||
});
|
||||
erpOrderUpdateReqVO.setItems(items);
|
||||
}
|
||||
|
||||
private void setItex(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) {
|
||||
List<ErpOrderUpdateReqVO.itex> itexs = new ArrayList<>();
|
||||
purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> {
|
||||
ErpOrderUpdateReqVO.itex itex = new ErpOrderUpdateReqVO.itex(); // itex
|
||||
itex.setPo_item(orderDetail.getLineNum()); //行号
|
||||
itex.setZpurty(orderDetail.getPrchCtgr());//采购类别
|
||||
itex.setZmatnr(orderDetail.getOrigWet()); // 原料湿重
|
||||
itexs.add(itex);
|
||||
});
|
||||
erpOrderUpdateReqVO.setItexs(itexs);
|
||||
}
|
||||
|
||||
private String generateOrderNumber(String materialType) {
|
||||
return sequenceApi.getNextSequence("PURCHASE_ORDER_NUMBER", null, null).getData();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
po.RMK,
|
||||
po.AGT_NUM,
|
||||
po.AGT_NAME,
|
||||
po.ORD_NUM,
|
||||
po.CTRT_NUM,
|
||||
po.MTRL_NUM,
|
||||
po.MTRL_NAME,
|
||||
@@ -140,7 +139,6 @@
|
||||
po.RMK,
|
||||
po.AGT_NUM,
|
||||
po.AGT_NAME,
|
||||
po.ORD_NUM,
|
||||
po.CTRT_NUM,
|
||||
po.MTRL_NUM,
|
||||
po.MTRL_NAME,
|
||||
@@ -213,7 +211,7 @@
|
||||
pod.ELEM_CDG
|
||||
FROM BSE_PRCH_ORD po
|
||||
LEFT JOIN BSE_PRCH_ORD_DTL pod ON po.ID = pod.ORD_ID
|
||||
WHERE po.ORD_SAP_NUM IN
|
||||
WHERE po.sys_ord_num IN
|
||||
<foreach collection="orderNos" item="orderNumber" open="(" separator="," close=")">
|
||||
#{orderNumber}
|
||||
</foreach>
|
||||
@@ -256,7 +254,6 @@
|
||||
<result column="RMK" property="remark"/>
|
||||
<result column="AGT_NUM" property="agentNumber"/>
|
||||
<result column="AGT_NAME" property="agentName"/>
|
||||
<result column="ORD_NUM" property="orderNumber"/>
|
||||
<result column="CTRT_NUM" property="contractNumber"/>
|
||||
<result column="MTRL_NUM" property="materialNumber"/>
|
||||
<result column="MTRL_NAME" property="materialName"/>
|
||||
|
||||
Reference in New Issue
Block a user