From 688f4f17a0ab64ccb8fcb57bb78a5a51bf2399f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BD=98=E8=8D=A3=E6=99=9F?= <9691125+pan-rongsheng@user.noreply.gitee.com> Date: Tue, 21 Oct 2025 18:04:21 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E7=AE=A1=E7=90=86=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrderController.java | 8 + .../purchaseorder/vo/PurchaseOrderRespVO.java | 21 ++ .../purchaseorder/vo/PurchaseorderReqVO.java | 23 ++ .../purchaseorder/PrchOrdDtlDO.java | 2 +- .../purchaseorder/PurchaseOrderService.java | 7 + .../PurchaseOrderServiceImpl.java | 243 ++++++++++---- .../ProcessDefinitionKeyConstants.java | 2 +- .../admin/erp/vo/ErpOrderSaveReqVO.java | 297 +++++++++++------- .../erp/service/erp/ErpOrderServiceImpl.java | 83 +++-- 9 files changed, 459 insertions(+), 227 deletions(-) create mode 100644 zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseorderReqVO.java diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java index 19252b1..2980070 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java @@ -182,4 +182,12 @@ public class PurchaseOrderController implements BusinessControllerMarker { return success(purchaseOrderService.linkOrder(req)); } + @PostMapping("/order-pass-reject") + @Operation(summary = "订单审核") + public CommonResult orderPassReject(@RequestBody PurchaseorderReqVO reqVO){ + return success(purchaseOrderService.orderPassReject(reqVO)); + } + + + } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java index de84f04..efe6331 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java @@ -175,4 +175,25 @@ public class PurchaseOrderRespVO { @Schema(description = "订单分类", example = "2") @ExcelProperty("订单分类") private String splyBsnTp; + + @Schema(description = "公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("公司名称") + private String cpName; + + @Schema(description = "是否提交审核,value为0或1") + @ExcelProperty("是否提交审核") + private int isPush; + + @Schema(description = "流程实例编号") + @ExcelProperty("流程实例编号") + private String processInstanceId; + + @Schema(description = "流程当前任务节点id") + @ExcelProperty("流程当前任务节点id") + private String taskId; + + @Schema(description = " 审批意见") + @ExcelProperty(" 审批意见") + private String reviewOpinion; + } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseorderReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseorderReqVO.java new file mode 100644 index 0000000..a8778e7 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseorderReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - 订单审核请求对象 Request VO") +@Data +public class PurchaseorderReqVO { + + @Schema(description = "合同主键ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同主键ID不能为空") + private Long id; + + @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核意见不能为空") + private String reviewOpinion; + + @Schema(description = "状态:待推送 WAIT_PUSH,已驳回 REJECTED", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核状态不能为空") + private String status; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java index 4810f44..fbd1a6f 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java @@ -84,7 +84,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO { * 暂估数量;推送ERP(必须) */ @TableField("QTY") - private String qty; + private BigDecimal qty; /** * 计量单位;推送ERP(必须) */ diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java index 66f32ca..c9075b5 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java @@ -110,4 +110,11 @@ public interface PurchaseOrderService { * */ boolean linkOrder(LinkOrderReqVO reqVO); + /** + * 订单审核通过和不通过 + * + * @param purchaseorderReqVO 采购审核 + * + */ + boolean orderPassReject(PurchaseorderReqVO purchaseorderReqVO); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java index 1132380..df3849d 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java @@ -9,16 +9,14 @@ import com.zt.plat.framework.common.pojo.CommonResult; 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; -import com.zt.plat.module.bpm.api.task.dto.BpmApprovalDetailReqDTO; -import com.zt.plat.module.bpm.api.task.dto.BpmApprovalDetailRespDTO; -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.api.task.dto.*; 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.contract.DictEnum; import com.zt.plat.module.contractorder.enums.purchaseorder.PurchaseOrderStatusEnum; import com.zt.plat.module.contractorder.service.contract.ContractService; import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants; @@ -37,6 +35,7 @@ import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; @@ -95,7 +94,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { String orderNumber = generateOrderNumber(purchaseOrder.getMtrlTp()); purchaseOrder.setSystemOrderNumber(orderNumber); purchaseOrderMapper.insert(purchaseOrder); - // 返回 + + if (createReqVO.getPrchOrdDtlSaveReqVOS().isEmpty()){ + return BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); + } //批量插入订单明细 createReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(purchaseOrder.getId())); List prchOrdDtlRespVOS = prchOrdDtlService.batchCreatePrchOrdDtl(createReqVO.getPrchOrdDtlSaveReqVOS()); @@ -113,13 +115,13 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { PurchaseOrderDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderDO.class); purchaseOrderMapper.updateById(updateObj); //删除订单明细 - prchOrdDtlService.deletePrchOrdDtlListByOrdIds(Collections.singletonList(updateReqVO.getId())); - log.info("删除旧的订单明细成功"); +// prchOrdDtlService.deletePrchOrdDtlListByOrdIds(Collections.singletonList(updateReqVO.getId())); +// log.info("删除旧的订单明细成功"); // 返回 //批量插入订单明细 - updateReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(updateReqVO.getId())); - prchOrdDtlService.batchCreatePrchOrdDtl(updateReqVO.getPrchOrdDtlSaveReqVOS()); - log.info("更新订单明细成功"); +// updateReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(updateReqVO.getId())); +// prchOrdDtlService.batchCreatePrchOrdDtl(updateReqVO.getPrchOrdDtlSaveReqVOS()); + log.info("更新订单明细成功"); } @Override @@ -140,7 +142,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { prchOrdDtlService.deletePrchOrdDtlListByOrdIds(ids); } - private void validatePurchaseOrderNosExists(List orderNos){ + + private void validatePurchaseOrderNosExists(List orderNos) { List list = purchaseOrderMapper.selectList(new LambdaQueryWrapper().in(PurchaseOrderDO::getSystemOrderNumber, orderNos)); if (CollUtil.isEmpty(list) || list.size() != orderNos.size()) { throw exception(PURCHASE_ORDER_NOT_EXISTS); @@ -239,51 +242,127 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Override @Transactional public String submitErp061(List ids) { - //通过订单号查询订单 + // 通过订单号查询订单 List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids); if (!purchaseOrderWithDetailsVOS.isEmpty()) { purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> { ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO(); - if (purchaseOrderWithDetailsVO.getPurchaseOrder() != null) { - erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getSystemOrderNumber()); - erpOrderSaveReqVO.setCompCode(purchaseOrderWithDetailsVO.getPurchaseOrder().getCompanyNumber());//公司代码 - erpOrderSaveReqVO.setVendor(purchaseOrderWithDetailsVO.getPurchaseOrder().getSupplierNumber());// 供应商帐号 - erpOrderSaveReqVO.setDocType(purchaseOrderWithDetailsVO.getPurchaseOrder().getType());//采购凭证类型 - erpOrderSaveReqVO.setDocDate(purchaseOrderWithDetailsVO.getPurchaseOrder().getVoucherDate()); //采购凭证日期 - erpOrderSaveReqVO.setPurchOrg(purchaseOrderWithDetailsVO.getPurchaseOrder().getPurchaseOrganizationCustomsDeclaration());//采购组织 - erpOrderSaveReqVO.setPurGroup(purchaseOrderWithDetailsVO.getPurchaseOrder().getPurchaseGroup());//采购组 - erpOrderSaveReqVO.setCurrency(purchaseOrderWithDetailsVO.getPurchaseOrder().getCurrencyNumber()); // 货币码 - erpOrderSaveReqVO.setExchRate(purchaseOrderWithDetailsVO.getPurchaseOrder().getExchangeRate());//汇率 - erpOrderSaveReqVO.setZzhth(purchaseOrderWithDetailsVO.getPurchaseOrder().getContractNumber());//纸质合同号 - erpOrderSaveReqVO.setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber());//小协议号 + PurchaseOrderDO order = purchaseOrderWithDetailsVO.getPurchaseOrder(); + erpOrderSaveReqVO.setOrderNo(order.getSystemOrderNumber()); + // 1. 处理抬头信息(Head) + ErpOrderSaveReqVO.Head head = new ErpOrderSaveReqVO.Head(); + head.setComp_code(order.getCompanyNumber()); // 公司编码 -> 公司代码 + head.setVendor(order.getSupplierNumber()); // 客商编码 -> 供应商帐号 + head.setDoc_type(order.getType()); // 订单类型 -> 采购凭证类型 + head.setDoc_date(order.getVoucherDate() != null ? order.getVoucherDate().toLocalDate() : null); // 凭证日期 -> 采购凭证日期 + head.setPurch_org(order.getPurchaseOrganizationCustomsDeclaration()); // 采购组织编码 -> 采购组织 + head.setPur_group(order.getPurchaseGroup()); // 采购组编码 -> 采购组 + head.setCurrency(order.getCurrencyNumber()); // 货币码 -> 货币码 + head.setExch_rate(order.getExchangeRate()); // 汇率 -> 汇率 + erpOrderSaveReqVO.setHead(head); + // 2. 处理抬头扩展信息(Exte) + ErpOrderSaveReqVO.Exte exte = new ErpOrderSaveReqVO.Exte(); + exte.setZzhth(order.getPaperContractNumber()); // 合同纸质合同号 -> 纸质合同号 + exte.setZxxyh(order.getAgreementNumber()); // 小协议号 -> 小协议号 + exte.setZnote(order.getRemark()); // 备注 -> 备注 + exte.setZlifnr(order.getAgentNumber()); // 代理方编码 -> 代理方 + erpOrderSaveReqVO.setExte(exte); + + List actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream() + .map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject) + .toList(); + JSONArray jsonArray = JSONArray.from(actsCtgrDtlList); + erpOrderSaveReqVO.setAccts(jsonArray); + // 3. 处理行项目信息(Item) + List details = purchaseOrderWithDetailsVO.getOrderDetails(); + if (details != null && !details.isEmpty()) { + List items = new ArrayList<>(); + for (PrchOrdDtlDO detail : details) { + ErpOrderSaveReqVO.Item item = new ErpOrderSaveReqVO.Item(); + + // 3.1 行项目基本信息 + item.setPo_item(detail.getLineNum() != null ? detail.getLineNum().intValue() : null); // 行项目 -> 行号 + item.setMaterial(detail.getMtrlNum()); // 物料编码 -> 物料号 + item.setPlant(detail.getRcvFactNum()); // 收货工厂编码 -> 工厂 + item.setStge_loc(detail.getRcvWrhNum()); // 收货库位编码 -> 库存地点 + item.setQuantity(detail.getQty()); // 暂估数量 -> 数量 + item.setPo_unit(detail.getUnt()); // 计量单位 -> 计量单位 + item.setNet_price(detail.getInTaxUprc()); // 含税单价 -> 含税单价 + item.setPrice_unit(detail.getPrcUnt() != null ? detail.getPrcUnt().intValue() : 1); // 价格单位 -> 价格单位 + item.setTax_code(detail.getTaxNum()); // 税码 -> 税码 + item.setGr_basediv(detail.getIsGrInv()); // 是否基于GR的发票校验 -> 基于GR的发票校验 + item.setUnlimited_dlv(detail.getIsUnlRcv()); // 是否允许无限制收货 -> 允许无限制过量交货 + item.setBatch(detail.getBat()); // 批次 -> 批次 + item.setAcctasscat(detail.getActsCtgr()); // 科目分配类别 -> 科目分配类别 + item.setMatl_group(detail.getMtrlCpntNum()); // 物料组编码 -> 物料组 + item.setShort_text(detail.getShrtTxt()); // 短文本 -> 短文本 + item.setRet_item(detail.getIsRlbkCgo()); // 退货标识 -> 退货项目标识 + item.setFree_item(detail.getIsFreeRcv()); // 是否免费收货标识 -> 免费项目标识 + item.setVendrbatch(String.valueOf(detail.getOutLineNum())); // 外部行项目号 -> 外部行项目号 + item.setNote_xq(detail.getRmkUnt()); // 备注信息-需求单位 -> 备注信息-需求单位 + item.setNote_wl(detail.getRmkMtrl()); // 备注信息-物料详细 -> 备注信息-物料详细 + + // 处理交货起止日期(格式:YYYYMMDD-YYYYMMDD) + StringBuilder vendMat = new StringBuilder(); + if (detail.getBgnDt() != null) { + vendMat.append(detail.getBgnDt().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); + } + vendMat.append("-"); + if (detail.getDdlDt() != null) { + vendMat.append(detail.getDdlDt().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); + } + item.setVend_mat(vendMat.toString()); + + // 3.2 行项目扩展信息(Itex) + ErpOrderSaveReqVO.Itex itex = new ErpOrderSaveReqVO.Itex(); + itex.setZmatnr(detail.getSaleMtrlNum()); // 销售物料号 -> 销售物料号 + itex.setZaufnr(detail.getInOrd()); // 统计型内部订单 -> 统计型内部订单 + itex.setZpurty(detail.getPrchCtgr()); // 采购类别 -> 采购类别 + itex.setZmenge(detail.getOrigWet()); // 原料湿重 -> 原料湿重 + item.setItex(itex); + + // 3.4 委托加工物料信息(Comp) - 简化处理,实际需解析JSON +// List comps = new ArrayList<>(); +// if (detail.getEnttDtl() != null && !detail.getEnttDtl().isEmpty()) { +// // 假设ENTT_DTL是JSON数组,实际需根据具体格式解析 +// ErpOrderSaveReqVO.Comp comp = new ErpOrderSaveReqVO.Comp(); +// comp.setSched_line(1); // 计划行号(示例) +// comp.setItem_no(1); // 项目编号(示例) +// // 其他字段需从JSON中解析:material、plant、entry_quantity等 +// comps.add(comp); +// } +// item.setComps(comps); + + items.add(item); + } + erpOrderSaveReqVO.setItems(items); } - if (purchaseOrderWithDetailsVO.getOrderDetails() != null) { - purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> { - erpOrderSaveReqVO.setPoItem(orderDetail.getLineNum()); //行号 - erpOrderSaveReqVO.setMaterial(orderDetail.getRcvFactNum());//物料号 - erpOrderSaveReqVO.setQuantity(orderDetail.getQty());// 数量 - erpOrderSaveReqVO.setPoUnit(orderDetail.getUnt());// 计量单位 - erpOrderSaveReqVO.setNetPrice(orderDetail.getInTaxUprc());// 含税单价 - erpOrderSaveReqVO.setActsCtgrDtl(orderDetail.getActsCtgrDtl()); - }); - } + + // 4. 推送ERP并处理返回结果 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()); + log.info("订单推送成功,订单id【{}】", order.getId()); + + // 解析ERP返回的ID + JSONObject jsonObject = JSONObject.parseObject(s); + String erpId = jsonObject.getString("id"); + if (erpId != null && !erpId.isEmpty()) { + // 更新订单的ERP编号 + PurchaseOrderDO updateDO = new PurchaseOrderDO(); + updateDO.setId(order.getId()); + updateDO.setOrderSAPNumber(erpId); + int updateCount = purchaseOrderMapper.updateById(updateDO); + if (updateCount > 0) { + log.info("更新订单ERPID成功,订单id【{}】", order.getId()); } else { - log.info("订单更新失败,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + log.error("订单更新失败,订单id【{}】", order.getId()); throw new RuntimeException("订单更新失败"); } + } else { + log.error("ERP返回ID为空,订单id【{}】", order.getId()); + throw new RuntimeException("ERP返回ID为空"); } }); - //推送后把erp订单id设置到订单里 - return "ERP推送成功"; } else { return "订单不存在"; @@ -341,27 +420,27 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { @Override public void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO) { // 校验存在 - if (reqVO.getIds()!=null){ - validatePurchaseOrderExists(reqVO.getIds()); - } - if (reqVO.getOrderNos()!=null){ - validatePurchaseOrderNosExists(reqVO.getOrderNos()); - } + if (reqVO.getIds() != null) { + validatePurchaseOrderExists(reqVO.getIds()); + } + if (reqVO.getOrderNos() != null) { + validatePurchaseOrderNosExists(reqVO.getOrderNos()); + } PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(reqVO.getSts()); if (byCode == null) { throw exception(PURCHASE_ORDER_STATUS_ERROR); } - purchaseOrderMapper.update(new LambdaUpdateWrapper().in(reqVO.getOrderNos()!=null,PurchaseOrderDO::getSystemOrderNumber, reqVO.getOrderNos()).in(reqVO.getIds()!=null,PurchaseOrderDO::getId, reqVO.getIds()).set(PurchaseOrderDO::getStatus, reqVO.getSts())); + purchaseOrderMapper.update(new LambdaUpdateWrapper().in(reqVO.getOrderNos() != null, PurchaseOrderDO::getSystemOrderNumber, reqVO.getOrderNos()).in(reqVO.getIds() != null, PurchaseOrderDO::getId, reqVO.getIds()).set(PurchaseOrderDO::getStatus, reqVO.getSts())); } @Override public CommonResult getMaterial(String orderNo) { PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectOne(new LambdaQueryWrapper().eq(PurchaseOrderDO::getSystemOrderNumber, orderNo)); - if (purchaseOrderDO == null){ - throw exception(PURCHASE_ORDER_NOT_EXISTS); - } + if (purchaseOrderDO == null) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } String mtrlTp = purchaseOrderDO.getMtrlTp(); - if ("RAW".equals(mtrlTp)){ + if ("RAW".equals(mtrlTp)) { //原料 MaterialRespVO materialRespVO = new MaterialRespVO(); materialRespVO.setMaterialType(mtrlTp); @@ -374,7 +453,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { materialDetails.setMaterialType(purchaseOrderDO.getMtrlTp()); materialRespVO.setMaterialDetails(List.of(materialDetails)); return CommonResult.success(materialRespVO); - }else { + } else { List detailsByOrderIds = prchOrdDtlService.getDetailsByOrderId(purchaseOrderDO.getId()); MaterialRespVO materialRespVO = new MaterialRespVO(); materialRespVO.setMaterialType(mtrlTp); @@ -399,6 +478,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { return contractService.linkOrder(reqVO); } + private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { //head PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); @@ -428,7 +508,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { item.setMaterial(prchOrdDtlDO.getRcvFactNum());//物料号 item.setPlant(prchOrdDtlDO.getRcvFactNum());//工厂 item.setStge_loc(prchOrdDtlDO.getRcvWrhNum());//库位 - item.setQuantity(prchOrdDtlDO.getQty());// 数量 + item.setQuantity(String.valueOf(prchOrdDtlDO.getQty()));// 数量 item.setPo_unit(prchOrdDtlDO.getUnt());// 计量单位 item.setNet_price(prchOrdDtlDO.getInTaxUprc());// 含税单价 item.setTax_code(prchOrdDtlDO.getTaxNum());//税码 @@ -452,8 +532,57 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService { }); erpOrderUpdateReqVO.setItexs(itexs); } + private String generateOrderNumber(String materialType) { return sequenceApi.getNextSequence("PURCHASE_ORDER_NUMBER", null, null).getData(); } + @Override + public boolean orderPassReject(PurchaseorderReqVO purchaseorderReqVO) { + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseorderReqVO.getId()); + if (ObjectUtils.isEmpty(purchaseOrderDO)) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); + // 获取当前流程正在审批的任务节点 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(purchaseOrderDO.getProcessInstanceId()).getData(); + BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1); + + // 判断是否流程已经通过、驳回 + BpmApprovalDetailReqDTO badrDto = new BpmApprovalDetailReqDTO(); + badrDto.setProcessInstanceId(purchaseOrderDO.getProcessInstanceId()); // 流程实例id + badrDto.setTaskId(undoTask.getId()); // 当前审核任务节点id + BpmApprovalDetailRespDTO approvalDetail = bpmProcessInstanceApi.getApprovalDetail(SecurityFrameworkUtils.getLoginUserId(), badrDto).getData(); + //如果审核通过 + if (BpmProcessInstanceStatusEnum.APPROVE.getStatus().equals(approvalDetail.getStatus())) { + purchaseOrderDO.setStatus(PurchaseOrderStatusEnum.TO_SUBMIT_ERP.getCode()); + } else if (BpmProcessInstanceStatusEnum.REJECT.getStatus().equals(approvalDetail.getStatus())) { + //如果审核不通过 + purchaseOrderDO.setStatus(PurchaseOrderStatusEnum.DRAFT.getCode()); + } + //设置审核意见 + purchaseOrderDO.setReviewOpinion(purchaseorderReqVO.getReviewOpinion()); + if (ObjectUtils.isNotEmpty(undoTask)) { + purchaseOrderDO.setTaskId(undoTask.getId()); + } + purchaseOrderMapper.updateById(purchaseOrderDO); //更新状态 + + // 需要调用bpm 审核接口更新审批中的状态 + if (DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode().equals(purchaseorderReqVO.getStatus()) && ObjectUtils.isNotEmpty(undoTask)) { + if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) { + BpmTaskApproveReqDTO btarDto = new BpmTaskApproveReqDTO(); + btarDto.setId(undoTask.getId()); + btarDto.setReason(purchaseorderReqVO.getReviewOpinion()); + bpmProcessInstanceApi.approveTask(btarDto); + } + } else if (DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(purchaseorderReqVO.getStatus()) && ObjectUtils.isNotEmpty(undoTask)) { + if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) { + BpmTaskRejectReqDTO btrrDto = new BpmTaskRejectReqDTO(); + btrrDto.setId(undoTask.getId()); + btrrDto.setReason(purchaseorderReqVO.getReviewOpinion()); + bpmProcessInstanceApi.rejectTask(btrrDto); + } + } + return false; + } } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java index 03b5759..2a15e8e 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java @@ -2,5 +2,5 @@ package com.zt.plat.module.contractorder.util.constants; public interface ProcessDefinitionKeyConstants { - String PURCHASE_ORDER_REVIEW_PROCESS = "purchase_order_review_process"; + String PURCHASE_ORDER_REVIEW_PROCESS = "purchase_order_review"; } diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java index 473d7b8..5a6ecc9 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java @@ -1,11 +1,15 @@ package com.zt.plat.module.erp.controller.admin.erp.vo; +import com.alibaba.fastjson2.JSONArray; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; + import java.math.BigDecimal; -import java.time.LocalDateTime; +import java.time.LocalDate; +import java.util.List; /** * ERP采购订单保存请求VO @@ -14,168 +18,221 @@ import java.time.LocalDateTime; @Schema(description = "ERP采购订单保存请求参数") public class ErpOrderSaveReqVO { - @Schema(description = "公司代码") - @NotEmpty(message = "公司代码不能为空") - private String compCode; // BUKRS CHAR4 - - @Schema(description = "供应商帐号") - @NotEmpty(message = "供应商帐号不能为空") - private String vendor; // LIFNR CHAR10 - - @Schema(description = "采购凭证类型") - @NotEmpty(message = "采购凭证类型不能为空") - private String docType; // BSART CHAR4 - - @Schema(description = "采购凭证日期") - @NotEmpty(message = "采购凭证日期不能为空") - private LocalDateTime docDate; // BEDAT DATS8(格式:YYYYMMDD) - - @Schema(description = "采购组织") - @NotEmpty(message = "采购组织不能为空") - private String purchOrg; // EKORG CHAR4 - - @Schema(description = "采购组") - @NotEmpty(message = "采购组不能为空") - private String purGroup; // EKGRP CHAR3 - - @Schema(description = "货币码") - @NotEmpty(message = "货币码不能为空") - private String currency; // WAERS CUKY5 - - @Schema(description = "汇率") - private BigDecimal exchRate; // WKURS DEC9,5 - @NotEmpty(message = "纸质合同号不能为空(已启用财务共享单位)") - private String zzhth; // CHAR60 - @Schema(description = "小协议号(绿星链通填入合同名称)") - private String zxxyh; // CHAR60 + @NotEmpty(message = "订单号不能为空") + private String orderNo; - @Schema(description = "备注(绿星链通填入系统采购订单头号)") - private String znote; // CHAR60 + @Valid + @NotNull(message = "采购订单抬头信息不能为空") + private Head head; - @Schema(description = "代理方(使用客商编码)") - private String zlifnr; // CHAR60 + @Valid + @NotNull(message = "采购订单抬头扩展信息不能为空") + private Exte exte; + @Valid + @NotEmpty(message = "采购订单行项目列表不能为空") + private List items; - @Schema(description = "行号") - @NotEmpty(message = "行号不能为空") - private Long poItem; // EBELP NUMC5 + private JSONArray accts; // 科目分配信息(科目分配类别为K或P时使用) + @Valid + private List comps; // 委托加工物料信息(委托加工订单时使用) - @Schema(description = "物料号") - private String material; // MATNR CHAR18 + @Schema(description = "采购订单抬头信息") + @Data + public static class Head { + @Schema(description = "公司代码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司代码不能为空") + private String comp_code; // BUKRS CHAR4 - @Schema(description = "工厂") - @NotEmpty(message = "工厂不能为空") - private String plant; // WERKS CHAR4 + @Schema(description = "供应商帐号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "供应商帐号不能为空") + private String vendor; // LIFNR CHAR10 - @Schema(description = "库存地点") - private String stgeLoc; // LGORT CHAR4 + @Schema(description = "采购凭证类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购凭证类型不能为空") + private String doc_type; // BSART CHAR4 - @Schema(description = "数量") - @NotEmpty(message = "数量不能为空") - private String quantity; // MENGE QUAN13,3 + @Schema(description = "采购凭证日期(YYYY-MM-DD)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "采购凭证日期不能为空") + private LocalDate doc_date; // BEDAT DATS8 - @Schema(description = "计量单位") - @NotNull(message = "计量单位不能为空") - private String poUnit; // MEINS UNIT3 + @Schema(description = "采购组织", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组织不能为空") + private String purch_org; // EKORG CHAR4 - @Schema(description = "含税单价") - @NotNull(message = "含税单价不能为空") - private BigDecimal netPrice; // NETPR CURR11,2 + @Schema(description = "采购组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组不能为空") + private String pur_group; // EKGRP CHAR3 - @Schema(description = "价格单位(默认值1,表示以上单价对应的采购单位数量)") - private Integer priceUnit; // PEINH DEC5 + @Schema(description = "货币码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "货币码不能为空") + private String currency; // WAERS CUKY5 - @Schema(description = "税码") - private String taxCode; // MWSKZ CHAR2 + @Schema(description = "汇率(保留5位小数)") + private BigDecimal exch_rate; // WKURS DEC9,5 + } - @Schema(description = "基于GR的发票校验") - private String grBasedIv; // WEBRE CHAR1 + @Schema(description = "采购订单抬头扩展信息") + @Data + public static class Exte { + @Schema(description = "纸质合同号(已启用财务共享单位必填)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "纸质合同号不能为空") + private String zzhth; // CHAR60 - @Schema(description = "允许无限制过量交货") - private String unlimitedDlv; // UEBTK CHAR1 + @Schema(description = "小协议号(绿星链通填入合同名称)") + private String zxxyh; // CHAR60 - @Schema(description = "批次") - private String batch; // CHARG CHAR10 + @Schema(description = "备注(绿星链通填入系统采购订单头号)") + private String znote; // CHAR60 - @Schema(description = "项目类别(委托加工订单时填入L)") - private String itemCat; // PSTYP CHAR1(原表CAHR为笔误,按CHAR处理) + @Schema(description = "代理方(使用客商编码)") + private String zlifnr; // CHAR60 + } - @Schema(description = "科目分配类别(固定资产采购:A;服务采购:S-销售服务费、K-成本中心、F-订单)") - private String acctassCat; // KNTTP CHAR1 + @Schema(description = "采购订单行项目信息") + @Data + public static class Item { + @Schema(description = "行号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "行号不能为空") + private Integer po_item; // EBELP NUMC5 - @Schema(description = "物料组(服务采购订单必填)") - private String matlGroup; // MATKL CHAR9 + @Schema(description = "物料号") + private String material; // MATNR CHAR18 - @Schema(description = "短文本(服务采购订单必填,绿星链通系统必须填入)") - private String shortText; // TXZ01 CHAR40 + @Schema(description = "工厂", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工厂不能为空") + private String plant; // WERKS CHAR4 - @Schema(description = "退货项目标识(退货行项目填X)") - private String retItem; // RETPO CHAR1 + @Schema(description = "库存地点") + private String stge_loc; // LGORT CHAR4 - @Schema(description = "免费项目标识(免费行项目填X)") - private String freeItem; // UMSON CHAR1 + @Schema(description = "数量(保留3位小数)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "数量不能为空") + private BigDecimal quantity; // MENGE QUAN13,3 - @Schema(description = "外部行项目号(绿星链通必填)") - private String vendrBatch; // LICHN CHAR15 + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位不能为空") + private String po_unit; // MEINS UNIT3 - @Schema(description = "备注信息-需求单位") - private String noteXq; // TDLINE CHAR132 + @Schema(description = "含税单价(保留2位小数)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "含税单价不能为空") + private BigDecimal net_price; // NETPR CURR11,2 - @Schema(description = "备注信息-物料详细") - private String noteWl; // TDLINE CHAR132 + @Schema(description = "价格单位(默认值1)") + private Integer price_unit = 1; // PEINH DEC5 - @Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)") - private String vendMat; // IDNLF CHAR22(原表说明为交货起止日期,按说明定义) + @Schema(description = "税码") + private String tax_code; // MWSKZ CHAR2 - @Schema(description = "销售物料号(科目分配类别为S时必填)") - private String zmatnr; + @Schema(description = "基于GR的发票校验(Y/N)") + private String gr_basediv; // WEBRE CHAR1(原字段名gr_basediv保持与源数据一致) - @Schema(description = "统计型内部订单") - private String zaufnr; + @Schema(description = "允许无限制过量交货(Y/N)") + private String unlimited_dlv; // UEBTK CHAR1 - @Schema(description = "采购类别(0-生产性物资类;1-项目投资类)") - private String zpurty; + @Schema(description = "批次") + private String batch; // CHARG CHAR10 - @Schema(description = "原料湿重") - private BigDecimal zmenge; + @Schema(description = "项目类别(委托加工填L)") + private String item_cat; // PSTYP CHAR1 + @Schema(description = "科目分配类别(A-固定资产/S-服务/K-成本中心/F-订单)") + private String acctasscat; // KNTTP CHAR1 - @Schema(description = "科目分配的序号(从1开始编号)") - @NotEmpty(message = "科目分配的序号不能为空") - private String serialNo; // DZEKKN NUMC2 + @Schema(description = "物料组(服务采购必填)") + private String matl_group; // MATKL CHAR9 - @Schema(description = "总账科目编号") - private String glAccount; // SAKNR CHAR10 + @Schema(description = "短文本(服务采购必填)") + private String short_text; // TXZ01 CHAR40 - @Schema(description = "成本中心(科目分配类别为F时必填)") - private String costcenter; // KOSTL CHAR10 + @Schema(description = "退货项目标识(X-是)") + private String ret_item; // RETPO CHAR1 - @Schema(description = "订单号(科目分配类别为F时必填)") - private String orderid; // AUFNR CHAR12 + @Schema(description = "免费项目标识(X-是)") + private String free_item; // UMSON CHAR1 - @Schema(description = "主资产号(科目分配类别为A时必填)") - private String assetNo; // ANLN1 CHAR12 + @Schema(description = "外部行项目号(绿星链通必填)") + private String vendrbatch; // LICHN CHAR15 - @Schema(description = "资产子编号(科目分配类别为A时必填,固定值‘0’)") - private String subNumber; // ANLN2 CHAR4 + @Schema(description = "备注信息-需求单位") + private String note_xq; // TDLINE CHAR132 + @Schema(description = "备注信息-物料详细") + private String note_wl; // TDLINE CHAR132 - @Schema(description = "计划行号(从1开始编号)") - private String schedLine; // ETENR NUMC4 + @Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)") + private String vend_mat; // IDNLF CHAR22 - @Schema(description = "项目编号(从1开始编号)") - private String itemNo; // RSPOS NUMC4 + @Valid + private Itex itex; // 行项目扩展信息 - @Schema(description = "委托加工需求数量") - @NotNull(message = "委托加工需求数量不能为空") - private BigDecimal entryQuantity; // MENGE QUAN13,3 + } - @Schema(description = "组件计量单位(为空时使用基本计量单位)") - private String entryUom; // MEINS UNIT3 + @Schema(description = "行项目扩展信息") + @Data + public static class Itex { + @Schema(description = "销售物料号(科目分配类别为S时必填)") + private String zmatnr; - @Schema(description = " 科目分配详情") - private String actsCtgrDtl; + @Schema(description = "统计型内部订单") + private String zaufnr; + @Schema(description = "采购类别(0-生产性物资类/1-项目投资类)") + private String zpurty; + + @Schema(description = "原料湿重") + private BigDecimal zmenge; + } + +// @Schema(description = "行项目科目分配信息") +// @Data +// public static class Acct { +// @Schema(description = "科目分配序号(从1开始)", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotNull(message = "科目分配序号不能为空") +// private Integer serial_no; // DZEKKN NUMC2 +// +// @Schema(description = "总账科目编号") +// private String gl_account; // SAKNR CHAR10 +// +// @Schema(description = "成本中心(科目分配类别为F时必填)") +// private String costcenter; // KOSTL CHAR10(源数据为costcenter,保持一致) +// +// @Schema(description = "订单号(科目分配类别为F时必填)") +// private String orderid; // AUFNR CHAR12(源数据为orderid,保持一致) +// +// @Schema(description = "主资产号(科目分配类别为A时必填)") +// private String asset_no; // ANLN1 CHAR12 +// +// @Schema(description = "资产子编号(科目分配类别为A时必填,固定值'0')") +// private String sub_number; // ANLN2 CHAR4 +// } + + @Schema(description = "委托加工物料信息") + @Data + public static class Comp { + @Schema(description = "计划行号(从1开始)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "计划行号不能为空") + private Integer sched_line; // ETENR NUMC4 + + @Schema(description = "项目编号(从1开始)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "项目编号不能为空") + private Integer item_no; // RSPOS NUMC4 + + @Schema(description = "加工前物料号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "加工前物料号不能为空") + private String material; // MATNR CHAR18 + + @Schema(description = "委托加工发货工厂", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "委托加工发货工厂不能为空") + private String plant; // PLANT CHAR4 + + @Schema(description = "委托加工需求数量(保留3位小数)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "委托加工需求数量不能为空") + private BigDecimal entry_quantity; // MENGE QUAN13,3 + + @Schema(description = "组件计量单位(为空使用基本计量单位)") + private String entry_uom; // MEINS UNIT3 + } } diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java index 0310f90..25ab5a0 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java @@ -26,25 +26,12 @@ public class ErpOrderServiceImpl implements ErpOrderService { ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061"); Map req = new HashMap<>(); - Map head = new HashMap<>(); - // head - head.put("comp_code", createVo.getCompCode()); - head.put("vendor", createVo.getVendor()); - head.put("doc_type", createVo.getDocType()); - head.put("doc_date", createVo.getDocDate()); - head.put("purch_org", createVo.getPurchOrg()); - head.put("pur_group", createVo.getPurGroup()); - head.put("currency", createVo.getCurrency()); - head.put("exch_rate", createVo.getExchRate()); - req.put("head", head); - //exte - Map exte = new HashMap<>(); - exte.put("zzhth", createVo.getZzhth()); - exte.put("zxxyh", createVo.getZxxyh()); - exte.put("znote", createVo.getZnote()); - exte.put("zlifnr", createVo.getZlifnr()); - req.put("exte", exte); getMaps(createVo, req); + req.put("head", createVo.getHead()); + req.put("item", createVo.getItems()); + req.put("comp", createVo.getComps()); + req.put("exte", createVo.getExte()); + req.put("acct", createVo.getAccts()); reqDTO.setReq(req); return submitToErp(reqDTO); @@ -53,7 +40,7 @@ public class ErpOrderServiceImpl implements ErpOrderService { private ErpSubmitReqDTO buildBaseReqDTO(ErpOrderSaveReqVO vo, String funcnr) { ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); reqDTO.setFuncnr(funcnr); - reqDTO.setBskey(vo.getOrderid()); + reqDTO.setBskey(vo.getOrderNo()); reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname())); return reqDTO; @@ -66,35 +53,35 @@ public class ErpOrderServiceImpl implements ErpOrderService { } private void getMaps(ErpOrderSaveReqVO vo, Map req) { - List> items = new ArrayList<>(); - Map item = new HashMap<>(); - item.put("po_item", vo.getPoItem()); - item.put("material", vo.getMaterial()); - item.put("plant", vo.getPlant()); - item.put("stge_loc", vo.getStgeLoc()); - item.put("quantity", vo.getQuantity()); - item.put("po_unit", vo.getPoUnit()); - item.put("net_price", vo.getNetPrice()); - item.put("price_unit", vo.getPriceUnit()); - item.put("tax_code", vo.getTaxCode()); - item.put("gr_based_iv", vo.getGrBasedIv()); - item.put("unlimited_dlv", vo.getUnlimitedDlv()); - item.put("batch", vo.getBatch()); - item.put("item_cat", vo.getItemCat()); - item.put("acctass_cat", vo.getAcctassCat()); - item.put("matl_group", vo.getMatlGroup()); - item.put("short_text", vo.getShortText()); - item.put("ret_item", vo.getRetItem()); - item.put("free_item", vo.getFreeItem()); - item.put("vendr_batch", vo.getVendrBatch()); - item.put("note_xq", vo.getNoteXq()); - item.put("note_wl", vo.getNoteWl()); - item.put("vend_mat", vo.getVendMat()); - items.add(item); - if ("K".equals(vo.getAcctassCat()) || "P".equals(vo.getAcctassCat())) { - req.put("acct", vo.getActsCtgrDtl()); - } - req.put("item", items); +// List> items = new ArrayList<>(); +// Map item = new HashMap<>(); +// item.put("po_item", vo.getPoItem()); +// item.put("material", vo.getMaterial()); +// item.put("plant", vo.getPlant()); +// item.put("stge_loc", vo.getStgeLoc()); +// item.put("quantity", vo.getQuantity()); +// item.put("po_unit", vo.getPoUnit()); +// item.put("net_price", vo.getNetPrice()); +// item.put("price_unit", vo.getPriceUnit()); +// item.put("tax_code", vo.getTaxCode()); +// item.put("gr_based_iv", vo.getGrBasedIv()); +// item.put("unlimited_dlv", vo.getUnlimitedDlv()); +// item.put("batch", vo.getBatch()); +// item.put("item_cat", vo.getItemCat()); +// item.put("acctass_cat", vo.getAcctassCat()); +// item.put("matl_group", vo.getMatlGroup()); +// item.put("short_text", vo.getShortText()); +// item.put("ret_item", vo.getRetItem()); +// item.put("free_item", vo.getFreeItem()); +// item.put("vendr_batch", vo.getVendrBatch()); +// item.put("note_xq", vo.getNoteXq()); +// item.put("note_wl", vo.getNoteWl()); +// item.put("vend_mat", vo.getVendMat()); +// items.add(item); +// if ("K".equals(vo.getAcctassCat()) || "P".equals(vo.getAcctassCat())) { +// req.put("acct", vo.getActsCtgrDtl()); +// } +// req.put("item", items); } @Override