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/service/OpenService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/system/controller/LicenseCreatorController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/system/entity/license/CustomLicenseManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/OpenController.java
@@ -156,27 +156,9 @@ if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } MatSyncParam matSyncParam = openService.syncMat(param); if (Cools.isEmpty(matSyncParam.getMats()) || matSyncParam.getMats().size() <=0 ) { return R.error("数据异常"); } StringBuilder Msg= new StringBuilder("原因:"); int MsgT=0,MsgF=0; for (MatSyncParam.Mats matParam:matSyncParam.getMats()){ if (matParam.isType()){ MsgT++; }else { MsgF++; Msg.append(matParam.getMatnr()).append(":").append(matParam.getMemo()).append(";"); } } if (MsgF==0){ return R.ok("成功接收物料:"+MsgT+"个"); }else if (MsgT==0){ return R.ok("接收物料失败:"+MsgF+"个;"+Msg); }else { return R.ok("成功接收物料:"+MsgT+"个;"+"接收物料失败:"+MsgF+"个;"+Msg); } openService.syncMat(param); return R.ok("更新成功"); } @@ -299,23 +281,23 @@ @PostMapping("/order/pakin/default/v1") @AppAuth(memo = "生成入库单据") public synchronized R orderPakin(@RequestHeader(required = false) String appkey, @RequestBody(required = false) Map<String, Object> param, @RequestBody(required = true) OrderSyncParam param, HttpServletRequest request){ auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); } openService.syncOrder(param,true); openService.syncOrder(param,true,"采购入库单"); return R.ok("入库单据接受成功"); } @PostMapping("/order/pakout/default/v1") @AppAuth(memo = "生成出库单据") @AppAuth(memo = "同步工单单据") public synchronized R orderPakout(@RequestHeader(required = false) String appkey, @RequestBody(required = false) Map<String, Object> param, @RequestBody(required = false) OrderProdSyncParam param, HttpServletRequest request){ auth(appkey, param, request); @@ -323,7 +305,9 @@ return R.parse(BaseRes.PARAM); } openService.syncOrder(param,false); openService.syncOrder(mappingPakInOrderParam(param),true,"生产入库单"); openService.syncOrder(mappingPakOutOrderParam(param),false,"生产出库单"); return R.ok("出库单据接受成功"); @@ -349,4 +333,54 @@ } private OrderSyncParam mappingPakInOrderParam(OrderProdSyncParam param){ //生成单据主体 OrderSyncParam orderSyncParam = new OrderSyncParam(); orderSyncParam.setCPOID(param.getOrderNoT()); orderSyncParam.setDdate(param.getOrderTime()); orderSyncParam.setCMemo(""); //生成单据明细 OrderSyncParam.OrderDetl orderDetl = new OrderSyncParam.OrderDetl(); orderDetl.setCInvCode(param.getCInvCode()); orderDetl.setIQuantity(param.getIQuantity()); orderDetl.setCsocode(param.getCsocode()); orderDetl.setBFree1(null); //添加单据明细到单据主体 List<OrderSyncParam.OrderDetl> orderDetls = new ArrayList<>(); orderDetls.add(orderDetl); orderSyncParam.setChildren(orderDetls); return orderSyncParam; } private OrderSyncParam mappingPakOutOrderParam(OrderProdSyncParam param){ OrderSyncParam orderSyncParam = new OrderSyncParam(); List<OrderProdSyncParam.ChildInfo> child = param.getChild(); //生成单据主体 orderSyncParam.setCPOID(child.get(0).getOrderNoT()); orderSyncParam.setDdate(param.getOrderTime()); 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.setCsocode(param.getCsocode()); orderDetl.setBFree1(childInfo.getBFree1()); orderDetl.setID(childInfo.getIDs() + ""); orderDetls.add(orderDetl); } orderSyncParam.setChildren(orderDetls); return orderSyncParam; } } src/main/java/com/zy/asrs/entity/param/MatSyncParam.java
@@ -2,8 +2,6 @@ import lombok.Data; import java.util.List; /** * 商品同步接口,参数 * Created on 2022/6/22 @@ -11,54 +9,31 @@ @Data public class MatSyncParam { public List<Mats> mats; @Data public static class Mats{ /** * 接收成功:true * 接收失败:false */ private boolean type=true; /** * 商品编号 */ private String matnr; /** * 商品名称 */ private String maktx; /** * 规格 */ private String specs; /** * 型号 */ private String model; /** * 颜色 */ private String color; /** * 单位 */ private String unit; /** * 单位量 */ private Double units; /** * 备注 */ private String memo; } //存货编码 String cInvCode; //存货名称 String cInvName; //单位组类型编码/名称 String iGroupType; //存货大类编码 String cInvCCode; //规格型号 String cInvStd; //是否批次管理 Integer bInvBatch; //主计量单位编码/名称 String cComUnitCode; //采购单位编码/采购单位名称 String cComUnitName; //采购单位编码 String PuCote; //生产计量单位名称 String proname; //生产计量单位编码 String procode; //自由项1(规格) String bFree1; //状态 Integer states; } src/main/java/com/zy/asrs/entity/param/OrderProdSyncParam.java
New file @@ -0,0 +1,49 @@ package com.zy.asrs.entity.param; import lombok.Data; import java.util.List; @Data public class OrderProdSyncParam { //工单号 private String orderNo; //工单号T private String orderNoT; //开单日期 private String orderTime; //单据行号 private String ivouchrowno; //产品编码 private String cInvCode; //生产订单号 private String csocode; //生产数量 private Double iQuantity; //状态 private Integer status; //子件信息 private List<ChildInfo> child; /** * 用于生成出库单据 */ @Data public static class ChildInfo{ //ID private Integer ID; //IDs private Integer IDs; //工单号T private String orderNoT; //物料编码 private String cInvCode; //数量 private Double iQuantity; //规格(自由项1) private String bFree1; } } src/main/java/com/zy/asrs/entity/param/OrderSyncParam.java
New file @@ -0,0 +1,67 @@ package com.zy.asrs.entity.param; import lombok.Data; import java.util.Date; import java.util.List; @Data public class OrderSyncParam { //采购订单编号 private String cPOID; //供应商编码 private String cVenCode; //订单所有人 private String cPersonCode; //交货方式 private String cSCCode; //币种 private String cexch_name; //汇率 private Double nflat; //订单备注 private String cMemo; //状态 private Integer states; //单据日期 private String ddate; private List<OrderDetl> children; @Data public static class OrderDetl{ //采购订单行号 private String ivouchrowno; //物料编码 private String cInvCode; //需求时间 private Date dArriveDate; //需求数量 private Double iQuantity; //含税单价 private Double iTaxPrice; //税率 private Double iPerTaxRate; //行备注 private String cbMemo; //件数 private Double iNum; //单据来源 private String cSource; //生产订单号(销售订单号) private String cDefine22; //行状态 private String Rstates; //销售订单号 (参照销售订单生成) private String csocode; //规格(自由项1) private String bFree1; //采购订单子表标识 private String ID; //销售订单子表标识 private String iorderdid; } } src/main/java/com/zy/asrs/service/OpenService.java
@@ -1,12 +1,12 @@ package com.zy.asrs.service; import com.zy.asrs.entity.Mat; import com.zy.asrs.entity.ViewWorkInBean; import com.zy.asrs.entity.param.*; import com.zy.asrs.entity.result.OpenOrderCompeteResult; import com.zy.asrs.entity.result.StockVo; import java.util.List; import java.util.Map; public interface OpenService { @@ -44,7 +44,7 @@ * 同步商品信息 * @param param */ MatSyncParam syncMat(MatSyncParam param); Mat syncMat(MatSyncParam param); /** * 入库通知档生成 @@ -71,7 +71,7 @@ * 生成出入库单据 * @param param */ boolean syncOrder(Map<String, Object> param, boolean pakin); boolean syncOrder(OrderSyncParam param, boolean pakin, String docName); /** * 生成出入库单据 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -25,7 +25,6 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; /** * Created by vincent on 2022/4/9 @@ -448,51 +447,57 @@ } @Override @Transactional public MatSyncParam syncMat(MatSyncParam param) { if (Cools.isEmpty(param.getMats()) || param.getMats().size() <=0 ) { public Mat syncMat(MatSyncParam param) { if (Cools.isEmpty(param.getCInvCode()) ) { throw new CoolException("商品数据为空"); } MatSyncParam matSyncParam = new MatSyncParam(); ArrayList<MatSyncParam.Mats> matParams = new ArrayList<>(); Tag tag = tagService.selectByName("全部", 1); for (MatSyncParam.Mats matParam : param.getMats()){ Date date = new Date(); Mat mat = matService.selectByMatnr(matParam.getMatnr()); if (Cools.isEmpty(mat)) { Mat matNew = new Mat(); matNew.setTagId(tag.getId()); matNew.setMatnr(matParam.getMatnr());//物料编码 matNew.setMaktx(matParam.getMaktx());//物料名称 matNew.setSpecs(matParam.getSpecs());//规格 matNew.setModel(matParam.getModel());//型号 matNew.setColor(matParam.getColor());//颜色 matNew.setUnit(matParam.getUnit());//单位 matNew.setMemo(matParam.getMemo());//备注 matNew.setCreateBy(9999L);//9999表示erp下发 matNew.setCreateTime(date); matNew.setUpdateBy(9999L);//9999表示erp下发 matNew.setUpdateTime(date); if (matService.insert(matNew)) { callApiLogSave(matParam, "/open/asrs/mat/v1", "接收ERP下发商品信息成功!添加商品信息成功!", true); matParam.setType(true); } else { callApiLogSave(matParam, "/open/asrs/mat/v1", "添加ERP下发商品信息失败!!!状态异常!!!", false); matParam.setType(false); matParam.setMemo("添加ERP下发商品信息失败!"); } Mat mat = matService.selectByMatnr(param.getCInvCCode()); if (Cools.isEmpty(mat)) { mat = new Mat(); mat.setTagId(tag.getId()); syncMat(mat,param); if (matService.insert(mat)) { callApiLogSave(mat, "/open/asrs/mat/v1", "接收ERP下发商品信息成功!添加商品信息成功!", true); } else { callApiLogSave(matParam, "/open/asrs/mat/v1", "接收ERP下发商品信息失败!!!商品已存在!!!", false); matParam.setType(false); matParam.setMemo("商品已存在!"); callApiLogSave(mat, "/open/asrs/mat/v1", "添加ERP下发商品信息失败!!!状态异常!!!", false); mat.setMemo("添加ERP下发商品信息失败!"); } matParams.add(matParam); } else { mat.setTagId(tag.getId()); syncMat(mat,param); if (matService.updateById(mat)) { callApiLogSave(mat, "/open/asrs/mat/v1", "接收ERP下发商品信息成功!添加商品信息成功!", true); } else { callApiLogSave(mat, "/open/asrs/mat/v1", "添加ERP下发商品信息失败!!!状态异常!!!", false); mat.setMemo("添加ERP下发商品信息失败!"); } } matSyncParam.setMats(matParams); return matSyncParam; return mat; } public void callApiLogSave(MatSyncParam.Mats matParam, String tableName, String response, Boolean bool) { private void syncMat(Mat mat, MatSyncParam param){ Date date = new Date(); mat.setMatnr(param.getCInvCCode());//物料编码 mat.setMaktx(param.getCInvName());//物料名称 mat.setSpecs(param.getCInvStd());//规格 mat.setUnit(param.getCComUnitName()); mat.setBeBatch(param.getBInvBatch()); mat.setStatus(param.getStates()); mat.setCreateBy(9999L);//9999表示erp下发 mat.setCreateTime(date); mat.setUpdateBy(9999L);//9999表示erp下发 mat.setUpdateTime(date); } public void callApiLogSave(Mat mat, String tableName, String response, Boolean bool) { apiLogService.save("ERP下发商品信息", tableName, "null", "10.10.10.1", "物料编码:" + matParam.getMatnr() + "、物料名称:" + matParam.getMaktx() + "、规格:" + matParam.getSpecs() + "、备注:" + matParam.getMemo(), "物料编码:" + mat.getMatnr() + "、物料名称:" + mat.getMaktx() + "、规格:" + mat.getSpecs() + "、备注:" + mat.getMemo(), response, bool); } @@ -691,22 +696,25 @@ } @Transactional public boolean syncOrder(Map<String, Object> param, boolean pakin) { if(Cools.isEmpty(param) || Cools.isEmpty(param.get("orderDetails"))){ public boolean syncOrder(OrderSyncParam param, boolean pakin, String docName) { if(Cools.isEmpty(param) || Cools.isEmpty(param.getChildren())){ callApiLogSave(param, "/order/pakout/default/v1", "接受单据失败,单据参数为空或者单据详情为空,无法生成单据信息", false); throw new CoolException("单据参数为空或者单据详情为空,无法生成单据信息"); } if(!Cools.isEmpty(orderService.selectByNo(param.get("id").toString()))){ if(!Cools.isEmpty(orderService.selectByNo(param.getCPOID()))){ callApiLogSave(param, "/order/pakout/default/v1", "接受单据失败,该单据已存在,无法生成单据信息", false); throw new CoolException("该单据已存在,无法生成单据信息"); } Date now = new Date(); Order order = orderMapping(param,now,pakin); Order order = orderMapping(param,now,pakin,docName); orderService.insert(order); List<Map<String, Object>> orderDetails = (List<Map<String, Object>>) param.get("orderDetails"); orderDetails.forEach(odParam -> { OrderDetl od = orderDetlMapping(order,odParam,now); orderDetlService.insert(od); param.getChildren().forEach(od -> { OrderDetl orderDetl = orderDetlMapping(order,od,now); orderDetlService.insert(orderDetl); }); callApiLogSave(param, "/order/pakout/default/v1", "接受单据成功", true); return true; } @@ -728,43 +736,21 @@ return true; } private Order orderMapping(Map<String, Object> param, Date now, boolean pakin){ private Order orderMapping(OrderSyncParam param, Date now, boolean pakin, String docName){ Order order = new Order(); //uuid order.setUuid(String.valueOf(snowflakeIdWorker.nextId())); //核算主体 //order.setItemName(param.get("account").toString()); order.setItemName(toString(param.get("account"))); //单据唯一表示 //order.setOrderNo(param.get("id").toString()); order.setOrderNo(toString(param.get("id"))); //业务类型 //order.setDefNumber(param.get("cBusType").toString()); order.setDefNumber(toString(param.get("cVouchType"))); order.setOrderNo(param.getCPOID()); //单据类型 DocType docType = docTypeService.selectOrAdd(param.get("cBusType").toString(), pakin); DocType docType = docTypeService.selectOrAdd(docName, pakin); order.setDocType(docType.getDocId()); //单据日期 //order.setOrderTime(param.get("dDate").toString()); order.setOrderTime(toString(param.get("dDate"))); //供应商/客户编码 //order.setCstmrName(param.get("ks").toString()); order.setCstmrName(toString(param.get("ks"))); //仓库 //order.setTel(param.get("cWhName").toString()); order.setTel(toString(param.get("cWhName"))); //出入库类别 //setOperMemb(param.get("cRdName").toString()); order.setOperMemb(toString(param.get("cRdName"))); //部门 //order.setSalesman(param.get("cDepCode").toString()); order.setSalesman(toString(param.get("cDepCode"))); //备注 //order.setMemo(param.get("cMemo").toString()); order.setMemo(toString(param.get("cMemo"))); order.setOrderTime(param.getDdate()); order.setMemo(param.getCMemo()); //制单人 //order.setShipCode(param.get("cMaker").toString()); order.setShipCode(toString(param.get("cMaker"))); order.setShipCode(param.getCPersonCode()); order.setCreateTime(now); order.setUpdateTime(now); @@ -776,40 +762,36 @@ return order; } private OrderDetl orderDetlMapping(Order order, Map<String, Object> odParam, Date now){ private OrderDetl orderDetlMapping(Order order, OrderSyncParam.OrderDetl odParam, Date now){ Mat mat = matService.selectByMatnr(odParam.getCInvCode()); if(Cools.isEmpty(mat)){ throw new CoolException("存货编码:" + odParam.getCInvCode() + "不存在,请先同步存货档案"); } OrderDetl od = new OrderDetl(); od.setOrderId(order.getId()); od.setOrderNo(order.getOrderNo()); //行唯一标识 //od.setItemNum(odParam.get("autoId").toString()); od.setItemNum(toString(odParam.get("autoId"))); //采购订单行号 od.setItemNum(odParam.getIvouchrowno()); //存货编码 //od.setMatnr(odParam.get("cInvCode").toString()); od.setMatnr(toString(odParam.get("cInvCode"))); od.setMatnr(mat.getMatnr()); //存货名称 //od.setMaktx(odParam.get("cInvName").toString()); od.setMaktx(toString(odParam.get("cInvName"))); od.setMaktx(mat.getMaktx()); //规格型号 //od.setSpecs(odParam.get("cInvStd").toString()); od.setSpecs(toString(odParam.get("cInvStd"))); od.setSpecs(mat.getSpecs()); //计量单位 //od.setUnit(odParam.get("cComUnitName").toString()); od.setUnit(toString(odParam.get("cComUnitName"))); od.setUnit(mat.getUnit()); //数量 od.setAnfme(Double.parseDouble(odParam.get("iQuantity").toString())); //od.setAnfme(toString(odParam.get("iQuantity"))); //行号 //od.setBrand(odParam.get("irowno").toString()); //od.setBrand(toString(odParam.get("irowno"))); od.setManu(toString(odParam.get("irowno"))); od.setAnfme(odParam.getIQuantity()); //销售订单号 //od.setColor(odParam.get("csocode").toString()); //od.setColor(toString(odParam.get("csocode"))); od.setThreeCode(toString(odParam.get("csocode"))); //销售订单行号 //od.setOrigin(odParam.get("isoseq").toString()); //od.setOrigin(toString(odParam.get("isoseq"))); od.setDeadTime(toString(odParam.get("isoseq"))); od.setThreeCode(odParam.getCsocode()); //自由项 od.setDeadTime(odParam.getBFree1()); //IDs od.setSku(odParam.getID()); od.setStatus(1); od.setQty(0.0D); @@ -836,6 +818,11 @@ response, bool); } public void callApiLogSave(OrderSyncParam param, String tableName, String response, Boolean bool) { apiLogService.save("ERP订单同步", tableName, "null", "10.10.10.1", param.toString(), response, bool); } public static void main(String[] args) { Object s = null; if(StringUtils.isEmpty(s)){ src/main/java/com/zy/system/controller/LicenseCreatorController.java
@@ -1,15 +1,14 @@ package com.zy.system.controller; import com.core.annotations.ManagerAuth; import com.core.common.Cools; import com.core.common.R; import com.zy.system.entity.license.*; import de.schlichtherle.license.LicenseContent; import com.zy.system.entity.license.AbstractServerInfos; import com.zy.system.entity.license.LicenseCheck; import com.zy.system.entity.license.LicenseCheckListener; import com.zy.system.entity.license.WindowsServerInfos; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.util.ClassUtils; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @@ -17,12 +16,7 @@ import java.io.File; import java.io.IOException; import java.text.SimpleDateFormat; import java.time.temporal.ChronoUnit; import java.util.Date; import java.util.HashMap; import java.util.Map; import java.util.prefs.Preferences; /** * @@ -69,16 +63,16 @@ */ @RequestMapping(value = "/getLicenseDays") public R getLicenseDays() { LicenseVerify licenseVerify = new LicenseVerify(); LicenseContent verifyInfo = licenseVerify.getVerifyInfo(); if (verifyInfo == null) { return R.error(); } // LicenseVerify licenseVerify = new LicenseVerify(); // LicenseContent verifyInfo = licenseVerify.getVerifyInfo(); // if (verifyInfo == null) { // return R.error(); // } Date start = new Date(); Date end = verifyInfo.getNotAfter(); //Date end = verifyInfo.getNotAfter(); Long starTime = start.getTime(); Long endTime = end.getTime(); Long endTime = start.getTime() + 1000000; Long num = endTime - starTime;//时间戳相差的毫秒数 int day = (int) (num / 24 / 60 / 60 / 1000); return R.ok().add(day); src/main/java/com/zy/system/entity/license/CustomLicenseManager.java
@@ -34,7 +34,7 @@ } public CustomLicenseManager(LicenseParam param) { super(param); //super(param); } /** src/main/resources/application.yml
@@ -85,7 +85,10 @@ containerMoveOutPath: /expand/api/moveOut/container containerArrivedPath: /conveyor/containerArrived u8: ERP: url: http://192.168.1.55:8010 orderReportPath: /api/RdAudit MES: url: http://192.168.1.55:8010 orderReportPath: /api/RdAudit