src/main/java/com/zy/asrs/controller/WorkController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/ShuttleOutTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/ShuttleTask.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/WorkMastScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/utils/Utils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/service/CommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/web/WcsController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/mat/mat.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/mat/mat.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/WorkController.java
@@ -15,7 +15,6 @@ import com.zy.asrs.service.WorkService; import com.zy.asrs.utils.Utils; import com.zy.common.model.StartupDto; import com.zy.common.utils.RoleUtils; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; @@ -24,7 +23,6 @@ import org.springframework.web.bind.annotation.RestController; import java.util.*; import java.util.stream.Collectors; /** * 工作流接口控制器 @@ -56,51 +54,54 @@ @RequestMapping("/available/put/site") @ManagerAuth() public R availablePutSite(){ public R availablePutSite() { return R.ok().add(basDevpService.getAvailableInSite()); } @RequestMapping("/available/empty/put/site") @ManagerAuth() public R availableEmptyPutSite(){ public R availableEmptyPutSite() { return R.ok().add(basDevpService.getAvailableEmptyInSite()); } @RequestMapping("/available/take/site") @ManagerAuth() public R availableTakeSite(){ Set<Map<String, Object>> result = new HashSet<>(); public R availableTakeSite() { Set<Map<String, Object>> result = new TreeSet<>(); EntityWrapper<StaDesc> wrapper = new EntityWrapper<>(); // 不同继承角色显示不同库信息 RoleUtils.addRoleWrapperByCrn(getUserId(),wrapper); wrapper.eq("type_no",101); //RoleUtils.addRoleWrapperByCrn(getUserId(),wrapper); wrapper.eq("type_no", 101); wrapper.orderBy("stn_no", true); List<StaDesc> staDescs = staDescService.selectList(wrapper); List<Integer> outSite = staDescs.stream().map(StaDesc::getStnNo).distinct().collect(Collectors.toList()); // List<Integer> outSite = staDescs.stream().map(StaDesc::getStnNo).distinct().collect(Collectors.toList()); // List<Integer> outSite = basDevpService.getAvailableOutSite(101); for (Integer siteId : outSite) { for (StaDesc site : staDescs) { Map<String, Object> map = new HashMap<>(); map.put("siteId", siteId); map.put("desc","["+ Utils.getStaName(siteId)+"]"); map.put("siteId", site.getStnNo()); map.put("desc", site.getStnDesc() + site.getStnNo()); result.add(map); } EntityWrapper<StaDesc> wrapper2 = new EntityWrapper<>(); wrapper2.eq("type_no",103); wrapper2.eq("type_no", 103); wrapper.orderBy("stn_no", true); List<StaDesc> staDescs2 = staDescService.selectList(wrapper2); List<Integer> pickOutSite = staDescs2.stream().map(StaDesc::getStnNo).distinct().collect(Collectors.toList()); // List<Integer> pickOutSite = staDescs2.stream().map(StaDesc::getStnNo).distinct().collect(Collectors.toList()); // List<Integer> pickOutSite = basDevpService.getAvailableOutSite(103); for (Integer siteId : pickOutSite) { for (StaDesc site : staDescs2) { Map<String, Object> map = new HashMap<>(); map.put("siteId", siteId); map.put("desc","["+ Utils.getStaName(siteId)+"]"); map.put("siteId", site.getStnNo()); map.put("desc", site.getStnDesc() + site.getStnNo()); result.add(map); } return R.ok().add(result); } @RequestMapping("/crn/available/take/site") @ManagerAuth() public R crnAvailableTakeSite(){ public R crnAvailableTakeSite() { List<Map<String, Object>> result = new ArrayList<>(); List<Integer> outSite = basDevpService.getCrnAvailableOutSite(101); for (Integer siteId : outSite) { @@ -121,69 +122,69 @@ @RequestMapping("/available/take/check/site") @ManagerAuth() public R availableTakeCheckSite(){ public R availableTakeCheckSite() { return R.ok().add(basDevpService.getAvailableOutSite(107)); } @RequestMapping("/available/take/merge/site") @ManagerAuth() public R availableTakeMergeSite(){ public R availableTakeMergeSite() { return R.ok().add(basDevpService.getAvailableOutSite(104)); } @RequestMapping("/available/take/check/site/crn") @ManagerAuth() public R availableTakeCheckSiteCrn(){ public R availableTakeCheckSiteCrn() { EntityWrapper<StaDesc> staDescEntityWrapper = new EntityWrapper<>(); staDescEntityWrapper.eq("type_no",107); staDescEntityWrapper.eq("type_no", 107); staDescEntityWrapper.setSqlSelect("DISTINCT stn_no as stnNo"); staDescEntityWrapper.in("crn_no",1,2,3,4,5,6,7); staDescEntityWrapper.in("crn_no", 1, 2, 3, 4, 5, 6, 7); return R.ok().add(staDescService.selectList(staDescEntityWrapper)); } @RequestMapping("/available/take/check/site/ctu") @ManagerAuth() public R availableTakeCheckSiteCtu(){ public R availableTakeCheckSiteCtu() { return R.ok().add(basDevpService.getAvailableOutSite(107)); } @RequestMapping("/available/take/check/site/shuttle") @ManagerAuth() public R availableTakeCheckSiteShuttle(){ public R availableTakeCheckSiteShuttle() { return R.ok().add(basDevpService.getAvailableOutSite(107)); } @RequestMapping("/available/crn/empty/take/site") @ManagerAuth() public R availablecrnEmptyTakeSite(){ public R availablecrnEmptyTakeSite() { return R.ok().add(basDevpService.getCrnAvailableEmptyOutSite()); } @RequestMapping("/available/shuttle/empty/take/site") @ManagerAuth() public R availableshuttleEmptyTakeSite(){ public R availableshuttleEmptyTakeSite() { return R.ok().add(basDevpService.getShuttleAvailableEmptyOutSite()); } @RequestMapping("/available/ctu/empty/take/site") @ManagerAuth() public R availablectuEmptyTakeSite(){ public R availablectuEmptyTakeSite() { return R.ok().add(basDevpService.getCtuAvailableEmptyOutSite()); } @RequestMapping("/available/empty/take/site") @ManagerAuth() public R availableEmptyTakeSite(){ public R availableEmptyTakeSite() { List<Map<String, Object>> result = new ArrayList<>(); EntityWrapper<StaDesc> wrapper = new EntityWrapper<>(); wrapper.eq("type_no",110); wrapper.eq("type_no", 110); // 不同继承角色显示不同库信息 // RoleUtils.addRoleWrapperByCrn(getUserId(),wrapper); List<StaDesc> staDescs = staDescService.selectList(wrapper); for (StaDesc staDesc : staDescs) { Map<String, Object> map = new HashMap<>(); map.put("siteId", staDesc.getStnNo()); map.put("desc","["+ Utils.getStaName(staDesc.getStnNo())+"]"); map.put("desc", "[" + Utils.getStaName(staDesc.getStnNo()) + "]"); result.add(map); } return R.ok().add(result); @@ -196,8 +197,8 @@ try { String locNo = workService.startupFullPutStore(fullStoreParam, getUserId()); return R.ok("入库启动成功").add(locNo); } catch (Exception e){ return R.error("入库启动失败==>"+e.getMessage()); } catch (Exception e) { return R.error("入库启动失败==>" + e.getMessage()); } } @@ -246,10 +247,10 @@ @RequestMapping("/mat/turn/over/out/start") @ManagerAuth(memo = "品号移交") public R turnMatLocDetl(@RequestBody EmptyPlateOutParam param) { if (Cools.isEmpty(param) || Cools.isEmpty(param.getLocDetls(),param.getMatId()) || Cools.isEmpty(param.getLocDetls().get(0)) || Cools.isEmpty(param.getLocDetls().get(0).getMatnr())){ if (Cools.isEmpty(param) || Cools.isEmpty(param.getLocDetls(), param.getMatId()) || Cools.isEmpty(param.getLocDetls().get(0)) || Cools.isEmpty(param.getLocDetls().get(0).getMatnr())) { return R.error("参数为空"); } if (param.getLocDetls().size()>1){ if (param.getLocDetls().size() > 1) { return R.error("请单条数据修改,谨慎操作!"); } workService.turnMatLocDetl(param, getUserId()); @@ -266,7 +267,7 @@ @RequestMapping("/hand/control/wrkMast") @ManagerAuth(memo = "手动处理工作档") public R handControlWrkMast(@RequestParam String workNo, @RequestParam Integer type){ @RequestParam Integer type) { if (type == 1) { workService.completeWrkMast(workNo, getUserId()); return R.ok("工作档已完成"); src/main/java/com/zy/asrs/entity/param/ShuttleOutTask.java
@@ -4,9 +4,15 @@ @Data public class ShuttleOutTask { //wms任务号 private String taskNo; private String originLoc; private String originSite; private String destSite; //目标站 private Integer staNo; //源库位 private String sourceLocNo; private String priority; } src/main/java/com/zy/asrs/entity/param/ShuttleTask.java
@@ -4,9 +4,19 @@ @Data public class ShuttleTask { //wms任务号 private String taskNo; private String destLoc; private String originSite; //源站 private Integer sourceStaNo; //目标站 private Integer staNo; //目标库位 private String locNo; private String barcode; private String priority; } src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -45,7 +45,7 @@ @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ private void execute() { List<WrkMast> wrkMasts = wrkMastService.selectToBeCompleteData(); if (wrkMasts.isEmpty()) { return; @@ -63,57 +63,58 @@ } } // @Scheduled(cron = "0/3 * * * * ? ") //入库任务下发 // private void ShuttleInTaskSend(){ // List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() // .in("io_type", 101,110,103,104,107) // .eq("wrk_sts", 105).eq("crn_no",7)); // if (!Cools.isEmpty(wrkMasts1)){ // return; // } // List<WrkMast> wrkMasts = wrkMastService.selectToShuttleTask(); // if (wrkMasts.isEmpty()) { // return; // } // try { // for (WrkMast wrkMast : wrkMasts) { // LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo())); // if (locMast == null) { // throw new CoolException("下发四向车wcs任务失败"); // } // String loc = (locMast.getRow1()-16)+"-"+locMast.getBay1()+"-"+locMast.getLev1(); // ShuttleTask param = new ShuttleTask(); // param.setTaskNo(wrkMast.getWrkNo().toString()); // param.setDestLoc(loc); // param.setOriginSite("31002"); // param.setBarcode(wrkMast.getBarcode()); // param.setPriority("11"); // String response = new HttpHandler.Builder() // .setUri(shuttleWcsUrl) // .setPath("/openapi/createInTask") // .setJson(JSON.toJSONString(param)) // .build() // .doPost(); // JSONObject jsonObject = JSON.parseObject(response); // Integer code = jsonObject.getInteger("code"); // if (code.equals(200)) { // wrkMast.setWrkSts(105L); // if (!wrkMastService.updateById(wrkMast)) { // log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo()); // } // } // } // }catch (Exception e){ // throw new CoolException("下发四向车wcs任务失败"); // } // // } @Scheduled(cron = "0/3 * * * * ? ") //入库任务下发 private void ShuttleInTaskSend() { List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() .in("io_type", 101, 110, 103, 104, 107) .eq("wrk_sts", 105).eq("crn_no", 7)); if (!Cools.isEmpty(wrkMasts1)) { return; } List<WrkMast> wrkMasts = wrkMastService.selectToShuttleTask(); if (wrkMasts.isEmpty()) { return; } try { for (WrkMast wrkMast : wrkMasts) { LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo())); if (locMast == null) { throw new CoolException("下发四向车wcs任务失败"); } String loc = (locMast.getRow1() - 4) + "-" + locMast.getBay1() + "-" + locMast.getLev1(); ShuttleTask param = new ShuttleTask(); param.setTaskNo(wrkMast.getWrkNo().toString()); param.setLocNo(loc); param.setSourceStaNo(wrkMast.getSourceStaNo()); param.setStaNo(wrkMast.getStaNo()); param.setBarcode(wrkMast.getBarcode()); //param.setPriority("11"); String response = new HttpHandler.Builder() .setUri(shuttleWcsUrl) .setPath("/openapi/createInTask") .setJson(JSON.toJSONString(param)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); Integer code = jsonObject.getInteger("code"); if (code.equals(200)) { wrkMast.setWrkSts(105L); if (!wrkMastService.updateById(wrkMast)) { log.error("工作档[workNo={}]标记待处理失败", wrkMast.getWrkNo()); } } } } catch (Exception e) { throw new CoolException("下发四向车wcs任务失败"); } } @Scheduled(cron = "0/3 * * * * ? ") //出库库任务下发 private void ShuttleOutTaskSend(){ private void ShuttleOutTaskSend() { List<WrkMast> wrkMasts1 = wrkMastService.selectList(new EntityWrapper<WrkMast>() .in("io_type", 1,10,53,54,57).eq("crn_no",7)); if (!Cools.isEmpty(wrkMasts1)){ .in("io_type", 1, 10, 53, 54, 57).eq("crn_no", 7)); if (!Cools.isEmpty(wrkMasts1)) { return; } List<WrkMast> wrkMasts = wrkMastService.selectToShuttleOutTask(); @@ -126,13 +127,12 @@ if (locMast == null) { throw new CoolException("下发四向车wcs任务失败"); } String loc = (locMast.getRow1()-16)+"-"+locMast.getBay1()+"-"+locMast.getLev1(); String loc = (locMast.getRow1() - 4) + "-" + locMast.getBay1() + "-" + locMast.getLev1(); ShuttleOutTask param = new ShuttleOutTask(); param.setTaskNo(wrkMast.getWrkNo().toString()); param.setOriginLoc(loc); param.setOriginSite("31004"); param.setDestSite("31002"); param.setPriority("11"); param.setSourceLocNo(loc); param.setStaNo(wrkMast.getStaNo()); //param.setPriority("11"); String response = new HttpHandler.Builder() .setUri(shuttleWcsUrl) .setPath("/openapi/createOutTask") @@ -148,15 +148,15 @@ } } } }catch (Exception e){ } catch (Exception e) { throw new CoolException("下发四向车wcs任务失败"); } } // @Scheduled(cron = "0/3 * * * * ? ") //移库任务下发 private void ShuttleMoveTaskSend(){ List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 11).eq("io_type",11)); // @Scheduled(cron = "0/3 * * * * ? ") //移库任务下发 private void ShuttleMoveTaskSend() { List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 11).eq("io_type", 11)); if (wrkMasts.isEmpty()) { return; } @@ -167,8 +167,8 @@ if (originLoc == null || destLoc == null) { throw new CoolException("下发四向车wcs任务失败"); } String originLoc1 = (originLoc.getRow1()-16)+"-"+originLoc.getBay1()+"-"+originLoc.getLev1(); String destLoc1 = (destLoc.getRow1()-16)+"-"+destLoc.getBay1()+"-"+destLoc.getLev1(); String originLoc1 = (originLoc.getRow1() - 16) + "-" + originLoc.getBay1() + "-" + originLoc.getLev1(); String destLoc1 = (destLoc.getRow1() - 16) + "-" + destLoc.getBay1() + "-" + destLoc.getLev1(); ShuttleMoveTask param = new ShuttleMoveTask(); param.setTaskNo(wrkMast.getWrkNo().toString()); param.setOriginLoc(originLoc1); @@ -190,12 +190,11 @@ } } } }catch (Exception e){ } catch (Exception e) { throw new CoolException("下发四向车wcs任务失败"); } } } src/main/java/com/zy/asrs/utils/Utils.java
@@ -528,16 +528,11 @@ //满板正常入库 switch (curRow){ case 1: necessaryParameters[1] = 4; //curRow 最深库位排 necessaryParameters[1] = 6; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 3; //nearRow 最浅库位排 break; case 4: necessaryParameters[1] = 5; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 6; //nearRow 最浅库位排 break; case 5: case 6: necessaryParameters[1] = 8; //curRow 最深库位排 necessaryParameters[2] = sCrnNo; //crnNo 堆垛机号 necessaryParameters[3] = 8; //nearRow 最浅库位排 src/main/java/com/zy/common/service/CommonService.java
@@ -362,6 +362,7 @@ } // 更新库位排号 if (Cools.isEmpty(locMast)){ rowLastno.setCurrentRow(curRow); rowLastnoService.updateById(rowLastno); } } @@ -870,7 +871,7 @@ // 相似工作档案 --- 同天同规格物料 if (!Cools.isEmpty(matnr) && (staDescId == 1 || staDescId == 11 || staDescId == 111) && !mixture ) { if (!Cools.isEmpty(matnr) && !Cools.isEmpty(batch) && (staDescId == 1 || staDescId == 11 || staDescId == 111) && !mixture ) { //查询相似工作档案 List<WrkMast> wrkMasts = wrkMastService.selectWrkMastWrkDetlMatnrBatch(staDescId, matnr, batch,grade, crnNo); int nearbay = 0; //相似工作档案 目标库位列 @@ -878,17 +879,19 @@ for (WrkMast wrkMast:wrkMasts){ LocMast locMastWrk = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo())); List<LocMast> locMasts = new ArrayList<>(); if (locMastWrk.getBay1() >=5 && locMastWrk.getBay1()<=6){ if (locMastWrk.getBay1() >=3 && locMastWrk.getBay1()<=6){ locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("gro1", locMastWrk.getGro1()) .ge("bay1",3).le("bay1",6) .eq("crn_no", 7) .eq("loc_type1",locTypeDto.getLocType1()) .eq("lev1",locMastWrk.getLev1()) .orderBy("bay1", true)); }else { locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("gro1", locMastWrk.getGro1()) .eq("bay1", locMastWrk.getBay1()) .eq("crn_no", 7) .eq("loc_type1",locTypeDto.getLocType1()) .eq("lev1",locMastWrk.getLev1()) .orderBy("bay1", false)); } if (Cools.isEmpty(locMasts)) { @@ -959,15 +962,15 @@ } if (Utils.BooleanWhsTypeStaIoType(rowLastno)){ List<LocMast> locMasts1 = null; if (nearRow == 6){ if (nearRow == 3 && curRow == 6){ locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>() .eq("gro1", locMast1.getGro1()) .ge("bay1",3).le("bay1",6) .eq("crn_no",7) .eq("loc_type1",locTypeDto.getLocType1()) .orderBy("bay1",true)); }else { locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>() .eq("gro1", locMast1.getGro1()) .eq("bay1", nearRow) .eq("crn_no",7) .eq("loc_type1",locTypeDto.getLocType1()) .orderBy("bay1",false)); src/main/java/com/zy/common/web/WcsController.java
@@ -530,15 +530,7 @@ List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList()); boolean mixtrue =false; if (matnrs.size() == 1 && batchs.size() == 1) { }else if(matnrs.size() > 1 && batchs.size() == 1) { mixtrue = true; }else if(matnrs.size() == 1 && batchs.size() > 1) { mixtrue = true; }else if(matnrs.size() > 1 && batchs.size() > 1) { mixtrue = true; } StartupDto dto = commonService.getLocNo( 1, devpNo, matnrs.get(0),batchs.get(0),null, locTypeDto, mixtrue); if (Cools.isEmpty(dto)){ throw new CoolException("未找到库位信息"); src/main/resources/application.yml
@@ -105,10 +105,10 @@ url: "" taskCreatePath: "" shuttleWcs: url: "10.0.100.140:8088/wcs" url: "192.168.10.156:9090/rcs" loc-move: enable: true enable: false crn1: true crn2: false crn3: false src/main/webapp/static/js/mat/mat.js
@@ -333,7 +333,8 @@ for (let i=0;i<res.data.length;i++){ var templateDom = $("#templatePreview"+templateNo); var className = templateDom.attr("class"); var param = "编码:"+res.data[i].matnr+";名称:"+res.data[i].maktx+";规格:"+res.data[i].specs; var param = res.data[i].matnr; //var param = "编码:"+res.data[i].matnr+";名称:"+res.data[i].maktx+";规格:"+res.data[i].specs; var encodeUrl = encodeURIComponent(param); if (className === 'template-barcode') { res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=1¶m="+encodeUrl; src/main/webapp/views/mat/mat.html
@@ -157,7 +157,7 @@ <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/mat/mat.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/mat/mat.js?v=1" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/tagTree.js" charset="utf-8"></script> <!-- 表单弹窗 -->