订单管理相关
This commit is contained in:
@@ -86,7 +86,9 @@ public class PurchaseOrderController implements BusinessControllerMarker {
|
|||||||
@PreAuthorize("@ss.hasPermission('bse:purchase-order:query')")
|
@PreAuthorize("@ss.hasPermission('bse:purchase-order:query')")
|
||||||
public CommonResult<PurchaseOrderRespVO> getPurchaseOrder(@RequestParam("id") Long id) {
|
public CommonResult<PurchaseOrderRespVO> getPurchaseOrder(@RequestParam("id") Long id) {
|
||||||
PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(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")
|
@GetMapping("/page")
|
||||||
@@ -94,7 +96,9 @@ public class PurchaseOrderController implements BusinessControllerMarker {
|
|||||||
@PreAuthorize("@ss.hasPermission('bse:purchase-order:query')")
|
@PreAuthorize("@ss.hasPermission('bse:purchase-order:query')")
|
||||||
public CommonResult<PageResult<PurchaseOrderRespVO>> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) {
|
public CommonResult<PageResult<PurchaseOrderRespVO>> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) {
|
||||||
PageResult<PurchaseOrderDO> pageResult = purchaseOrderService.getPurchaseOrderPage(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")
|
@GetMapping("/export-excel")
|
||||||
@@ -135,7 +139,7 @@ public class PurchaseOrderController implements BusinessControllerMarker {
|
|||||||
|
|
||||||
//通过订单号查询订单信息
|
//通过订单号查询订单信息
|
||||||
@PostMapping("/get-order-by-order-no")
|
@PostMapping("/get-order-by-order-no")
|
||||||
@Operation(summary = "通过订单号查询订单信息")
|
@Operation(summary = "通过订单号查询订单信息", description = "通过订单号查询订单信息")
|
||||||
public CommonResult<List<PurchaseOrderDetailsRespVO>> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List<String> orderNos){
|
public CommonResult<List<PurchaseOrderDetailsRespVO>> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List<String> orderNos){
|
||||||
return success(purchaseOrderService.getOrderByOrderNo(orderNos));
|
return success(purchaseOrderService.getOrderByOrderNo(orderNos));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo;
|
package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.*;
|
import lombok.*;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -62,7 +63,7 @@ public class PrchOrdDtlSaveReqVO {
|
|||||||
|
|
||||||
@Schema(description = "税码(字典: PRCH_TAX);推送ERP", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "税码(字典: PRCH_TAX);推送ERP", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotNull(message = "税码(字典: PRCH_TAX);推送ERP不能为空")
|
@NotNull(message = "税码(字典: PRCH_TAX);推送ERP不能为空")
|
||||||
private BigDecimal taxNum;
|
private String taxNum;
|
||||||
|
|
||||||
@Schema(description = "是否基于GR的发票校验;推送ERP")
|
@Schema(description = "是否基于GR的发票校验;推送ERP")
|
||||||
private String isGrInv;
|
private String isGrInv;
|
||||||
@@ -149,7 +150,7 @@ public class PrchOrdDtlSaveReqVO {
|
|||||||
private String isEnb;
|
private String isEnb;
|
||||||
|
|
||||||
@Schema(description = "科目分配详情;科目分配类别为K或P时使用(JSON)")
|
@Schema(description = "科目分配详情;科目分配类别为K或P时使用(JSON)")
|
||||||
private String actsCtgrDtl;
|
private JSONObject actsCtgrDtl;
|
||||||
|
|
||||||
@Schema(description = "委托加工详情;委托加工订单使用(JSON)")
|
@Schema(description = "委托加工详情;委托加工订单使用(JSON)")
|
||||||
private String enttDtl;
|
private String enttDtl;
|
||||||
|
|||||||
@@ -164,6 +164,7 @@ public class PurchaseOrderRespVO {
|
|||||||
@Schema(description = "订单明细")
|
@Schema(description = "订单明细")
|
||||||
@ExcelProperty("订单明细")
|
@ExcelProperty("订单明细")
|
||||||
private List<PrchOrdDtlRespVO> prchOrdDtlRespVOS;
|
private List<PrchOrdDtlRespVO> prchOrdDtlRespVOS;
|
||||||
|
|
||||||
@Schema(description = "物料类型(字典:MTRL_TP)", example = "2")
|
@Schema(description = "物料类型(字典:MTRL_TP)", example = "2")
|
||||||
@ExcelProperty("物料类型(字典:MTRL_TP)")
|
@ExcelProperty("物料类型(字典:MTRL_TP)")
|
||||||
private String mtrlTp;
|
private String mtrlTp;
|
||||||
|
|||||||
@@ -24,9 +24,9 @@ public class PurchaseOrderSaveReqVO {
|
|||||||
@Schema(description = "ERP订单号")
|
@Schema(description = "ERP订单号")
|
||||||
private String orderSAPNumber;
|
private String orderSAPNumber;
|
||||||
|
|
||||||
@Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
// @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotEmpty(message = "订单号不能为空")
|
// @NotEmpty(message = "订单号不能为空")
|
||||||
private String systemOrderNumber;
|
// private String systemOrderNumber;
|
||||||
|
|
||||||
@Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotEmpty(message = "公司编码;推送ERP(必须)不能为空")
|
@NotEmpty(message = "公司编码;推送ERP(必须)不能为空")
|
||||||
@@ -94,10 +94,10 @@ public class PurchaseOrderSaveReqVO {
|
|||||||
|
|
||||||
@Schema(description = "代理方名称", example = "张三")
|
@Schema(description = "代理方名称", example = "张三")
|
||||||
private String agentName;
|
private String agentName;
|
||||||
|
//
|
||||||
@Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
// @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotEmpty(message = "订单编码不能为空")
|
// @NotEmpty(message = "订单编码不能为空")
|
||||||
private String orderNumber;
|
// private String orderNumber;
|
||||||
|
|
||||||
@Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
@Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||||
@NotEmpty(message = "系统合同编号不能为空")
|
@NotEmpty(message = "系统合同编号不能为空")
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO {
|
|||||||
* 税码(字典: PRCH_TAX);推送ERP
|
* 税码(字典: PRCH_TAX);推送ERP
|
||||||
*/
|
*/
|
||||||
@TableField("TAX_NUM")
|
@TableField("TAX_NUM")
|
||||||
private BigDecimal taxNum;
|
private String taxNum;
|
||||||
/**
|
/**
|
||||||
* 是否基于GR的发票校验;推送ERP
|
* 是否基于GR的发票校验;推送ERP
|
||||||
*/
|
*/
|
||||||
@@ -271,11 +271,4 @@ public class PrchOrdDtlDO extends BusinessBaseDO {
|
|||||||
@TableField("ELEM_CDG")
|
@TableField("ELEM_CDG")
|
||||||
private String elemCdg;
|
private String elemCdg;
|
||||||
|
|
||||||
/**
|
|
||||||
* 物料字典
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
@TableField("MTRL_TP")
|
|
||||||
private String mtrlTp;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -141,8 +141,8 @@ public class PurchaseOrderDO extends BusinessBaseDO {
|
|||||||
/**
|
/**
|
||||||
* 订单编码
|
* 订单编码
|
||||||
*/
|
*/
|
||||||
@TableField("ORD_NUM")
|
// @TableField("ORD_NUM")
|
||||||
private String orderNumber;
|
// private String orderNumber;
|
||||||
/**
|
/**
|
||||||
* 系统合同编号
|
* 系统合同编号
|
||||||
*/
|
*/
|
||||||
@@ -237,4 +237,12 @@ public class PurchaseOrderDO extends BusinessBaseDO {
|
|||||||
*/
|
*/
|
||||||
@TableField("IS_PUSH")
|
@TableField("IS_PUSH")
|
||||||
private int isPush;
|
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::getRemark, reqVO.getRemark())
|
||||||
.eqIfPresent(PurchaseOrderDO::getAgentNumber, reqVO.getAgentNumber())
|
.eqIfPresent(PurchaseOrderDO::getAgentNumber, reqVO.getAgentNumber())
|
||||||
.likeIfPresent(PurchaseOrderDO::getAgentName, reqVO.getAgentName())
|
.likeIfPresent(PurchaseOrderDO::getAgentName, reqVO.getAgentName())
|
||||||
.eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber())
|
// .eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber())
|
||||||
.eqIfPresent(PurchaseOrderDO::getContractNumber, reqVO.getContractNumber())
|
.eqIfPresent(PurchaseOrderDO::getContractNumber, reqVO.getContractNumber())
|
||||||
.eqIfPresent(PurchaseOrderDO::getMaterialNumber, reqVO.getMaterialNumber())
|
.eqIfPresent(PurchaseOrderDO::getMaterialNumber, reqVO.getMaterialNumber())
|
||||||
.likeIfPresent(PurchaseOrderDO::getMaterialName, reqVO.getMaterialName())
|
.likeIfPresent(PurchaseOrderDO::getMaterialName, reqVO.getMaterialName())
|
||||||
|
|||||||
@@ -81,4 +81,6 @@ public interface PurchaseOrderService {
|
|||||||
* @return 订单信息
|
* @return 订单信息
|
||||||
*/
|
*/
|
||||||
List<PurchaseOrderDetailsRespVO> getOrderByOrderNo(List<String> orderNo);
|
List<PurchaseOrderDetailsRespVO> getOrderByOrderNo(List<String> orderNo);
|
||||||
|
|
||||||
|
void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
package com.zt.plat.module.contractorder.service.purchaseorder;
|
package com.zt.plat.module.contractorder.service.purchaseorder;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
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.framework.security.core.util.SecurityFrameworkUtils;
|
||||||
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
|
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.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.api.task.dto.BpmTaskRespDTO;
|
||||||
import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum;
|
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.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.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.dal.mysql.purchaseorder.PurchaseOrderMapper;
|
||||||
import com.zt.plat.module.contractorder.enums.purchaseorder.PurchaseOrderStatusEnum;
|
import com.zt.plat.module.contractorder.enums.purchaseorder.PurchaseOrderStatusEnum;
|
||||||
import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants;
|
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.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.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.AdminUserApi;
|
||||||
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
|
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -62,6 +69,12 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private BpmTaskApi bpmTaskApi;
|
private BpmTaskApi bpmTaskApi;
|
||||||
|
@Resource
|
||||||
|
private PrchOrdDtlMapper prchOrdDtlMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SequenceApi sequenceApi;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) {
|
public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) {
|
||||||
@@ -72,6 +85,9 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
} else {
|
} else {
|
||||||
purchaseOrder.setStatus(PurchaseOrderStatusEnum.TO_SUBMIT_ERP.getCode());
|
purchaseOrder.setStatus(PurchaseOrderStatusEnum.TO_SUBMIT_ERP.getCode());
|
||||||
}
|
}
|
||||||
|
//生成订单号
|
||||||
|
String orderNumber = generateOrderNumber(purchaseOrder.getMtrlTp());
|
||||||
|
purchaseOrder.setSystemOrderNumber(orderNumber);
|
||||||
purchaseOrderMapper.insert(purchaseOrder);
|
purchaseOrderMapper.insert(purchaseOrder);
|
||||||
// 返回
|
// 返回
|
||||||
//批量插入订单明细
|
//批量插入订单明细
|
||||||
@@ -200,6 +216,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public String submitErp061(List<Long> ids) {
|
public String submitErp061(List<Long> ids) {
|
||||||
//通过订单号查询订单
|
//通过订单号查询订单
|
||||||
List<PurchaseOrderWithDetailsVO> purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids);
|
List<PurchaseOrderWithDetailsVO> purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids);
|
||||||
@@ -207,7 +224,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> {
|
purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> {
|
||||||
ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO();
|
ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO();
|
||||||
if (purchaseOrderWithDetailsVO.getPurchaseOrder() != null) {
|
if (purchaseOrderWithDetailsVO.getPurchaseOrder() != null) {
|
||||||
erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getOrderNumber());
|
erpOrderSaveReqVO.setOrderid(purchaseOrderWithDetailsVO.getPurchaseOrder().getSystemOrderNumber());
|
||||||
erpOrderSaveReqVO.setCompCode(purchaseOrderWithDetailsVO.getPurchaseOrder().getCompanyNumber());//公司代码
|
erpOrderSaveReqVO.setCompCode(purchaseOrderWithDetailsVO.getPurchaseOrder().getCompanyNumber());//公司代码
|
||||||
erpOrderSaveReqVO.setVendor(purchaseOrderWithDetailsVO.getPurchaseOrder().getSupplierNumber());// 供应商帐号
|
erpOrderSaveReqVO.setVendor(purchaseOrderWithDetailsVO.getPurchaseOrder().getSupplierNumber());// 供应商帐号
|
||||||
erpOrderSaveReqVO.setDocType(purchaseOrderWithDetailsVO.getPurchaseOrder().getType());//采购凭证类型
|
erpOrderSaveReqVO.setDocType(purchaseOrderWithDetailsVO.getPurchaseOrder().getType());//采购凭证类型
|
||||||
@@ -220,7 +237,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
erpOrderSaveReqVO.setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber());//小协议号
|
erpOrderSaveReqVO.setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber());//小协议号
|
||||||
|
|
||||||
}
|
}
|
||||||
if (purchaseOrderWithDetailsVO.getOrderDetails()!= null){
|
if (purchaseOrderWithDetailsVO.getOrderDetails() != null) {
|
||||||
purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> {
|
purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> {
|
||||||
erpOrderSaveReqVO.setPoItem(orderDetail.getLineNum()); //行号
|
erpOrderSaveReqVO.setPoItem(orderDetail.getLineNum()); //行号
|
||||||
erpOrderSaveReqVO.setMaterial(orderDetail.getRcvFactNum());//物料号
|
erpOrderSaveReqVO.setMaterial(orderDetail.getRcvFactNum());//物料号
|
||||||
@@ -230,9 +247,22 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
erpOrderSaveReqVO.setActsCtgrDtl(orderDetail.getActsCtgrDtl());
|
erpOrderSaveReqVO.setActsCtgrDtl(orderDetail.getActsCtgrDtl());
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
erpOrderService.submitOrderToErp(erpOrderSaveReqVO);
|
String s = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO);
|
||||||
log.info("订单推送成功,订单id【{}】", purchaseOrderWithDetailsVO.getPurchaseOrder().getId());
|
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推送成功";
|
return "ERP推送成功";
|
||||||
} else {
|
} else {
|
||||||
return "订单不存在";
|
return "订单不存在";
|
||||||
@@ -241,12 +271,16 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean submitErp062(Long id) {
|
public boolean submitErp062(Long id) {
|
||||||
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectByOrderId(id);
|
List<PurchaseOrderWithDetailsVO> purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(List.of(id));
|
||||||
if (purchaseOrderDO== null){
|
if (purchaseOrderWithDetailsVOS.isEmpty()) {
|
||||||
throw exception(PURCHASE_ORDER_NOT_EXISTS);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -255,10 +289,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
// 校验存在
|
// 校验存在
|
||||||
validatePurchaseOrderExists(orderId);
|
validatePurchaseOrderExists(orderId);
|
||||||
PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(status);
|
PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(status);
|
||||||
if (byCode== null){
|
if (byCode == null) {
|
||||||
throw exception(PURCHASE_ORDER_STATUS_ERROR);
|
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
|
@Override
|
||||||
@@ -273,5 +307,76 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
|||||||
return purchaseOrderDetailsRespVOS;
|
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.RMK,
|
||||||
po.AGT_NUM,
|
po.AGT_NUM,
|
||||||
po.AGT_NAME,
|
po.AGT_NAME,
|
||||||
po.ORD_NUM,
|
|
||||||
po.CTRT_NUM,
|
po.CTRT_NUM,
|
||||||
po.MTRL_NUM,
|
po.MTRL_NUM,
|
||||||
po.MTRL_NAME,
|
po.MTRL_NAME,
|
||||||
@@ -140,7 +139,6 @@
|
|||||||
po.RMK,
|
po.RMK,
|
||||||
po.AGT_NUM,
|
po.AGT_NUM,
|
||||||
po.AGT_NAME,
|
po.AGT_NAME,
|
||||||
po.ORD_NUM,
|
|
||||||
po.CTRT_NUM,
|
po.CTRT_NUM,
|
||||||
po.MTRL_NUM,
|
po.MTRL_NUM,
|
||||||
po.MTRL_NAME,
|
po.MTRL_NAME,
|
||||||
@@ -256,7 +254,6 @@
|
|||||||
<result column="RMK" property="remark"/>
|
<result column="RMK" property="remark"/>
|
||||||
<result column="AGT_NUM" property="agentNumber"/>
|
<result column="AGT_NUM" property="agentNumber"/>
|
||||||
<result column="AGT_NAME" property="agentName"/>
|
<result column="AGT_NAME" property="agentName"/>
|
||||||
<result column="ORD_NUM" property="orderNumber"/>
|
|
||||||
<result column="CTRT_NUM" property="contractNumber"/>
|
<result column="CTRT_NUM" property="contractNumber"/>
|
||||||
<result column="MTRL_NUM" property="materialNumber"/>
|
<result column="MTRL_NUM" property="materialNumber"/>
|
||||||
<result column="MTRL_NAME" property="materialName"/>
|
<result column="MTRL_NAME" property="materialName"/>
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
package com.zt.plat.module.erp.controller.admin.erp.vo;
|
package com.zt.plat.module.erp.controller.admin.erp.vo;
|
||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import jakarta.validation.constraints.NotNull;
|
import jakarta.validation.constraints.NotNull;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ERP采购订单保存请求VO
|
* ERP采购订单保存请求VO
|
||||||
@@ -24,7 +27,7 @@ public class ErpOrderUpdateReqVO {
|
|||||||
|
|
||||||
@Schema(description = "删除标识(ELOEK)", example = " ")
|
@Schema(description = "删除标识(ELOEK)", example = " ")
|
||||||
@ExcelProperty("删除标识")
|
@ExcelProperty("删除标识")
|
||||||
private String deleteInd;
|
private Integer deleteInd;
|
||||||
|
|
||||||
@Schema(description = "货币码(WAERS)", requiredMode = Schema.RequiredMode.REQUIRED, example = "CNY")
|
@Schema(description = "货币码(WAERS)", requiredMode = Schema.RequiredMode.REQUIRED, example = "CNY")
|
||||||
@NotEmpty(message = "货币码不能为空")
|
@NotEmpty(message = "货币码不能为空")
|
||||||
@@ -54,10 +57,24 @@ public class ErpOrderUpdateReqVO {
|
|||||||
private String zlifnr;
|
private String zlifnr;
|
||||||
|
|
||||||
// ====================== 3. 行项目字段(列表-item) ======================
|
// ====================== 3. 行项目字段(列表-item) ======================
|
||||||
|
private List<item> items;
|
||||||
|
|
||||||
|
|
||||||
|
// ====================== 4. 行项目扩展字段(列表-itex) ======================
|
||||||
|
private List<itex> itexs;
|
||||||
|
// ====================== 5. 科目分配字段(列表-acct,类别为K或P时使用) ======================
|
||||||
|
private JSONArray accts;
|
||||||
|
|
||||||
|
// ====================== 6. 委托加工物料字段(列表-comp,委托加工订单时使用) ======================
|
||||||
|
private List<comp> comps;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "ERP采购订单item更新请求VO")
|
||||||
|
public static class item {
|
||||||
@Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010")
|
@Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010")
|
||||||
@NotEmpty(message = "行号不能为空")
|
@NotEmpty(message = "行号不能为空")
|
||||||
@ExcelProperty("行号")
|
@ExcelProperty("行号")
|
||||||
private String poItem;
|
private Long po_item;
|
||||||
|
|
||||||
@Schema(description = "物料号(MATNR)", example = "M0010001")
|
@Schema(description = "物料号(MATNR)", example = "M0010001")
|
||||||
@ExcelProperty("物料号")
|
@ExcelProperty("物料号")
|
||||||
@@ -70,39 +87,39 @@ public class ErpOrderUpdateReqVO {
|
|||||||
|
|
||||||
@Schema(description = "库存地点(LGORT)", example = "0001")
|
@Schema(description = "库存地点(LGORT)", example = "0001")
|
||||||
@ExcelProperty("库存地点")
|
@ExcelProperty("库存地点")
|
||||||
private String stgeLoc;
|
private String stge_loc;
|
||||||
|
|
||||||
@Schema(description = "数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.000")
|
@Schema(description = "数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.000")
|
||||||
@NotNull(message = "数量不能为空")
|
@NotNull(message = "数量不能为空")
|
||||||
@ExcelProperty("数量")
|
@ExcelProperty("数量")
|
||||||
private BigDecimal quantity;
|
private String quantity;
|
||||||
|
|
||||||
@Schema(description = "计量单位(MEINS),必须与该物料基本计量单位一致", requiredMode = Schema.RequiredMode.REQUIRED, example = "PC")
|
@Schema(description = "计量单位(MEINS),必须与该物料基本计量单位一致", requiredMode = Schema.RequiredMode.REQUIRED, example = "PC")
|
||||||
@NotEmpty(message = "计量单位不能为空")
|
@NotEmpty(message = "计量单位不能为空")
|
||||||
@ExcelProperty("计量单位")
|
@ExcelProperty("计量单位")
|
||||||
private String poUnit;
|
private BigDecimal po_unit;
|
||||||
|
|
||||||
@Schema(description = "含税单价(NETPR),保留2位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "199.99")
|
@Schema(description = "含税单价(NETPR),保留2位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "199.99")
|
||||||
@NotNull(message = "含税单价不能为空")
|
@NotNull(message = "含税单价不能为空")
|
||||||
@ExcelProperty("含税单价")
|
@ExcelProperty("含税单价")
|
||||||
private BigDecimal netPrice;
|
private BigDecimal net_price;
|
||||||
|
|
||||||
@Schema(description = "价格单位(PEINH),固定值1", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "价格单位(PEINH),固定值1", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
@NotNull(message = "价格单位不能为空")
|
@NotNull(message = "价格单位不能为空")
|
||||||
@ExcelProperty("价格单位")
|
@ExcelProperty("价格单位")
|
||||||
private Integer priceUnit;
|
private Integer price_unit;
|
||||||
|
|
||||||
@Schema(description = "税码(MWSKZ)", example = "J1")
|
@Schema(description = "税码(MWSKZ)", example = "J1")
|
||||||
@ExcelProperty("税码")
|
@ExcelProperty("税码")
|
||||||
private String taxCode;
|
private String tax_code;
|
||||||
|
|
||||||
@Schema(description = "基于GR的发票校验(WEBRE)", example = "Y")
|
@Schema(description = "基于GR的发票校验(WEBRE)", example = "Y")
|
||||||
@ExcelProperty("基于GR发票校验")
|
@ExcelProperty("基于GR发票校验")
|
||||||
private String grBasediv;
|
private String gr_basediv;
|
||||||
|
|
||||||
@Schema(description = "允许无限制过量交货(UEBTK)", example = "N")
|
@Schema(description = "允许无限制过量交货(UEBTK)", example = "N")
|
||||||
@ExcelProperty("允许过量交货")
|
@ExcelProperty("允许过量交货")
|
||||||
private String unlimitedDlv;
|
private String unlimited_dlv;
|
||||||
|
|
||||||
@Schema(description = "批次(CHARG)", example = "B202405001")
|
@Schema(description = "批次(CHARG)", example = "B202405001")
|
||||||
@ExcelProperty("批次")
|
@ExcelProperty("批次")
|
||||||
@@ -110,7 +127,7 @@ public class ErpOrderUpdateReqVO {
|
|||||||
|
|
||||||
@Schema(description = "项目类别(PSTYP),委托加工订单时填入L", example = "L")
|
@Schema(description = "项目类别(PSTYP),委托加工订单时填入L", example = "L")
|
||||||
@ExcelProperty("项目类别")
|
@ExcelProperty("项目类别")
|
||||||
private String itemCat;
|
private String item_cat;
|
||||||
|
|
||||||
@Schema(description = "科目分配类别(KNTTP),固定资产采购:A;服务采购:S-销售服务费/K-成本中心/F-订单", example = "K")
|
@Schema(description = "科目分配类别(KNTTP),固定资产采购:A;服务采购:S-销售服务费/K-成本中心/F-订单", example = "K")
|
||||||
@ExcelProperty("科目分配类别")
|
@ExcelProperty("科目分配类别")
|
||||||
@@ -118,19 +135,19 @@ public class ErpOrderUpdateReqVO {
|
|||||||
|
|
||||||
@Schema(description = "物料组(MATKL),服务采购订单必填", example = "01")
|
@Schema(description = "物料组(MATKL),服务采购订单必填", example = "01")
|
||||||
@ExcelProperty("物料组")
|
@ExcelProperty("物料组")
|
||||||
private String matlGroup;
|
private String matl_group;
|
||||||
|
|
||||||
@Schema(description = "短文本(TXZ01),服务采购订单必填", example = "设备维修服务")
|
@Schema(description = "短文本(TXZ01),服务采购订单必填", example = "设备维修服务")
|
||||||
@ExcelProperty("短文本")
|
@ExcelProperty("短文本")
|
||||||
private String shortText;
|
private String short_text;
|
||||||
|
|
||||||
@Schema(description = "退货项目标识(RETPO),退货行项目填X", example = "X")
|
@Schema(description = "退货项目标识(RETPO),退货行项目填X", example = "X")
|
||||||
@ExcelProperty("退货标识")
|
@ExcelProperty("退货标识")
|
||||||
private String retItem;
|
private String ret_item;
|
||||||
|
|
||||||
@Schema(description = "免费项目标识(UMSON),免费行项目填X", example = "X")
|
@Schema(description = "免费项目标识(UMSON),免费行项目填X", example = "X")
|
||||||
@ExcelProperty("免费标识")
|
@ExcelProperty("免费标识")
|
||||||
private String freeItem;
|
private String free_item;
|
||||||
|
|
||||||
@Schema(description = "外部行项目号(LICHN),绿星链通必填", example = "EXT0010")
|
@Schema(description = "外部行项目号(LICHN),绿星链通必填", example = "EXT0010")
|
||||||
@ExcelProperty("外部行号")
|
@ExcelProperty("外部行号")
|
||||||
@@ -138,20 +155,26 @@ public class ErpOrderUpdateReqVO {
|
|||||||
|
|
||||||
@Schema(description = "备注信息-需求单位(TDLINE)", example = "生产一部")
|
@Schema(description = "备注信息-需求单位(TDLINE)", example = "生产一部")
|
||||||
@ExcelProperty("需求单位备注")
|
@ExcelProperty("需求单位备注")
|
||||||
private String noteXq;
|
private String note_xq;
|
||||||
|
|
||||||
@Schema(description = "备注信息-物料详细(TDLINE)", example = "304不锈钢,厚度2mm")
|
@Schema(description = "备注信息-物料详细(TDLINE)", example = "304不锈钢,厚度2mm")
|
||||||
@ExcelProperty("物料详细备注")
|
@ExcelProperty("物料详细备注")
|
||||||
private String noteWl;
|
private String note_wl;
|
||||||
|
|
||||||
@Schema(description = "行项目删除标识(ELOEK)", example = "N")
|
@Schema(description = "行项目删除标识(ELOEK)", example = "N")
|
||||||
@ExcelProperty("行项目删除标识")
|
@ExcelProperty("行项目删除标识")
|
||||||
private String itemDeleteInd;
|
private Integer delete_ind;
|
||||||
|
}
|
||||||
|
|
||||||
// ====================== 4. 行项目扩展字段(列表-itex) ======================
|
@Data
|
||||||
|
public static class itex {
|
||||||
|
@Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010")
|
||||||
|
@NotEmpty(message = "行号不能为空")
|
||||||
|
@ExcelProperty("行号")
|
||||||
|
private Long po_item;
|
||||||
@Schema(description = "销售物料号(zmatnr),科目分配类别为S时必填", example = "S0010001")
|
@Schema(description = "销售物料号(zmatnr),科目分配类别为S时必填", example = "S0010001")
|
||||||
@ExcelProperty("销售物料号")
|
@ExcelProperty("销售物料号")
|
||||||
private String zmatnr;
|
private BigDecimal zmatnr;
|
||||||
|
|
||||||
@Schema(description = "统计型内部订单(zaufnr)", example = "OR0010001")
|
@Schema(description = "统计型内部订单(zaufnr)", example = "OR0010001")
|
||||||
@ExcelProperty("统计内部订单")
|
@ExcelProperty("统计内部订单")
|
||||||
@@ -165,59 +188,70 @@ public class ErpOrderUpdateReqVO {
|
|||||||
@ExcelProperty("原料湿重")
|
@ExcelProperty("原料湿重")
|
||||||
private BigDecimal zmenge;
|
private BigDecimal zmenge;
|
||||||
|
|
||||||
// ====================== 5. 科目分配字段(列表-acct,类别为K或P时使用) ======================
|
}
|
||||||
@Schema(description = "科目分配的序号(DZEKKN),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
//
|
||||||
@NotNull(message = "科目分配序号不能为空")
|
// @Data
|
||||||
@ExcelProperty("科目分配序号")
|
// public static class acct {
|
||||||
private Integer serialNo;
|
// @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010")
|
||||||
|
// @NotEmpty(message = "行号不能为空")
|
||||||
|
// @ExcelProperty("行号")
|
||||||
|
// private String poItem;
|
||||||
|
// @Schema(description = "科目分配的序号(DZEKKN),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
|
// @NotNull(message = "科目分配序号不能为空")
|
||||||
|
// @ExcelProperty("科目分配序号")
|
||||||
|
// private Integer serialNo;
|
||||||
|
//
|
||||||
|
// @Schema(description = "总账科目编号(SAKNR)", example = "1001010000")
|
||||||
|
// @ExcelProperty("总账科目")
|
||||||
|
// private String glAccount;
|
||||||
|
//
|
||||||
|
// @Schema(description = "成本中心(KOSTL),科目分配类别为K或F时必填", example = "C0010001")
|
||||||
|
// @ExcelProperty("成本中心")
|
||||||
|
// private String costcenter;
|
||||||
|
//
|
||||||
|
// @Schema(description = "订单号(AUFNR),科目分配类别为F时必填", example = "OR0010001")
|
||||||
|
// @ExcelProperty("订单号")
|
||||||
|
// private String orderid;
|
||||||
|
//
|
||||||
|
// @Schema(description = "主资产号(ANLN1),科目分配类别为A时必填", example = "AS0010001")
|
||||||
|
// @ExcelProperty("主资产号")
|
||||||
|
// private String assetNo;
|
||||||
|
//
|
||||||
|
// @Schema(description = "资产子编号(ANLN2),科目分配类别为A时必填,固定值‘0’", example = "0")
|
||||||
|
// @ExcelProperty("资产子编号")
|
||||||
|
// private String subNumber;
|
||||||
|
// }
|
||||||
|
|
||||||
@Schema(description = "总账科目编号(SAKNR)", example = "1001010000")
|
@Data
|
||||||
@ExcelProperty("总账科目")
|
public static class comp {
|
||||||
private String glAccount;
|
|
||||||
|
|
||||||
@Schema(description = "成本中心(KOSTL),科目分配类别为K或F时必填", example = "C0010001")
|
|
||||||
@ExcelProperty("成本中心")
|
|
||||||
private String costcenter;
|
|
||||||
|
|
||||||
@Schema(description = "订单号(AUFNR),科目分配类别为F时必填", example = "OR0010001")
|
|
||||||
@ExcelProperty("订单号")
|
|
||||||
private String orderid;
|
|
||||||
|
|
||||||
@Schema(description = "主资产号(ANLN1),科目分配类别为A时必填", example = "AS0010001")
|
|
||||||
@ExcelProperty("主资产号")
|
|
||||||
private String assetNo;
|
|
||||||
|
|
||||||
@Schema(description = "资产子编号(ANLN2),科目分配类别为A时必填,固定值‘0’", example = "0")
|
|
||||||
@ExcelProperty("资产子编号")
|
|
||||||
private String subNumber;
|
|
||||||
|
|
||||||
// ====================== 6. 委托加工物料字段(列表-comp,委托加工订单时使用) ======================
|
|
||||||
@Schema(description = "计划行号(ETENR),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "计划行号(ETENR),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
@NotNull(message = "计划行号不能为空")
|
@NotNull(message = "计划行号不能为空")
|
||||||
@ExcelProperty("计划行号")
|
@ExcelProperty("计划行号")
|
||||||
private Integer schedLine;
|
private Integer sched_line;
|
||||||
|
|
||||||
@Schema(description = "项目编号(RSPOS),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
@Schema(description = "项目编号(RSPOS),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
|
||||||
@NotNull(message = "项目编号不能为空")
|
@NotNull(message = "项目编号不能为空")
|
||||||
@ExcelProperty("项目编号")
|
@ExcelProperty("项目编号")
|
||||||
private Integer itemNo;
|
private Integer item_no;
|
||||||
|
|
||||||
@Schema(description = "加工前物料号(MATNR)", requiredMode = Schema.RequiredMode.REQUIRED, example = "M0020001")
|
@Schema(description = "加工前物料号(MATNR)", requiredMode = Schema.RequiredMode.REQUIRED, example = "M0020001")
|
||||||
@NotEmpty(message = "加工前物料号不能为空")
|
@NotEmpty(message = "加工前物料号不能为空")
|
||||||
@ExcelProperty("加工前物料号")
|
@ExcelProperty("加工前物料号")
|
||||||
private String compMaterial;
|
private String comp_material;
|
||||||
|
|
||||||
@Schema(description = "委托加工发货工厂(PLANT)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001")
|
@Schema(description = "委托加工发货工厂(PLANT)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001")
|
||||||
@NotEmpty(message = "委托加工发货工厂不能为空")
|
@NotEmpty(message = "委托加工发货工厂不能为空")
|
||||||
@ExcelProperty("委托发货工厂")
|
@ExcelProperty("委托发货工厂")
|
||||||
private String compPlant;
|
private String comp_plant;
|
||||||
|
|
||||||
@Schema(description = "委托加工需求数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "95.000")
|
@Schema(description = "委托加工需求数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "95.000")
|
||||||
@NotNull(message = "委托加工需求数量不能为空")
|
@NotNull(message = "委托加工需求数量不能为空")
|
||||||
@ExcelProperty("委托需求数量")
|
@ExcelProperty("委托需求数量")
|
||||||
private BigDecimal entryQuantity;
|
private BigDecimal entry_quantity;
|
||||||
|
|
||||||
@Schema(description = "组件计量单位(MEINS),为空使用基本计量单位", example = "PC")
|
@Schema(description = "组件计量单位(MEINS),为空使用基本计量单位", example = "PC")
|
||||||
@ExcelProperty("组件计量单位")
|
@ExcelProperty("组件计量单位")
|
||||||
private String entryUom;
|
private String entry_uom;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,11 @@ package com.zt.plat.module.erp.service.erp;
|
|||||||
|
|
||||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBillMainSaveReqVO;
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBillMainSaveReqVO;
|
||||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO;
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO;
|
||||||
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO;
|
||||||
|
|
||||||
public interface ErpOrderService {
|
public interface ErpOrderService {
|
||||||
|
|
||||||
String submitOrderToErp(ErpOrderSaveReqVO createVo);
|
String submitOrderToErp061(ErpOrderSaveReqVO createVo);
|
||||||
|
|
||||||
|
String submitOrderToErp062(ErpOrderUpdateReqVO createVo);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.zt.plat.module.erp.api.ErpExternalApi;
|
|||||||
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
|
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
|
||||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBillMainSaveReqVO;
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBillMainSaveReqVO;
|
||||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO;
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO;
|
||||||
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -13,12 +14,14 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class ErpOrderServiceImpl implements ErpOrderService {
|
public class ErpOrderServiceImpl implements ErpOrderService {
|
||||||
@Resource
|
@Resource
|
||||||
public ErpExternalApi erpExternalApi;
|
public ErpExternalApi erpExternalApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String submitOrderToErp(ErpOrderSaveReqVO createVo) {
|
public String submitOrderToErp061(ErpOrderSaveReqVO createVo) {
|
||||||
|
|
||||||
ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061");
|
ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061");
|
||||||
|
|
||||||
@@ -61,6 +64,7 @@ public class ErpOrderServiceImpl implements ErpOrderService {
|
|||||||
HashMap<String, String> response = erpExternalApi.submitDataToErp(reqDTO);
|
HashMap<String, String> response = erpExternalApi.submitDataToErp(reqDTO);
|
||||||
return response.get("resStr");
|
return response.get("resStr");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getMaps(ErpOrderSaveReqVO vo, Map<String, Object> req) {
|
private void getMaps(ErpOrderSaveReqVO vo, Map<String, Object> req) {
|
||||||
List<Map<String, Object>> items = new ArrayList<>();
|
List<Map<String, Object>> items = new ArrayList<>();
|
||||||
Map<String, Object> item = new HashMap<>();
|
Map<String, Object> item = new HashMap<>();
|
||||||
@@ -87,9 +91,44 @@ public class ErpOrderServiceImpl implements ErpOrderService {
|
|||||||
item.put("note_wl", vo.getNoteWl());
|
item.put("note_wl", vo.getNoteWl());
|
||||||
item.put("vend_mat", vo.getVendMat());
|
item.put("vend_mat", vo.getVendMat());
|
||||||
items.add(item);
|
items.add(item);
|
||||||
if ("K".equals(vo.getAcctassCat())||"P".equals(vo.getAcctassCat())){
|
if ("K".equals(vo.getAcctassCat()) || "P".equals(vo.getAcctassCat())) {
|
||||||
req.put("acct", vo.getActsCtgrDtl());
|
req.put("acct", vo.getActsCtgrDtl());
|
||||||
}
|
}
|
||||||
req.put("item", items);
|
req.put("item", items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String submitOrderToErp062(ErpOrderUpdateReqVO updateVo) {
|
||||||
|
ErpSubmitReqDTO reqDTO = buildBaseReqDTO062(updateVo, "062");
|
||||||
|
Map<String, Object> req = new HashMap<>();
|
||||||
|
Map<String, Object> head = new HashMap<>();
|
||||||
|
Map<String, Object> exte= new HashMap<>();
|
||||||
|
head.put("po_number", updateVo.getPoNumber());
|
||||||
|
head.put("delete_ind", updateVo.getDeleteInd());
|
||||||
|
head.put("currency", updateVo.getCurrency());
|
||||||
|
head.put("exch_rate", updateVo.getExchRate());
|
||||||
|
req.put("head", head);
|
||||||
|
exte.put("zzhth", updateVo.getZzhth());
|
||||||
|
exte.put("zzxyh", updateVo.getZzhth());
|
||||||
|
exte.put("zznote", updateVo.getZnote());
|
||||||
|
exte.put("zzlifnr", updateVo.getZlifnr());
|
||||||
|
req.put("exte", exte);
|
||||||
|
req.put("itex", updateVo.getItexs());
|
||||||
|
req.put("item", updateVo.getItems());
|
||||||
|
req.put("acct", updateVo.getAccts());
|
||||||
|
req.put("comp", updateVo.getComps());
|
||||||
|
reqDTO.setReq(req);
|
||||||
|
|
||||||
|
|
||||||
|
return submitToErp(reqDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ErpSubmitReqDTO buildBaseReqDTO062(ErpOrderUpdateReqVO vo, String funcnr) {
|
||||||
|
ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO();
|
||||||
|
reqDTO.setFuncnr(funcnr);
|
||||||
|
reqDTO.setBskey(vo.getPoNumber());
|
||||||
|
reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId()));
|
||||||
|
reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname()));
|
||||||
|
return reqDTO;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user