src/main/java/com/zy/asrs/controller/OpenController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/MatSyncParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/OrderProdSyncParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/ReportErpParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/OrderSyncScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -288,9 +288,12 @@ return R.parse(BaseRes.PARAM); } openService.syncOrder(param,true,"采购入库单"); String docName = param.getChildren().get(0).getIQuantity() > 0 ? "银座采购入库单" : "银座采购退货单"; boolean pakin = param.getChildren().get(0).getIQuantity() > 0 ? true : false; return R.ok("入库单据接受成功"); openService.syncOrder(param,pakin,docName); return R.ok("单据接受成功"); } @@ -304,12 +307,22 @@ if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } if(!Cools.eq("生产",param.getCVouchtype())){ String docName = param.getIQuantity() > 0 ? "银座委外入库单" : "银座委外入库退货单"; boolean pakin = param.getIQuantity() > 0 ? true : false; mappingPakInOrderParam(param,pakin,docName); openService.syncOrder(mappingPakInOrderParam(param),true,"生产入库单"); openService.syncOrder(mappingPakOutOrderParam(param),false,"生产出库单"); String docName1 = param.getChildren().get(0).getIQuantity() > 0 ? "银座委外材料出库单" : "银座委外材料退料单"; boolean pakin1 = param.getChildren().get(0).getIQuantity() > 0 ? true : false; mappingPakOutOrderParam(param,pakin1,docName1); }else { String docName1 = param.getChildren().get(0).getIQuantity() > 0 ? "银座生产材料出库单" : "银座生产材料退料单"; boolean pakin1 = param.getChildren().get(0).getIQuantity() > 0 ? true : false; mappingPakOutOrderParam(param,pakin1,docName1); } return R.ok("出库单据接受成功"); return R.ok("单据接受成功"); } @@ -333,19 +346,20 @@ } private OrderSyncParam mappingPakInOrderParam(OrderProdSyncParam param){ private void mappingPakInOrderParam(OrderProdSyncParam param,boolean pakin,String docName){ //生成单据主体 OrderSyncParam orderSyncParam = new OrderSyncParam(); orderSyncParam.setCPOID(param.getOrderNoT()); orderSyncParam.set操作系统号(param.get操作系统号()); orderSyncParam.setcPOID(param.getOrderNoT()); orderSyncParam.setDdate(param.getOrderTime()); orderSyncParam.setCMemo(""); orderSyncParam.setcMemo(param.getCMemo()); //生成单据明细 OrderSyncParam.OrderDetl orderDetl = new OrderSyncParam.OrderDetl(); orderDetl.setCInvCode(param.getCInvCode()); orderDetl.setIQuantity(param.getIQuantity()); orderDetl.setcInvCode(param.getCInvCode()); orderDetl.setiQuantity(param.getIQuantity()); orderDetl.setCsocode(param.getCsocode()); orderDetl.setBFree1(null); orderDetl.setbFree1(param.getBFree1()); //添加单据明细到单据主体 List<OrderSyncParam.OrderDetl> orderDetls = new ArrayList<>(); @@ -353,34 +367,44 @@ orderSyncParam.setChildren(orderDetls); return orderSyncParam; // String docName = param.getIQuantity() > 0 ? "银座产品生产入库单" : "入库退回单"; // boolean pakin = param.getIQuantity() > 0 ? true : false; openService.syncOrder(orderSyncParam,pakin,docName); //return orderSyncParam; } private OrderSyncParam mappingPakOutOrderParam(OrderProdSyncParam param){ private void mappingPakOutOrderParam(OrderProdSyncParam param,boolean pakin,String docName){ OrderSyncParam orderSyncParam = new OrderSyncParam(); List<OrderProdSyncParam.ChildInfo> child = param.getChild(); List<OrderProdSyncParam.ChildInfo> child = param.getChildren(); //生成单据主体 orderSyncParam.setCPOID(child.get(0).getOrderNoT()); orderSyncParam.set操作系统号(param.get操作系统号()); orderSyncParam.setcPOID(child.get(0).getOrderNoT()); orderSyncParam.setDdate(param.getOrderTime()); orderSyncParam.setCMemo(""); orderSyncParam.setcMemo(""); //生成单据明细 List<OrderSyncParam.OrderDetl> orderDetls = new ArrayList<>(); for(OrderProdSyncParam.ChildInfo childInfo : child){ OrderSyncParam.OrderDetl orderDetl = new OrderSyncParam.OrderDetl(); orderDetl.setCInvCode(childInfo.getCInvCode()); orderDetl.setIQuantity(childInfo.getIQuantity()); orderDetl.setcInvCode(childInfo.getCInvCode()); orderDetl.setiQuantity(childInfo.getIQuantity()); orderDetl.setCsocode(param.getCsocode()); orderDetl.setBFree1(childInfo.getBFree1()); orderDetl.setbFree1(childInfo.getBFree1()); orderDetl.setID(childInfo.getIDs() + ""); orderDetl.setIvouchrowno(childInfo.getIvouchrowno()); orderDetls.add(orderDetl); } orderSyncParam.setChildren(orderDetls); return orderSyncParam; openService.syncOrder(orderSyncParam,false,docName); //return orderSyncParam; } } src/main/java/com/zy/asrs/entity/param/MatSyncParam.java
@@ -20,7 +20,7 @@ //规格型号 String cInvStd; //是否批次管理 Integer bInvBatch; String bInvBatch; //主计量单位编码/名称 String cComUnitCode; //采购单位编码/采购单位名称 @@ -36,4 +36,57 @@ //状态 Integer states; public void setcInvCode(String cInvCode) { this.cInvCode = cInvCode; } public void setcInvName(String cInvName) { this.cInvName = cInvName; } public void setiGroupType(String iGroupType) { this.iGroupType = iGroupType; } public void setcInvCCode(String cInvCCode) { this.cInvCCode = cInvCCode; } public void setcInvStd(String cInvStd) { this.cInvStd = cInvStd; } public void setbInvBatch(String bInvBatch) { this.bInvBatch = bInvBatch; } public void setcComUnitCode(String cComUnitCode) { this.cComUnitCode = cComUnitCode; } public void setcComUnitName(String cComUnitName) { this.cComUnitName = cComUnitName; } public void setPuCote(String puCote) { PuCote = puCote; } public void setProname(String proname) { this.proname = proname; } public void setProcode(String procode) { this.procode = procode; } public void setbFree1(String bFree1) { this.bFree1 = bFree1; } public void setStates(Integer states) { this.states = states == 0 ? 1 : 0; } } src/main/java/com/zy/asrs/entity/param/OrderProdSyncParam.java
@@ -6,6 +6,9 @@ @Data public class OrderProdSyncParam { private String 操作系统号; private String 操作单据; private String 操作类型; //工单号 private String orderNo; //工单号T @@ -21,9 +24,93 @@ //生产数量 private Double iQuantity; //状态 private Integer status; private Integer states; //规格(自由项1) private String bFree1; //产线 private String define24; //单据类型 private String cVouchtype; //备注 private String cMemo; //来源标识 private String sourceIndefine; //产品生产标识 private String prodIndefine; //子件信息 private List<ChildInfo> child; private List<ChildInfo> children; public void setOrderNo(String orderNo) { this.orderNo = orderNo; } public void setOrderNoT(String orderNoT) { this.orderNoT = orderNoT; } public void setOrderTime(String orderTime) { this.orderTime = orderTime; } public void setIvouchrowno(String ivouchrowno) { this.ivouchrowno = ivouchrowno; } public void setcInvCode(String cInvCode) { this.cInvCode = cInvCode; } public void setCsocode(String csocode) { this.csocode = csocode; } public void setiQuantity(Double iQuantity) { this.iQuantity = iQuantity; } public void setStates(Integer states) { this.states = states; } public void setbFree1(String bFree1) { this.bFree1 = bFree1; } public void setDefine24(String define24) { this.define24 = define24; } public void setcVouchtype(String cVouchtype) { this.cVouchtype = cVouchtype; } public void setChild(List<ChildInfo> children) { this.children = children; } public void set操作系统号(String 操作系统号) { this.操作系统号 = 操作系统号; } public void set操作单据(String 操作单据) { this.操作单据 = 操作单据; } public void set操作类型(String 操作类型) { this.操作类型 = 操作类型; } public void setcMemo(String cMemo) { this.cMemo = cMemo; } public void setSourceIndefine(String sourceIndefine) { this.sourceIndefine = sourceIndefine; } public void setProdIndefine(String prodIndefine) { this.prodIndefine = prodIndefine; } /** * 用于生成出库单据 @@ -36,14 +123,55 @@ private Integer IDs; //工单号T private String orderNoT; //工单号 private String orderNo; //物料编码 private String cInvCode; //数量 private Double iQuantity; //规格(自由项1) private String bFree1; //单据行号 private String ivouchrowno; //子件号 private String childNo; public void setID(Integer ID) { this.ID = ID; } public void setIDs(Integer IDs) { this.IDs = IDs; } public void setOrderNoT(String orderNoT) { this.orderNoT = orderNoT; } public void setcInvCode(String cInvCode) { this.cInvCode = cInvCode; } public void setiQuantity(Double iQuantity) { this.iQuantity = iQuantity; } public void setbFree1(String bFree1) { this.bFree1 = bFree1; } public void setOrderNo(String orderNo) { this.orderNo = orderNo; } public void setIvouchrowno(String ivouchrowno) { this.ivouchrowno = ivouchrowno; } public void setChildNo(String childNo) { this.childNo = childNo; } } } src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java
@@ -2,11 +2,13 @@ import lombok.Data; import java.util.Date; import java.util.List; @Data public class OrderSyncParam { private String 操作系统号; private String 操作单据; private String 操作类型; //采购订单编号 private String cPOID; //供应商编码 @@ -28,6 +30,58 @@ private List<OrderDetl> children; public void setcPOID(String cPOID) { this.cPOID = cPOID; } public void setcVenCode(String cVenCode) { this.cVenCode = cVenCode; } public void setcPersonCode(String cPersonCode) { this.cPersonCode = cPersonCode; } public void setcSCCode(String cSCCode) { this.cSCCode = cSCCode; } public void setCexch_name(String cexch_name) { this.cexch_name = cexch_name; } public void setNflat(Double nflat) { this.nflat = nflat; } public void setcMemo(String cMemo) { this.cMemo = cMemo; } public void setStates(Integer states) { this.states = states; } public void setDdate(String ddate) { this.ddate = ddate; } public void setChildren(List<OrderDetl> children) { this.children = children; } public void set操作系统号(String 操作系统号) { this.操作系统号 = 操作系统号; } public void set操作单据(String 操作单据) { this.操作单据 = 操作单据; } public void set操作类型(String 操作类型) { this.操作类型 = 操作类型; } @Data public static class OrderDetl{ //采购订单行号 @@ -35,7 +89,7 @@ //物料编码 private String cInvCode; //需求时间 private Date dArriveDate; private String dArriveDate; //需求数量 private Double iQuantity; //含税单价 @@ -61,6 +115,67 @@ //销售订单子表标识 private String iorderdid; public void setIvouchrowno(String ivouchrowno) { this.ivouchrowno = ivouchrowno; } public void setcInvCode(String cInvCode) { this.cInvCode = cInvCode; } public void setdArriveDate(String dArriveDate) { this.dArriveDate = dArriveDate; } public void setiQuantity(Double iQuantity) { this.iQuantity = iQuantity; } public void setiTaxPrice(Double iTaxPrice) { this.iTaxPrice = iTaxPrice; } public void setiPerTaxRate(Double iPerTaxRate) { this.iPerTaxRate = iPerTaxRate; } public void setCbMemo(String cbMemo) { this.cbMemo = cbMemo; } public void setiNum(Double iNum) { this.iNum = iNum; } public void setcSource(String cSource) { this.cSource = cSource; } public void setcDefine22(String cDefine22) { this.cDefine22 = cDefine22; } public void setRstates(String rstates) { Rstates = rstates; } public void setCsocode(String csocode) { this.csocode = csocode; } public void setbFree1(String bFree1) { this.bFree1 = bFree1; } public void setID(String ID) { this.ID = ID; } public void setIorderdid(String iorderdid) { this.iorderdid = iorderdid; } } src/main/java/com/zy/asrs/entity/param/ReportErpParam.java
New file @@ -0,0 +1,35 @@ package com.zy.asrs.entity.param; import lombok.Data; import java.util.List; @Data public class ReportErpParam { private String 操作系统号; private String 操作单据; private String 操作类型; private String ddate; private String cWhCode; private String cDepCode; private String cOrderCode; private String cMaker; private String cHandler; private String cDefine14; private List<ChildInfo> children; @Data public static class ChildInfo{ private String irowno; private String cInvCode; private String iQuantity; private String cBatch; private String iNum; private String iinvexchrate; private String bFree1; private String iPOsID; private String cOrderCode; private String ivouchrowno; private String Define22; } } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -609,7 +609,7 @@ } Tag tag = tagService.selectByName("全部", 1); Mat mat = matService.selectByMatnr(param.getCInvCCode()); Mat mat = matService.selectByMatnr(param.getCInvCode()); if (Cools.isEmpty(mat)) { mat = new Mat(); mat.setTagId(tag.getId()); @@ -636,11 +636,11 @@ private void syncMat(Mat mat, MatSyncParam param){ Date date = new Date(); mat.setMatnr(param.getCInvCCode());//物料编码 mat.setMatnr(param.getCInvCode());//物料编码 mat.setMaktx(param.getCInvName());//物料名称 mat.setSpecs(param.getCInvStd());//规格 mat.setUnit(param.getCComUnitName()); mat.setBeBatch(param.getBInvBatch()); mat.setBeBatch(Cools.eq("true",param.getBInvBatch()) ? 1 : 0); mat.setStatus(param.getStates()); mat.setCreateBy(9999L);//9999表示erp下发 @@ -858,9 +858,29 @@ throw new CoolException("单据参数为空或者单据详情为空,无法生成单据信息"); } Order orderOld = null; if(!Cools.isEmpty(orderService.selectByNo(param.getCPOID()))){ callApiLogSave(param, "/order/pakout/default/v1", "接受单据失败,该单据已存在,无法生成单据信息", false); throw new CoolException("该单据已存在,无法生成单据信息"); orderOld = orderService.selectByNo(param.getCPOID()); if(orderOld.getSettle() > 1){ throw new CoolException("该单据已在作业中,无法更改单据信息"); } // String orderNo = param.getCPOID(); // if (orderNo.contains("-")){ // int index = Integer.parseInt(orderNo.split("-")[1]) + 1; // orderNo = orderNo.split("-")[0] + "-" + index; // param.setcPOID(orderNo); // }else { // orderNo = orderNo + "-1"; // param.setcPOID(orderNo); // } // // syncOrder(param,pakin,docName); //callApiLogSave(param, "/order/pakout/default/v1", "接受单据失败,该单据已存在,无法生成单据信息", false); //throw new CoolException("该单据已存在,无法生成单据信息"); } Date now = new Date(); Order order = orderMapping(param,now,pakin,docName); @@ -869,6 +889,12 @@ OrderDetl orderDetl = orderDetlMapping(order,od,now); orderDetlService.insert(orderDetl); }); if(!Cools.isEmpty(orderOld)){ //删除原有单据信息 orderService.delete(new EntityWrapper<Order>().eq("id",orderOld.getId())); orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id",orderOld.getId())); } callApiLogSave(param, "/order/pakout/default/v1", "接受单据成功", true); @@ -887,7 +913,7 @@ } orderService.deleteById(order); orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_no",orderNo)); orderDetlService.delete(new EntityWrapper<OrderDetl>().eq("order_id",order.getId())); return true; } @@ -907,6 +933,8 @@ order.setMemo(param.getCMemo()); //制单人 order.setShipCode(param.getCPersonCode()); order.setDefNumber(param.get操作系统号()); order.setCreateTime(now); order.setUpdateTime(now); @@ -943,12 +971,14 @@ //数量 od.setAnfme(odParam.getIQuantity()); //销售订单号 od.setThreeCode(odParam.getCsocode()); od.setThreeCode(odParam.getCDefine22()); //自由项 od.setDeadTime(odParam.getBFree1()); //IDs od.setSku(odParam.getID()); od.setLength(odParam.getINum()); od.setStatus(1); od.setQty(0.0D); od.setCreateBy(9999L); src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -39,7 +39,7 @@ } } //@Scheduled(cron = "0/5 * * * * ? ") @Scheduled(cron = "0/5 * * * * ? ") @Async("orderThreadPool") public void completeAndReport(){ String erpReport = Parameter.get().getErpReport(); src/main/java/com/zy/asrs/task/handler/OrderSyncHandler.java
@@ -7,6 +7,7 @@ import com.zy.asrs.entity.DocType; import com.zy.asrs.entity.Order; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.param.ReportErpParam; import com.zy.asrs.service.ApiLogService; import com.zy.asrs.service.DocTypeService; import com.zy.asrs.service.OrderDetlService; @@ -17,12 +18,12 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.*; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Created by vincent on 2020/7/7 @@ -31,8 +32,6 @@ @Service public class OrderSyncHandler extends AbstractHandler<String> { @Autowired private JdbcTemplate jdbcTemplate; @Autowired private OrderService orderService; @Autowired @@ -51,34 +50,28 @@ @Transactional public ReturnT<String> start(Order order) { List<String> docNames = new ArrayList<>(Arrays.asList("银座采购入库单","银座委外材料出库单","银座委外入库单","银座生产材料出库单")); DocType docType = docTypeService.selectById(order.getDocType()); if("手动出库单".equals(docType.getDocName()) || "手动入库单".equals(docType.getDocName()) || "自动补货单".equals(docType.getDocName()) || "人工补货单".equals(docType.getDocName())){ if(!docNames.contains(docType.getDocName())){ order.setSettle(8L); orderService.updateById(order); return SUCCESS; } // if("手动出库单".equals(docType.getDocName()) // || "手动入库单".equals(docType.getDocName()) // || "自动补货单".equals(docType.getDocName()) // || "人工补货单".equals(docType.getDocName())){ // order.setSettle(8L); // orderService.updateById(order); // return SUCCESS; // } List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Map<String, Object> param = new HashMap<>(); param.put("id",order.getOrderNo()); param.put("dDate",sdf.format(new Date())); param.put("cHandler","WMS系统"); List<Map<String,Object>> orderDetlsParam = new ArrayList<>(); param.put("orderDetails",orderDetlsParam); List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); for (OrderDetl orderDetl : orderDetls){ Map<String, Object> odMap = new HashMap<>(); odMap.put("autoid",orderDetl.getItemNum()); odMap.put("iQuantity",orderDetl.getQty()); orderDetlsParam.add(odMap); } ReportErpParam param = new ReportErpParam(); mappingParam(order,param); mappingParamChildren(orderDetlList,param); int code = doHttpRequest(param, "单据审核", url, orderReportPath, null, "127.0.0.1"); if(code == 0){ @@ -89,6 +82,41 @@ return SUCCESS; } private void mappingParam(Order order, ReportErpParam param){ param.set操作系统号(order.getDefNumber()); param.set操作单据(order.getDocType$()); param.set操作类型("add"); param.setDdate(order.getOrderTime()); param.setCWhCode(""); param.setCDepCode("YZ"); param.setCOrderCode(order.getOrderNo()); param.setCMaker(""); param.setCHandler(""); param.setCDefine14(order.getOrderNo()); } private void mappingParamChildren(List<OrderDetl> orderDetlList, ReportErpParam param){ List<ReportErpParam.ChildInfo> paramChild = new ArrayList<>(); param.setChildren(paramChild); for (OrderDetl orderDetl : orderDetlList){ ReportErpParam.ChildInfo childInfo = new ReportErpParam.ChildInfo(); childInfo.setIrowno(orderDetl.getItemNum()); childInfo.setCInvCode(orderDetl.getMatnr()); childInfo.setIQuantity(orderDetl.getQty() + ""); childInfo.setCBatch(orderDetl.getBatch()); childInfo.setINum(orderDetl.getLength() + ""); childInfo.setIinvexchrate(""); childInfo.setBFree1(orderDetl.getDeadTime()); childInfo.setIPOsID(orderDetl.getId() + ""); childInfo.setCOrderCode(orderDetl.getOrderNo()); childInfo.setIvouchrowno(orderDetl.getItemNum()); childInfo.setDefine22(orderDetl.getThreeCode()); paramChild.add(childInfo); } } private int doHttpRequest(Object requestParam, String namespace, String url, String path, String appkey, String ip){ String response = ""; boolean success = false;