订单管理相关
This commit is contained in:
@@ -182,4 +182,12 @@ public class PurchaseOrderController implements BusinessControllerMarker {
|
||||
return success(purchaseOrderService.linkOrder(req));
|
||||
}
|
||||
|
||||
@PostMapping("/order-pass-reject")
|
||||
@Operation(summary = "订单审核")
|
||||
public CommonResult<Boolean> orderPassReject(@RequestBody PurchaseorderReqVO reqVO){
|
||||
return success(purchaseOrderService.orderPassReject(reqVO));
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -84,7 +84,7 @@ public class PrchOrdDtlDO extends BusinessBaseDO {
|
||||
* 暂估数量;推送ERP(必须)
|
||||
*/
|
||||
@TableField("QTY")
|
||||
private String qty;
|
||||
private BigDecimal qty;
|
||||
/**
|
||||
* 计量单位;推送ERP(必须)
|
||||
*/
|
||||
|
||||
@@ -110,4 +110,11 @@ public interface PurchaseOrderService {
|
||||
*
|
||||
*/
|
||||
boolean linkOrder(LinkOrderReqVO reqVO);
|
||||
/**
|
||||
* 订单审核通过和不通过
|
||||
*
|
||||
* @param purchaseorderReqVO 采购审核
|
||||
*
|
||||
*/
|
||||
boolean orderPassReject(PurchaseorderReqVO purchaseorderReqVO);
|
||||
}
|
||||
|
||||
@@ -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<PrchOrdDtlRespVO> prchOrdDtlRespVOS = prchOrdDtlService.batchCreatePrchOrdDtl(createReqVO.getPrchOrdDtlSaveReqVOS());
|
||||
@@ -113,12 +115,12 @@ 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());
|
||||
// updateReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(updateReqVO.getId()));
|
||||
// prchOrdDtlService.batchCreatePrchOrdDtl(updateReqVO.getPrchOrdDtlSaveReqVOS());
|
||||
log.info("更新订单明细成功");
|
||||
}
|
||||
|
||||
@@ -140,6 +142,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
prchOrdDtlService.deletePrchOrdDtlListByOrdIds(ids);
|
||||
|
||||
}
|
||||
|
||||
private void validatePurchaseOrderNosExists(List<String> orderNos) {
|
||||
List<PurchaseOrderDO> list = purchaseOrderMapper.selectList(new LambdaQueryWrapper<PurchaseOrderDO>().in(PurchaseOrderDO::getSystemOrderNumber, orderNos));
|
||||
if (CollUtil.isEmpty(list) || list.size() != orderNos.size()) {
|
||||
@@ -244,46 +247,122 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
|
||||
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<JSONObject> actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream()
|
||||
.map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject)
|
||||
.toList();
|
||||
JSONArray jsonArray = JSONArray.from(actsCtgrDtlList);
|
||||
erpOrderSaveReqVO.setAccts(jsonArray);
|
||||
// 3. 处理行项目信息(Item)
|
||||
List<PrchOrdDtlDO> details = purchaseOrderWithDetailsVO.getOrderDetails();
|
||||
if (details != null && !details.isEmpty()) {
|
||||
List<ErpOrderSaveReqVO.Item> 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")));
|
||||
}
|
||||
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());
|
||||
});
|
||||
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<ErpOrderSaveReqVO.Comp> 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);
|
||||
}
|
||||
|
||||
// 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 "订单不存在";
|
||||
@@ -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<BpmTaskRespDTO> 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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
|
||||
@@ -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 orderNo;
|
||||
|
||||
@Valid
|
||||
@NotNull(message = "采购订单抬头信息不能为空")
|
||||
private Head head;
|
||||
|
||||
@Valid
|
||||
@NotNull(message = "采购订单抬头扩展信息不能为空")
|
||||
private Exte exte;
|
||||
|
||||
@Valid
|
||||
@NotEmpty(message = "采购订单行项目列表不能为空")
|
||||
private List<Item> items;
|
||||
|
||||
private JSONArray accts; // 科目分配信息(科目分配类别为K或P时使用)
|
||||
@Valid
|
||||
private List<Comp> comps; // 委托加工物料信息(委托加工订单时使用)
|
||||
|
||||
@Schema(description = "采购订单抬头信息")
|
||||
@Data
|
||||
public static class Head {
|
||||
@Schema(description = "公司代码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "公司代码不能为空")
|
||||
private String comp_code; // BUKRS CHAR4
|
||||
|
||||
@Schema(description = "供应商帐号", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "供应商帐号不能为空")
|
||||
private String vendor; // LIFNR CHAR10
|
||||
|
||||
@Schema(description = "采购凭证类型")
|
||||
@Schema(description = "采购凭证类型", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "采购凭证类型不能为空")
|
||||
private String docType; // BSART CHAR4
|
||||
private String doc_type; // BSART CHAR4
|
||||
|
||||
@Schema(description = "采购凭证日期")
|
||||
@NotEmpty(message = "采购凭证日期不能为空")
|
||||
private LocalDateTime docDate; // BEDAT DATS8(格式:YYYYMMDD)
|
||||
@Schema(description = "采购凭证日期(YYYY-MM-DD)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "采购凭证日期不能为空")
|
||||
private LocalDate doc_date; // BEDAT DATS8
|
||||
|
||||
@Schema(description = "采购组织")
|
||||
@Schema(description = "采购组织", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "采购组织不能为空")
|
||||
private String purchOrg; // EKORG CHAR4
|
||||
private String purch_org; // EKORG CHAR4
|
||||
|
||||
@Schema(description = "采购组")
|
||||
@Schema(description = "采购组", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "采购组不能为空")
|
||||
private String purGroup; // EKGRP CHAR3
|
||||
private String pur_group; // EKGRP CHAR3
|
||||
|
||||
@Schema(description = "货币码")
|
||||
@Schema(description = "货币码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "货币码不能为空")
|
||||
private String currency; // WAERS CUKY5
|
||||
|
||||
@Schema(description = "汇率")
|
||||
private BigDecimal exchRate; // WKURS DEC9,5
|
||||
@NotEmpty(message = "纸质合同号不能为空(已启用财务共享单位)")
|
||||
@Schema(description = "汇率(保留5位小数)")
|
||||
private BigDecimal exch_rate; // WKURS DEC9,5
|
||||
}
|
||||
|
||||
@Schema(description = "采购订单抬头扩展信息")
|
||||
@Data
|
||||
public static class Exte {
|
||||
@Schema(description = "纸质合同号(已启用财务共享单位必填)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "纸质合同号不能为空")
|
||||
private String zzhth; // CHAR60
|
||||
|
||||
|
||||
@Schema(description = "小协议号(绿星链通填入合同名称)")
|
||||
@Schema(description = "小协议号(绿星链通填入合同名称)")
|
||||
private String zxxyh; // CHAR60
|
||||
|
||||
@Schema(description = "备注(绿星链通填入系统采购订单头号)")
|
||||
@Schema(description = "备注(绿星链通填入系统采购订单头号)")
|
||||
private String znote; // CHAR60
|
||||
|
||||
@Schema(description = "代理方(使用客商编码)")
|
||||
@Schema(description = "代理方(使用客商编码)")
|
||||
private String zlifnr; // CHAR60
|
||||
}
|
||||
|
||||
|
||||
@Schema(description = "行号")
|
||||
@NotEmpty(message = "行号不能为空")
|
||||
private Long poItem; // EBELP NUMC5
|
||||
@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 material; // MATNR CHAR18
|
||||
|
||||
@Schema(description = "工厂")
|
||||
@Schema(description = "工厂", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "工厂不能为空")
|
||||
private String plant; // WERKS CHAR4
|
||||
|
||||
@Schema(description = "库存地点")
|
||||
private String stgeLoc; // LGORT CHAR4
|
||||
private String stge_loc; // LGORT CHAR4
|
||||
|
||||
@Schema(description = "数量")
|
||||
@NotEmpty(message = "数量不能为空")
|
||||
private String quantity; // MENGE QUAN13,3
|
||||
@Schema(description = "数量(保留3位小数)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "数量不能为空")
|
||||
private BigDecimal quantity; // MENGE QUAN13,3
|
||||
|
||||
@Schema(description = "计量单位")
|
||||
@NotNull(message = "计量单位不能为空")
|
||||
private String poUnit; // MEINS UNIT3
|
||||
@Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "计量单位不能为空")
|
||||
private String po_unit; // MEINS UNIT3
|
||||
|
||||
@Schema(description = "含税单价")
|
||||
@Schema(description = "含税单价(保留2位小数)", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "含税单价不能为空")
|
||||
private BigDecimal netPrice; // NETPR CURR11,2
|
||||
private BigDecimal net_price; // NETPR CURR11,2
|
||||
|
||||
@Schema(description = "价格单位(默认值1,表示以上单价对应的采购单位数量)")
|
||||
private Integer priceUnit; // PEINH DEC5
|
||||
@Schema(description = "价格单位(默认值1)")
|
||||
private Integer price_unit = 1; // PEINH DEC5
|
||||
|
||||
@Schema(description = "税码")
|
||||
private String taxCode; // MWSKZ CHAR2
|
||||
private String tax_code; // MWSKZ CHAR2
|
||||
|
||||
@Schema(description = "基于GR的发票校验")
|
||||
private String grBasedIv; // WEBRE CHAR1
|
||||
@Schema(description = "基于GR的发票校验(Y/N)")
|
||||
private String gr_basediv; // WEBRE CHAR1(原字段名gr_basediv保持与源数据一致)
|
||||
|
||||
@Schema(description = "允许无限制过量交货")
|
||||
private String unlimitedDlv; // UEBTK CHAR1
|
||||
@Schema(description = "允许无限制过量交货(Y/N)")
|
||||
private String unlimited_dlv; // UEBTK CHAR1
|
||||
|
||||
@Schema(description = "批次")
|
||||
private String batch; // CHARG CHAR10
|
||||
|
||||
@Schema(description = "项目类别(委托加工订单时填入L)")
|
||||
private String itemCat; // PSTYP CHAR1(原表CAHR为笔误,按CHAR处理)
|
||||
@Schema(description = "项目类别(委托加工填L)")
|
||||
private String item_cat; // PSTYP CHAR1
|
||||
|
||||
@Schema(description = "科目分配类别(固定资产采购:A;服务采购:S-销售服务费、K-成本中心、F-订单)")
|
||||
private String acctassCat; // KNTTP CHAR1
|
||||
@Schema(description = "科目分配类别(A-固定资产/S-服务/K-成本中心/F-订单)")
|
||||
private String acctasscat; // KNTTP CHAR1
|
||||
|
||||
@Schema(description = "物料组(服务采购订单必填)")
|
||||
private String matlGroup; // MATKL CHAR9
|
||||
@Schema(description = "物料组(服务采购必填)")
|
||||
private String matl_group; // MATKL CHAR9
|
||||
|
||||
@Schema(description = "短文本(服务采购订单必填,绿星链通系统必须填入)")
|
||||
private String shortText; // TXZ01 CHAR40
|
||||
@Schema(description = "短文本(服务采购必填)")
|
||||
private String short_text; // TXZ01 CHAR40
|
||||
|
||||
@Schema(description = "退货项目标识(退货行项目填X)")
|
||||
private String retItem; // RETPO CHAR1
|
||||
@Schema(description = "退货项目标识(X-是)")
|
||||
private String ret_item; // RETPO CHAR1
|
||||
|
||||
@Schema(description = "免费项目标识(免费行项目填X)")
|
||||
private String freeItem; // UMSON CHAR1
|
||||
@Schema(description = "免费项目标识(X-是)")
|
||||
private String free_item; // UMSON CHAR1
|
||||
|
||||
@Schema(description = "外部行项目号(绿星链通必填)")
|
||||
private String vendrBatch; // LICHN CHAR15
|
||||
@Schema(description = "外部行项目号(绿星链通必填)")
|
||||
private String vendrbatch; // LICHN CHAR15
|
||||
|
||||
@Schema(description = "备注信息-需求单位")
|
||||
private String noteXq; // TDLINE CHAR132
|
||||
private String note_xq; // TDLINE CHAR132
|
||||
|
||||
@Schema(description = "备注信息-物料详细")
|
||||
private String noteWl; // TDLINE CHAR132
|
||||
private String note_wl; // TDLINE CHAR132
|
||||
|
||||
@Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)")
|
||||
private String vendMat; // IDNLF CHAR22(原表说明为交货起止日期,按说明定义)
|
||||
@Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)")
|
||||
private String vend_mat; // IDNLF CHAR22
|
||||
|
||||
@Schema(description = "销售物料号(科目分配类别为S时必填)")
|
||||
@Valid
|
||||
private Itex itex; // 行项目扩展信息
|
||||
|
||||
}
|
||||
|
||||
@Schema(description = "行项目扩展信息")
|
||||
@Data
|
||||
public static class Itex {
|
||||
@Schema(description = "销售物料号(科目分配类别为S时必填)")
|
||||
private String zmatnr;
|
||||
|
||||
@Schema(description = "统计型内部订单")
|
||||
private String zaufnr;
|
||||
|
||||
@Schema(description = "采购类别(0-生产性物资类;1-项目投资类)")
|
||||
@Schema(description = "采购类别(0-生产性物资类/1-项目投资类)")
|
||||
private String zpurty;
|
||||
|
||||
@Schema(description = "原料湿重")
|
||||
private BigDecimal zmenge;
|
||||
|
||||
|
||||
@Schema(description = "科目分配的序号(从1开始编号)")
|
||||
@NotEmpty(message = "科目分配的序号不能为空")
|
||||
private String serialNo; // DZEKKN NUMC2
|
||||
|
||||
@Schema(description = "总账科目编号")
|
||||
private String glAccount; // SAKNR CHAR10
|
||||
|
||||
@Schema(description = "成本中心(科目分配类别为F时必填)")
|
||||
private String costcenter; // KOSTL CHAR10
|
||||
|
||||
@Schema(description = "订单号(科目分配类别为F时必填)")
|
||||
private String orderid; // AUFNR CHAR12
|
||||
|
||||
@Schema(description = "主资产号(科目分配类别为A时必填)")
|
||||
private String assetNo; // ANLN1 CHAR12
|
||||
|
||||
@Schema(description = "资产子编号(科目分配类别为A时必填,固定值‘0’)")
|
||||
private String subNumber; // ANLN2 CHAR4
|
||||
|
||||
|
||||
@Schema(description = "计划行号(从1开始编号)")
|
||||
private String schedLine; // ETENR NUMC4
|
||||
|
||||
@Schema(description = "项目编号(从1开始编号)")
|
||||
private String itemNo; // RSPOS NUMC4
|
||||
|
||||
@Schema(description = "委托加工需求数量")
|
||||
@NotNull(message = "委托加工需求数量不能为空")
|
||||
private BigDecimal entryQuantity; // MENGE QUAN13,3
|
||||
|
||||
@Schema(description = "组件计量单位(为空时使用基本计量单位)")
|
||||
private String entryUom; // MEINS UNIT3
|
||||
|
||||
@Schema(description = " 科目分配详情")
|
||||
private String actsCtgrDtl;
|
||||
|
||||
}
|
||||
|
||||
// @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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,25 +26,12 @@ public class ErpOrderServiceImpl implements ErpOrderService {
|
||||
ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061");
|
||||
|
||||
Map<String, Object> req = new HashMap<>();
|
||||
Map<String, Object> 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<String, Object> 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<String, Object> req) {
|
||||
List<Map<String, Object>> items = new ArrayList<>();
|
||||
Map<String, Object> 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<Map<String, Object>> items = new ArrayList<>();
|
||||
// Map<String, Object> 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
|
||||
|
||||
Reference in New Issue
Block a user