src/main/java/com/zy/asrs/controller/MobileController.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.annotations.AppAuth; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; @@ -19,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.List; @@ -258,12 +260,12 @@ return R.ok(); } @RequestMapping("/truss/auth") @ManagerAuth(memo = "退库,1楼桁架退库") public R trussComb(@RequestBody TrussCombParam combParam){ mobileService.trussComb(combParam, getUserId()); return R.ok("组托成功"); } // @RequestMapping("/truss/auth") // @ManagerAuth(memo = "退库,1楼桁架退库") // public R trussComb(@RequestBody TrussCombParam combParam){ // mobileService.trussComb(combParam, getUserId()); // return R.ok("组托成功"); // } @RequestMapping("/truss/order/auth") @ManagerAuth(memo = "退库,1楼桁架退库,退库单退库") @@ -273,12 +275,23 @@ } @RequestMapping("/truss/comd/auth") @ManagerAuth(memo = "手动入库,2楼无需桁架手动入库") public R trussComb2(@RequestBody PalletizingCompleteParam combParam){ mobileService.trussComb2(combParam, getUserId()); // @ManagerAuth(memo = "手动入库,2楼无需桁架手动入库 wms入库") public R PalletizingCompleteTwoFloorParam(@RequestBody PalletizingCompleteTwoFloorParam combParam){ mobileService.PalletizingCompleteTwoFloorParam(combParam); return R.ok("组托成功"); } /** * 中控:2楼212叫托盘 */ @PostMapping("/balcony/complete/car/auth/v1") @AppAuth(memo = "中控:2楼212叫托盘") public synchronized R balconyCompleteCar() { mobileService.trussComb2Car(212); return R.ok(); } @RequestMapping("/comb/auth") @ManagerAuth(memo = "组托") public R comb(@RequestBody CombParam combParam){ src/main/java/com/zy/asrs/controller/OpenController.java
@@ -197,7 +197,7 @@ * 贴标机申请获取货物信息 */ @PostMapping("/labeller/mat/auth/v1") @AppAuth(memo = "贴标机申请获取货物信息") @AppAuth(memo = "贴标机申请获取货物信息") //old需要修改 public synchronized R labellerMat(@RequestHeader(required = false) String appkey, @RequestBody LabellerMatParam param, HttpServletRequest request) { @@ -209,7 +209,7 @@ * 贴标机贴标完成 */ @PostMapping("/labeller/complete/auth/v1") @AppAuth(memo = "贴标机贴标完成") @AppAuth(memo = "贴标机贴标完成") //old需要修改 public synchronized R labellerComplete(@RequestHeader(required = false) String appkey, @RequestBody LabellerCompleteParam param, HttpServletRequest request) { @@ -219,17 +219,15 @@ } /** * 中控:码垛完成下发入库信息 * 中控(2楼):码垛完成下发入库信息 */ @PostMapping("/palletizing/complete/auth/v1") @AppAuth(memo = "中控(2楼):码垛完成下发入库信息") public synchronized R palletizingComplete(@RequestHeader(required = false) String appkey, @RequestBody PalletizingCompleteParam2 param, public synchronized R PalletizingCompleteTwoFloorParam(@RequestHeader(required = false) String appkey, @RequestBody PalletizingCompleteTwoFloorParam param, HttpServletRequest request) { // appkey = "ea1f0459efc02a79f046f982767939ae"; auth(appkey, param, request); openService.palletizingComplete(param); openService.PalletizingCompleteTwoFloorParam(param); return R.ok(param); } @@ -241,8 +239,6 @@ public synchronized R palletizingCompleteS(@RequestHeader(required = false) String appkey, @RequestBody PalletizingCompleteParam param, HttpServletRequest request) { // appkey = "ea1f0459efc02a79f046f982767939ae"; auth(appkey, param, request); openService.palletizingCompleteS(param); return R.ok(); @@ -252,7 +248,7 @@ * 中控:出库完成月台相关 */ @PostMapping("/balcony/complete/auth/v1") @AppAuth(memo = "中控:出库完成月台相关") @AppAuth(memo = "中控:出库完成月台相关") //old需要修改 public synchronized R balconyComplete(@RequestHeader(required = false) String appkey, @RequestBody LabellerMatParam param, HttpServletRequest request) { @@ -270,8 +266,6 @@ public synchronized R singleUnstackingComplete(@RequestHeader(required = false) String appkey, @RequestBody SingleUnstackingCompleteParam param, HttpServletRequest request) { // appkey = "ea1f0459efc02a79f046f982767939ae"; auth(appkey, param, request); openService.singleUnstackingComplete(param); return R.ok(param); @@ -285,53 +279,10 @@ public synchronized R singleMountUnstackingComplete(@RequestHeader(required = false) String appkey, @RequestBody SingleMountUnstackingCompleteParam param, HttpServletRequest request) { // appkey = "ea1f0459efc02a79f046f982767939ae"; auth(appkey, param, request); openService.singleMountUnstackingComplete(param); return R.ok(param); } // /** // * 测试1 入库前输送线写入托盘码,216站测试用 // */ // @PostMapping("/cs1/auth/v1") // @AppAuth(memo = "") // public synchronized R cs1(@RequestHeader(required = false) String appkey, // @RequestBody PalletizingCompleteParam param, // HttpServletRequest request) { // auth(appkey, param, request); // openService.cs1(param.getBarcode()); // return R.ok(param); // } // // /** // * 测试2 清除托盘码,216站测试用 Copy // */ // @PostMapping("/cs2/auth/v1") // @AppAuth(memo = "") // public synchronized R cs2(@RequestHeader(required = false) String appkey, // @RequestBody PalletizingCompleteParam param, // HttpServletRequest request) { // auth(appkey, param, request); // openService.cs2(); // return R.ok(param); // } // // /** // * 测试3 // */ // @PostMapping("/cs3/auth/v1") //// @AppAuth(memo = "") // public synchronized R cs3(@RequestHeader(required = false) String appkey, // @RequestBody PalletizingCompleteParam param, // HttpServletRequest request) { // auth(appkey, param, request); // openService.cs3(); // return R.ok(param); // } /*...........................上饶江铜..............以上.............徐工汉云...........................*/ src/main/java/com/zy/asrs/entity/param/PalletizingCompleteParam2.java
@@ -43,20 +43,4 @@ private String specsDetl;// (是否需要) 字符串 规格 } // public Integer getDevNo$(){ // if (!Cools.isEmpty(this.palletizingNo)){ // switch (this.palletizingNo){ // case "1": // return 219; // case "2": // return 215; // case "3": // return 118; // default: // return null; // } // } // return null; // } } src/main/java/com/zy/asrs/entity/param/PalletizingCompleteTwoFloorParam.java
New file @@ -0,0 +1,33 @@ package com.zy.asrs.entity.param; import lombok.Data; import java.util.List; /* * Created by Monkey D. Luffy on 2023.07.19 * */ @Data public class PalletizingCompleteTwoFloorParam { private String barcode;// 是 字符串 托盘码 private Integer palletizingNo;// 是 字符串 码垛位编号 private String boxType;// 是 字符串 木箱类型 private List<MatList> matList;// 是 列表 拆垛货物信息(2箱,尾箱可能1箱) @Data public static class MatList{ private String matnr;// 是 规格 物料编码 private String maktx;// 是 物料名称 //不需要 private String batch;// 是 字符串 木箱编号(唯一字段,出库依据,出库时按照木箱编号出库) private String model;// 是 字符串 卷编号(唯一字段) private String position;// 是 字符串 木箱码垛位置(拆垛时需要) private Double weight;// 是 小数型 重量 净重 private Double roughWeight;// 是 小数型 重量 毛重 private Double anfme=1.0;// 是 小数型 //默认 private Double rollExtent;// 是 小数型 卷长度 } } src/main/java/com/zy/asrs/entity/param/TrussCombParam.java
@@ -60,8 +60,6 @@ public TrussCombParam(){} public TrussCombParam( WrkDetl wrkDetl){ LocDetlRullUpDetailService locDetlRullUpDetailService = SpringUtils.getBean(LocDetlRullUpDetailService.class); this.barcode = wrkDetl.getBarcode(); this.staStart = 147; this.palletizingNo2 = 118; @@ -78,7 +76,6 @@ matList.setBoxNo(wrkDetl.getBatch()); matList.setPosition("1"); matList.setWeight(wrkDetl.getWeight()); matList.setSpecs(wrkDetl.getSpecs()); matLists.add(matList); this.matList = matLists; src/main/java/com/zy/asrs/service/MobileService.java
@@ -16,7 +16,8 @@ void comb(CombParam param, Long userId); void trussComb(TrussCombParam param, Long userId); void trussCombOrder(TrussCombParam param, Long userId); void trussComb2(PalletizingCompleteParam param, Long userId); void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param); void trussComb2Car(Integer staNo); /** * 上架 src/main/java/com/zy/asrs/service/OpenService.java
@@ -50,15 +50,13 @@ void balconyComplete(LabellerMatParam param); void palletizingComplete(PalletizingCompleteParam2 param); void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param); void palletizingCompleteS(PalletizingCompleteParam param); void singleUnstackingComplete(SingleUnstackingCompleteParam param); void singleMountUnstackingComplete(SingleMountUnstackingCompleteParam param); void cs1(String barcode); void cs2(); void cs3(); } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -20,6 +20,7 @@ import com.zy.common.model.LocTypeDto; import com.zy.common.model.MesCombParam; import com.zy.common.model.StartupDto; import com.zy.common.model.enums.WorkNoType; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import lombok.extern.slf4j.Slf4j; @@ -85,6 +86,8 @@ private DocTypeService docTypeService; @Autowired private LocDetlRullUpDetailService locDetlRullUpDetailService; @Autowired private TagService tagService; @Override @@ -221,7 +224,7 @@ throw new CoolException("参数:码垛位编号 palletizingNo为空"); }else if (Cools.isEmpty(param.getOrderNo())){ throw new CoolException("参数:退货单单号 orderNo为空"); }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size() != 1){ }else if (Cools.isEmpty(param.getMatList())){ throw new CoolException("参数:物料明细 matLists为空"); } @@ -252,45 +255,57 @@ if (!orderBoxNoList.contains(matList.getBatch())){ throw new CoolException("单号:"+param.getOrderNo()+" 箱号:"+matList.getBatch()+"不属于此订单或者已经入库"); }else { // if (matList.getAnfme() > orderDetls.get(0).getAnfme()) { // throw new CoolException("箱号:"+orderDetls.get(0).getBatch() + "入库数量不合法"); // } matListBoxNoList.add(matList.getBoxNo()); } } List<OrderDetl> orderDetlList = new ArrayList<>(); for (OrderDetl orderDetl: orderDetls){ if (matListBoxNoList.contains(orderDetl.getBatch())){ orderDetl.setBrand("1"); orderDetlList.add(orderDetl); } } String matnr = null; List<WaitPakin> waitPakins = new ArrayList<>(); String matnrSign = ""; String brandSign = ""; for (OrderDetl orderDetl:orderDetlList){ Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(orderDetl.getMatnr() + "商品档案不存在"); if (Cools.isEmpty(orderDetl.getMatnr()) || Cools.isEmpty(orderDetl.getBrand())){ throw new CoolException(orderDetl.getOrderNo() + "所选明细存在未知规格或者未知箱型,请维护数据!"); } matnr = mat.getMatnr(); if (matnrSign.equals("")){ matnrSign = orderDetl.getMatnr(); brandSign = orderDetl.getBrand(); }else { if (!matnrSign.equals(orderDetl.getMatnr())){ throw new CoolException(orderDetl.getMatnr() + "请选择同一个规格的货物!!!"); } if (!brandSign.equals(orderDetl.getBrand())){ throw new CoolException(orderDetl.getMatnr() + "请选择同一种箱型的货物!!!"); } } } Mat mat = matService.selectByMatnr(matnrSign); if (Cools.isEmpty(mat)) { throw new CoolException(matnrSign + "商品档案不存在"); } for (OrderDetl orderDetl:orderDetlList){ WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setOrderNo(order.getOrderNo()); // 单据编号 waitPakin.setModel(orderDetl.getModel()); //批次 waitPakin.setSpecs(orderDetl.getSpecs()); //规格 waitPakin.setBatch(orderDetl.getBatch()); //木箱编码 waitPakin.setBrand(param.getBoxType()); //木箱类型 waitPakin.setBrand(orderDetl.getBrand()); //木箱类型 waitPakin.setZpallet(param.getBarcode()); //托盘码 waitPakin.setOrigin(orderDetl.getOrigin()); //木箱在托盘上的位置 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setOrigin("1"); //木箱在托盘上的位置 waitPakin.setIoStatus("Y"); // 入出状态 waitPakin.setAnfme(orderDetl.getAnfme()); // 木箱中铜箔数量 waitPakin.setWeight(orderDetl.getWeight()); // 木箱中铜箔净重 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setRollUp(orderDetl.getRollUp()); waitPakin.setZpallet(param.getBarcode()); if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); @@ -301,7 +316,7 @@ LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short)1); StartupDto dto = commonService.getLocNo(1, 1, 145, matnr,null,null, locTypeDto); StartupDto dto = commonService.getLocNo(1, 1, 145, matnrSign,null,null, locTypeDto); int workNo = dto.getWorkNo(); // 生成工作档 @@ -339,7 +354,6 @@ wrkDetl.setIoTime(wrkMast.getIoTime()); wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); wrkDetl.setRollUp(waitPakin.getRollUp()); wrkDetl.setZpallet(param.getBarcode()); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作明细失败"); @@ -365,7 +379,51 @@ @Override @Transactional public void trussComb2(PalletizingCompleteParam param, Long userId) { public void trussComb2Car(Integer staNo) { if (staNo!=212){ throw new CoolException("只允许212呼叫托盘"); } BasDevp basDevp = basDevpService.selectById(212); if (!basDevp.getAutoing().equals("Y")){ throw new CoolException("212站点不是自动"); } else if (basDevp.getLoading().equals("Y")){ throw new CoolException("212站点有物"); } else if (basDevp.getWrkNo()!=0){ throw new CoolException("212站点有工作号"); } int workNo = 20211; WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", 20211)); if (!Cools.isEmpty(wrkMast1)){ throw new CoolException("任务档案已存在!请等待..."); } Date now = new Date(); // 生成工作档 WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); wrkMast.setWrkSts(61L); // 工作状态:61、等待空板 wrkMast.setIoType(212); // 入出库状态:212.2楼212呼叫空板 wrkMast.setIoPri(10D); // 优先级 wrkMast.setStaNo(212); wrkMast.setFullPlt("N"); // 满板:Y wrkMast.setPicking("N"); // 拣料 wrkMast.setExitMk("N"); // 退出 wrkMast.setEmptyMk("Y"); // 空板 wrkMast.setLinkMis("Y"); wrkMast.setCtnType(0); // 容器类型 // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); boolean res = wrkMastService.insert(wrkMast); if (!res) { throw new CoolException("保存工作档失败"); } } @Override @Transactional public void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param) { Long userId = 7777L;//中控 param.setPalletizingNo(212); //判断param参数 if (Cools.isEmpty(param.getBarcode())){ throw new CoolException("参数:托盘码 barcode为空"); @@ -373,36 +431,57 @@ throw new CoolException("参数:码垛位编号 palletizingNo为空"); }else if (Cools.isEmpty(param.getBoxType())){ throw new CoolException("参数:木箱类型 boxType为空"); }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0 || param.getMatLists().size()>2){ }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size()==0){ throw new CoolException("参数:物料明细 matLists为空"); } ArrayList<String> positions = new ArrayList<>(); //木箱位置查重 (orgin) String matnrOne = "";//木箱相同位置 规格 matnr校验 1、左 String matnrTwo = "";//木箱相同位置 规格 matnr校验 2、右 ArrayList<String> boxNos = new ArrayList<>(); //木箱唯一编码查重 (batch) //判断matLists参数 for (PalletizingCompleteParam.MatList matList:param.getMatLists()){ for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){ if (Cools.isEmpty(matList.getMatnr())){ throw new CoolException("参数:物料编码 matnr为空"); throw new CoolException("参数:规格 matnr为空"); }else if (Cools.isEmpty(matList.getPosition())){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:码垛位置 position为空"); }else if (Cools.isEmpty(matList.getBoxNo())){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空"); }else if (Cools.isEmpty(matList.getAnfme()) || matList.getAnfme().equals(0)){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱中铜箔数量 anfme为空"); throw new CoolException("规格:"+matList.getMatnr()+"、参数:码垛位置 position为空"); }else if (Cools.isEmpty(matList.getBatch())){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 batch为空"); }else if (Cools.isEmpty(matList.getModel())){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷号 model为空"); }else if (Cools.isEmpty(matList.getBatch())){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空"); }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:重量 weight为空"); throw new CoolException("规格:"+matList.getMatnr()+"、参数:净重 weight为空"); }else if (Cools.isEmpty(matList.getRoughWeight()) || matList.getRoughWeight().equals(0D)){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:毛重 roughWeight"); }else if (Cools.isEmpty(matList.getRollExtent()) || matList.getRollExtent().equals(0D)){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷长度 rollExtent"); } if (!positions.contains(matList.getPosition())){ positions.add(matList.getPosition()); if (matList.getPosition().equals("1")){//1、左 2、右 if (!matnrOne.equals("")){ if (!matnrOne.equals(matList.getMatnr())){ throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息"); } }else { throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱位置存在重复:"+matList.getPosition()); matnrOne=matList.getMatnr(); } }else if (matList.getPosition().equals("2")){ if (!matnrTwo.equals("")){ if (!matnrTwo.equals(matList.getMatnr())){ throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息"); } }else { matnrTwo=matList.getMatnr(); } }else { throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱位置错误:"+matList.getPosition()); } if (!boxNos.contains(matList.getBoxNo())){ boxNos.add(matList.getBoxNo()); if (!boxNos.contains(matList.getBatch())){ boxNos.add(matList.getBatch()); }else { throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱编码存在重复"); throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱编码存在重复"); } } @@ -416,40 +495,51 @@ String matnr = null; List<WaitPakin> waitPakins = new ArrayList<>(); Date now = new Date(); for (PalletizingCompleteParam.MatList matList:param.getMatLists()){ for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){ Mat mat = matService.selectByMatnr(matList.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(matList.getMatnr() + "商品档案不存在"); mat = new Mat(); mat.setMatnr(matList.getMatnr()); mat.setMaktx(matList.getMatnr()); mat.setTagId(tagService.getTop().getId()); mat.setBrand(param.getBoxType()); mat.setCreateBy(userId); mat.setCreateTime(now); mat.setUpdateBy(userId); mat.setUpdateTime(now); mat.setStatus(1); if (!matService.insert(mat)) { throw new CoolException("规格添加失败,请联系管理员"); } } matnr = matList.getMatnr(); WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setModel(matList.getBatch()); //批次 waitPakin.setSpecs(matList.getSpecs()); //规格 waitPakin.setBatch(matList.getBoxNo()); //木箱编码 waitPakin.setBatch(matList.getBatch()); //木箱编码 //批次 唯一值 箱号 waitPakin.setModel(matList.getModel()); //卷号 唯一值 waitPakin.setBrand(param.getBoxType()); //木箱类型 waitPakin.setZpallet(param.getBarcode()); //托盘码 waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置 waitPakin.setWeight(matList.getWeight()); //净重 // waitPakin.setRoughWeight(matList.getRoughWeight()); //毛重 // waitPakin.setRollExtent(matList.getRollExtent()); //长度 waitPakin.setIoStatus("Y"); // 入出状态 waitPakin.setAnfme(matList.getAnfme().doubleValue()); // 木箱中铜箔数量 waitPakin.setAnfme(matList.getAnfme()); // 数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setZpallet(param.getBarcode()); if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } waitPakins.add(waitPakin); } LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short)1); StartupDto dto = commonService.getLocNo(1, 1, 145, matnr,null,null, locTypeDto); StartupDto dto = commonService.getLocNo(1, 1, 212, matnr,null,null, locTypeDto); int workNo = dto.getWorkNo(); // 生成工作档 @@ -470,7 +560,6 @@ wrkMast.setEmptyMk("N"); // 空板 wrkMast.setLinkMis("Y"); wrkMast.setCtnType(0); // 容器类型 wrkMast.setBarcode(param.getBarcode()); // 操作人员数据 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); @@ -487,7 +576,6 @@ wrkDetl.setAppeTime(now); wrkDetl.setModiTime(now); wrkDetl.setZpallet(param.getBarcode()); wrkDetl.setRollUp(waitPakin.getRollUp()); if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作明细失败"); } src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -694,7 +694,7 @@ * */ @Override @Transactional public void palletizingComplete(PalletizingCompleteParam2 param) { public void PalletizingCompleteTwoFloorParam(PalletizingCompleteTwoFloorParam param) { Long userId = 7777L;//中控 //判断param参数 if (Cools.isEmpty(param.getBarcode())){ @@ -703,36 +703,57 @@ throw new CoolException("参数:码垛位编号 palletizingNo为空"); }else if (Cools.isEmpty(param.getBoxType())){ throw new CoolException("参数:木箱类型 boxType为空"); }else if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0){ }else if (Cools.isEmpty(param.getMatList()) || param.getMatList().size()==0){ throw new CoolException("参数:物料明细 matLists为空"); } ArrayList<String> positions = new ArrayList<>(); //木箱位置查重 (orgin) String matnrOne = "";//木箱相同位置 规格 matnr校验 1、左 String matnrTwo = "";//木箱相同位置 规格 matnr校验 2、右 ArrayList<String> boxNos = new ArrayList<>(); //木箱唯一编码查重 (batch) //判断matLists参数 for (PalletizingCompleteParam2.MatList matList:param.getMatLists()){ for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){ if (Cools.isEmpty(matList.getMatnr())){ throw new CoolException("参数:物料编码 matnr为空"); throw new CoolException("参数:规格 matnr为空"); }else if (Cools.isEmpty(matList.getPosition())){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:码垛位置 position为空"); }else if (Cools.isEmpty(matList.getBoxNo())){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空"); }else if (Cools.isEmpty(matList.getAnfme()) || matList.getAnfme().equals(0)){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:木箱中铜箔数量 anfme为空"); throw new CoolException("规格:"+matList.getMatnr()+"、参数:码垛位置 position为空"); }else if (Cools.isEmpty(matList.getBatch())){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 batch为空"); }else if (Cools.isEmpty(matList.getModel())){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷号 model为空"); }else if (Cools.isEmpty(matList.getBatch())){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:木箱编号 boxNo为空"); }else if (Cools.isEmpty(matList.getWeight()) || matList.getWeight().equals(0D)){ throw new CoolException("物料编码:"+matList.getMatnr()+"、参数:重量 weight为空"); throw new CoolException("规格:"+matList.getMatnr()+"、参数:净重 weight为空"); }else if (Cools.isEmpty(matList.getRoughWeight()) || matList.getRoughWeight().equals(0D)){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:毛重 roughWeight"); }else if (Cools.isEmpty(matList.getRollExtent()) || matList.getRollExtent().equals(0D)){ throw new CoolException("规格:"+matList.getMatnr()+"、参数:卷长度 rollExtent"); } if (!positions.contains(matList.getPosition())){ positions.add(matList.getPosition()); if (matList.getPosition().equals("1")){//1、左 2、右 if (!matnrOne.equals("")){ if (!matnrOne.equals(matList.getMatnr())){ throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息"); } }else { throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱位置存在重复:"+matList.getPosition()); matnrOne=matList.getMatnr(); } }else if (matList.getPosition().equals("2")){ if (!matnrTwo.equals("")){ if (!matnrTwo.equals(matList.getMatnr())){ throw new CoolException("木箱位置:"+matList.getPosition()+"存在不同规格卷信息"); } }else { matnrTwo=matList.getMatnr(); } }else { throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱位置错误:"+matList.getPosition()); } if (!boxNos.contains(matList.getBoxNo())){ boxNos.add(matList.getBoxNo()); if (!boxNos.contains(matList.getBatch())){ boxNos.add(matList.getBatch()); }else { throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱编码存在重复"); throw new CoolException("参数:木箱编号 boxNo:"+matList.getBatch()+",木箱编码存在重复"); } } @@ -759,37 +780,39 @@ Date now = new Date(); for (PalletizingCompleteParam2.MatList matList:param.getMatLists()){ long rollUp = new Date().getTime(); for (PalletizingCompleteTwoFloorParam.MatList matList:param.getMatList()){ Mat mat = matService.selectByMatnr(matList.getMatnr()); if (Cools.isEmpty(mat)) { throw new CoolException(matList.getMatnr() + "商品档案不存在"); mat = new Mat(); mat.setMatnr(matList.getMatnr()); mat.setMaktx(matList.getMatnr()); mat.setTagId(tagService.getTop().getId()); mat.setCreateBy(userId); mat.setCreateTime(now); mat.setUpdateBy(userId); mat.setUpdateTime(now); mat.setStatus(1); if (!matService.insert(mat)) { throw new CoolException("规格添加失败,请联系管理员"); } } WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setModel(matList.getBatch()); //批次 waitPakin.setSpecs(matList.getSpecs()); //规格 waitPakin.setBatch(matList.getBoxNo()); //木箱编码 waitPakin.setBatch(matList.getBatch()); //木箱编码 //批次 唯一值 箱号 waitPakin.setModel(matList.getModel()); //卷号 唯一值 waitPakin.setBrand(param.getBoxType()); //木箱类型 waitPakin.setZpallet(param.getBarcode()); //托盘码 waitPakin.setOrigin(matList.getPosition()); //木箱在托盘上的位置 waitPakin.setWeight(matList.getWeight()); //净重 // waitPakin.setRoughWeight(matList.getRoughWeight()); //毛重 // waitPakin.setRollExtent(matList.getRollExtent()); //长度 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setAnfme(matList.getAnfme().doubleValue()); // 木箱中铜箔数量 waitPakin.setAnfme(matList.getAnfme()); // 数量 waitPakin.setStatus("Y"); // 状态 waitPakin.setAppeUser(userId); waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setRollUp(rollUp); if (!Cools.isEmpty(matList.getMatDetlList())){ for (PalletizingCompleteParam2.MatDetlList matDetlList:matList.getMatDetlList()){ LocDetlRullUpDetail locDetlRullUpDetail = new LocDetlRullUpDetail(); locDetlRullUpDetail.setUuid(rollUp); locDetlRullUpDetail.setRollNo(matDetlList.getBoxNoDetl()); locDetlRullUpDetail.setRollWeight(matDetlList.getWeightDetl().toString()); locDetlRullUpDetailService.insert(locDetlRullUpDetail); } } if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } @@ -858,17 +881,17 @@ }else if (Cools.isEmpty(matList.getBoxNo())){ throw new CoolException("参数:木箱编号 boxNo为空"); } List<WrkDetlSingle> wrkDetlSingles = wrkDetlSingleService.selectList(new EntityWrapper<WrkDetlSingle>().eq("batch", matList.getBoxNo())); WrkDetlSingle wrkDetlSingleOne = wrkDetlSingleService.selectOne(new EntityWrapper<WrkDetlSingle>().eq("batch", matList.getBoxNo())); List<WrkDetlSingle> wrkDetlSingles = wrkDetlSingleService.selectList(new EntityWrapper<WrkDetlSingle>() .eq("wrk_no", wrkDetlSingleOne.getWrkNo()).eq("io_time", wrkDetlSingleOne.getIoTime())); boolean sign=true; for (WrkDetlSingle wrkDetlSingle:wrkDetlSingles){ if (wrkDetlSingle.getBatch().equals(matList.getBoxNo())){//木箱编码 WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(wrkDetlSingle); wrkDetlsNew.add(wrkDetl); wrkDetlsOld.add(wrkDetlSingle); sign=false; break; } } if (sign){ throw new CoolException("参数:木箱编号 boxNo未查询到对应的工作明细!"); @@ -922,69 +945,20 @@ @Override @Transactional public void singleMountUnstackingComplete(SingleMountUnstackingCompleteParam param) { Long userId = 8888L;//桁架上位软件 // Long userId = 8888L;//桁架上位软件 //判断param参数 if (Cools.isEmpty(param.getBarcode())){ throw new CoolException("参数:托盘码 barcode为空"); } // else if (Cools.isEmpty(param.getPalletizingNo())){ // throw new CoolException("参数:码垛位编号 palletizingNo为空"); // } WrkMast wrkMastMatrix = wrkMastService.selectByBarcode(param.getBarcode()); if (Cools.isEmpty(wrkMastMatrix)){ throw new CoolException("参数:托盘码查询工作档失败:"+param.getBarcode()); }else { // if (wrkMastMatrix.getIoType().equals(103)){ // List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNoUnstacking(wrkMastMatrix.getWrkNo()); // if (Cools.isEmpty(param.getMatLists()) || param.getMatLists().size()==0 || param.getMatLists().size()!=wrkDetls.size()){ // throw new CoolException("返回物料明细数为"+param.getMatLists().size()+",托盘码:"+param.getBarcode()+"应剩余物料数:"+wrkDetls.size()); // } // // ArrayList<String> orgin = new ArrayList<>(); // //判断matLists参数 // for (SingleMountUnstackingCompleteParam.MatList matList : param.getMatLists()){ // if (Cools.isEmpty(matList.getPosition())){ // throw new CoolException("参数:码垛位置 position为空"); // }else if (Cools.isEmpty(matList.getBoxNo())){ // throw new CoolException("参数:木箱编号 boxNo为空"); // } // if (!orgin.contains(matList.getPosition())){ // orgin.add(matList.getPosition()); // }else { // throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+",木箱位置存在重复"); // } // boolean sign=true; // for (WrkDetl wrkDetl:wrkDetls){ // if (wrkDetl.getBatch().equals(matList.getBoxNo())){//木箱编码 // wrkDetl.setOrigin(matList.getPosition()); // wrkDetlService.update(wrkDetl,new EntityWrapper<WrkDetl>().eq("batch",wrkDetl.getBatch())); // sign=false; // break; // } // } // if (sign){ // throw new CoolException("参数:木箱编号 boxNo:"+matList.getBoxNo()+"未查询到对应的工作明细!"); // } // } // } } wrkMastMatrix.setSheetNo("2"); if (!wrkMastService.updateById(wrkMastMatrix)){ throw new CoolException("更新工作档失败==》桁架上位软件:单托拆垛完成通知"); } } /* * * */ @Override @Transactional public void cs1(String barcode) { BasDevp basDevp = basDevpService.selectById(216); basDevp.setWrkNo(9992); basDevp.setBarcode(barcode); basDevpService.updateById(basDevp); } /* @@ -1063,24 +1037,6 @@ return crnStn-2; } return crnStn; } /* * * */ @Override @Transactional public void cs3() { //拆盘 // WrkMastSta wrkMastSta1 = new WrkMastSta(new Date(),119); // wrkMastSta1.setType(2); // wrkMastSta1.setWrkType(2); // wrkMastStaService.insert(wrkMastSta1); // WrkMastSta wrkMastSta2 = new WrkMastSta(new Date(),121); // wrkMastSta2.setType(2); // wrkMastSta2.setWrkType(2); // wrkMastStaService.insert(wrkMastSta2); } /*...........................上饶江铜..............以上.............徐工汉云...........................*/ src/main/java/com/zy/asrs/task/BarcodeUploadScheduler.java
@@ -16,7 +16,7 @@ @Autowired private BarcodeUploadHandler barcodeUploadHandler; @Scheduled(cron = "0/3 * * * * ? ") // @Scheduled(cron = "0/3 * * * * ? ") private void execute(){//条码上传中控 int[] staNos =new int[]{215,219}; for (int staNo : staNos){ src/main/java/com/zy/asrs/task/LocMoveAllScheduler.java
@@ -21,7 +21,7 @@ import java.util.List; /** * Created by vincent on 2020/7/7 * Created by vincent on 2020/7/7 //跑酷测试 生成移库 */ @Slf4j @Component @@ -41,7 +41,7 @@ @Autowired private SlaveProperties slaveProperties; @Scheduled(cron = "0/3 * * * * ? ") // @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ if (!moveAll) return; src/main/java/com/zy/asrs/task/RailwayPlatformScheduler.java
@@ -8,7 +8,7 @@ /** * Created by Monkey D. Luffy on 2023.09.17 * 徐工汉云..............以下.............上饶江铜.............自动补空板 * 徐工汉云..............以下.............上饶江铜.............上报月台 */ @Component public class RailwayPlatformScheduler { @@ -16,7 +16,7 @@ @Autowired private RailwayPlatformHandler railwayPlatformHandler; @Scheduled(cron = "0/3 * * * * ? ") // @Scheduled(cron = "0/3 * * * * ? ") private void execute(){//上报月台 int[] staNos =new int[]{144}; for (int staNo : staNos){ src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
@@ -65,6 +65,10 @@ crns.add(6); boolean sign = true; for (Integer crnNo : crns){ BasCrnp basCrnp = basCrnpService.selectById(crnNo); if (basCrnp.getCrnSts()!=3 || !basCrnp.getOutEnable().equals("Y")){ continue; } sign = true; // 获取库位 LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","D").eq("crn_no",crnNo)); src/main/java/com/zy/asrs/task/handler/OneLouHangJiaHandler.java
@@ -75,7 +75,7 @@ return FAIL; } List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); if (Cools.isEmpty(wrkDetls) || wrkDetls.size()!=1){ if (Cools.isEmpty(wrkDetls) || wrkDetls.size()==0){ return FAIL; } WrkDetl wrkDetl = wrkDetls.get(0); src/main/java/com/zy/asrs/task/handler/ReportToDismantleTheStackHandler.java
@@ -18,6 +18,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; /** @@ -49,6 +51,7 @@ public ReturnT<String> start(int staNo) { try { Date now = new Date(); BasDevp basDevp = basDevpService.selectById(staNo); Integer staOther = getStaOther(staNo); Integer staEnd = getStaEnd(staNo); @@ -76,7 +79,22 @@ if (Cools.isEmpty(wrkDetls) || wrkDetls.size()==0){ return FAIL; } SingleMountUnstackingCompleteParam singleMountUnstackingCompleteParam = new SingleMountUnstackingCompleteParam(wrkMast,wrkDetls); List<WrkDetl> wrkDetlList = new ArrayList<>(); String signOne = ""; String signTwo = ""; for (WrkDetl wrkDetl:wrkDetls){ if (wrkDetl.getOrigin().equals("1") && signOne.equals("")){ wrkDetlList.add(wrkDetl); signOne = "1"; } else if (wrkDetl.getOrigin().equals("2") && signTwo.equals("")){ wrkDetlList.add(wrkDetl); signTwo = "2"; } if (!signOne.equals("") && !signTwo.equals("")){ break; } } SingleMountUnstackingCompleteParam singleMountUnstackingCompleteParam = new SingleMountUnstackingCompleteParam(wrkMast,wrkDetlList); singleMountUnstackingCompleteParam.setStaStart(staNo); singleMountUnstackingCompleteParam.setStaEnd(staEnd); ReturnT<String> result = null; @@ -101,10 +119,18 @@ // return SUCCESS; // } if (result.getCode()==200){ Date nowOne = new Date(); Date nowTwo = now; for (WrkDetl wrkDetl:wrkDetls){ if (wrkDetl.getOrigin().equals("1")){ now = nowOne; } else if (wrkDetl.getOrigin().equals("2")){ now = nowTwo; } WrkDetlSingle wrkDetlSingle = new WrkDetlSingle(); wrkDetlSingle.sync(wrkDetl); wrkDetlSingle.setWrkNo(wrkDetl.getWrkNo().longValue()); wrkDetlSingle.setIoTime(now); wrkDetlSingleService.insert(wrkDetlSingle); } wrkMast.setSheetNo("1"); src/main/resources/mapper/WrkMastMapper.xml
@@ -69,7 +69,7 @@ <select id="selectToBeHistoryData" resultMap="BaseResultMap"> select * from asr_wrk_mast where wrk_sts=5 or wrk_sts=44 or wrk_sts=57 or wrk_sts=44 or wrk_sts=57 or wrk_sts=64 or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp)) or (wrk_sts=15 and dateadd(mi,15,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp)) or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp)) src/main/webapp/static/js/saas/locDetl.js
@@ -23,7 +23,8 @@ ,{field: 'itemNum', align: 'center',title: '品项数', hide: true} ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true} ,{field: 'weight', align: 'center',title: '单箱净重', hide: true} ,{field: 'length', align: 'center',title: '单箱毛重', hide: true} ,{field: 'roughWeight', align: 'center',title: '单箱毛重', hide: true} // ,{field: 'length', align: 'center',title: '单箱毛重', hide: true} ,{field: 'volume', align: 'center',title: '单箱体积', hide: true} ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true} ,{field: 'supp', align: 'center',title: '供应商', hide: true}