From a936c187f9d7f389a711e001739384dcbd9278e2 Mon Sep 17 00:00:00 2001 From: zwl <1051256694@qq.com> Date: 星期一, 31 三月 2025 13:50:53 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/controller/LocMastController.java | 1 src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java | 95 ++++++ src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 50 +++ src/main/java/com/zy/asrs/controller/OpenController.java | 136 +++++--- src/main/java/com/zy/asrs/task/GetEquipmentStatus.java | 74 ++++ src/main/java/com/zy/asrs/entity/result/StorageResult.java | 3 src/main/resources/mapper/LocDetlMapper.xml | 2 src/main/resources/mapper/WrkMastMapper.xml | 3 src/main/java/com/zy/asrs/entity/BasCrnp.java | 4 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | 30 +- src/main/java/com/zy/common/web/WcsController.java | 239 +++++++++++---- pom.xml | 2 src/main/java/com/zy/asrs/entity/param/CarryParam.java | 46 +++ src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java | 91 ++++++ src/main/java/com/zy/common/web/param/SearchLocParam.java | 5 src/main/java/com/zy/asrs/entity/LocDetl.java | 2 src/main/java/com/zy/asrs/task/OutWorkScheduler.java | 41 ++ src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 8 src/main/java/com/zy/asrs/entity/Mat.java | 4 src/main/java/com/zy/asrs/controller/MatController.java | 2 src/main/webapp/static/js/common.js | 2 src/main/java/com/zy/asrs/controller/OutController.java | 47 ++ src/main/resources/application.yml | 12 src/main/webapp/static/image/logo.png | 0 24 files changed, 735 insertions(+), 164 deletions(-) diff --git a/pom.xml b/pom.xml index 095d9cd..4c54898 100644 --- a/pom.xml +++ b/pom.xml @@ -114,7 +114,7 @@ </dependencies> <build> - <finalName>htwms</finalName> + <finalName>lfdsxkwms</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java index 5a9fba3..bbcb7e9 100644 --- a/src/main/java/com/zy/asrs/controller/LocMastController.java +++ b/src/main/java/com/zy/asrs/controller/LocMastController.java @@ -64,6 +64,7 @@ if (!Cools.isEmpty(orderByField)) { wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); } + wrapper.orderBy("loc_attribute",false); return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper)); } diff --git a/src/main/java/com/zy/asrs/controller/MatController.java b/src/main/java/com/zy/asrs/controller/MatController.java index 41e0df1..bda8320 100644 --- a/src/main/java/com/zy/asrs/controller/MatController.java +++ b/src/main/java/com/zy/asrs/controller/MatController.java @@ -89,7 +89,7 @@ public R pdaSearch(@RequestParam(required = false) String condition) { EntityWrapper<Mat> wrapper = new EntityWrapper<>(); if (!Cools.isEmpty(condition)) { - wrapper.like("matnr", condition).or().like("maktx", condition); + wrapper.like("matnr", condition).or().like("maktx", condition).or().like("specs", condition); } wrapper.orderBy("create_time", false); List<Mat> mats = matService.selectList(wrapper); diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index 4217e4e..24bd3a6 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -8,6 +8,7 @@ import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.param.*; import com.zy.asrs.service.OpenService; +import com.zy.asrs.service.WorkService; import com.zy.asrs.service.WrkMastService; import com.zy.common.model.DetlDto; import com.zy.common.web.BaseController; @@ -38,12 +39,14 @@ private OpenService openService; @Autowired private WrkMastService wrkMastService; + @Autowired + private WorkService workService; @PostMapping("/order/matSync/default/v1") @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛") public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey, @RequestBody(required = false) MatSyncParam param, - HttpServletRequest request){ + HttpServletRequest request) { auth(appkey, param, request); if (Cools.isEmpty(param)) { return R.parse(BaseRes.PARAM); @@ -218,30 +221,30 @@ * 浠诲姟寮�濮� */ @RequestMapping("/start/task") - public HashMap<String ,Object> startTask(@RequestBody HashMap<String,Object> map) { - String taskNo = map.get("TaskNo")+""; - HashMap<String ,Object> map1 = new HashMap<>(); - if(Cools.isEmpty(taskNo)){ + public HashMap<String, Object> startTask(@RequestBody HashMap<String, Object> map) { + String taskNo = map.get("TaskNo") + ""; + HashMap<String, Object> map1 = new HashMap<>(); + if (Cools.isEmpty(taskNo)) { map1.put("ReturnStatus", "1"); map1.put("ErrorMessage", "浠诲姟鍙蜂负绌�"); - }else{ - WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",Integer.valueOf(taskNo))); - if(wrkMast == null){ + } else { + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo))); + if (wrkMast == null) { map1.put("ReturnStatus", "1"); - map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�"+taskNo); - }else{ - if(wrkMast.getIoType()==1){ + map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo); + } else { + if (wrkMast.getIoType() == 1) { wrkMast.setWrkSts(3L);//鍏ュ簱寮�濮� - }else if(wrkMast.getIoType()==11){ + } else if (wrkMast.getIoType() == 11) { wrkMast.setWrkSts(13L);//鍑哄簱寮�濮� } wrkMast.setModiTime(new Date()); - if(wrkMastService.updateById(wrkMast)){ + if (wrkMastService.updateById(wrkMast)) { map1.put("ReturnStatus", "0"); map1.put("ErrorMessage", ""); - }else{ + } else { map1.put("ReturnStatus", "1"); - map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�"+wrkMast); + map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast); } } } @@ -252,62 +255,97 @@ * 鎼繍鍒扮洰鐨勫湴 */ @RequestMapping("/destination/task") - public HashMap<String ,Object> destinationTask(@RequestBody HashMap<String,Object> map) { - String taskNo = map.get("TaskNo")+""; - HashMap<String ,Object> map1 = new HashMap<>(); - if(Cools.isEmpty(taskNo)){ + public HashMap<String, Object> destinationTask(@RequestBody HashMap<String, Object> map) { + String taskNo = map.get("TaskNo") + ""; + HashMap<String, Object> map1 = new HashMap<>(); + if (Cools.isEmpty(taskNo)) { map1.put("ReturnStatus", "1"); map1.put("ErrorMessage", "浠诲姟鍙蜂负绌�"); - }else{ - WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",Integer.valueOf(taskNo))); - if(wrkMast == null){ - map1.put("ReturnStatus", "1"); - map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�"+taskNo); - }else{ - if(wrkMast.getIoType()==1){ - wrkMast.setWrkSts(4L);//浠诲姟缁撴潫 - }else if(wrkMast.getIoType()==11){ - wrkMast.setWrkSts(13L);//鍑哄簱鍒扮珯鐐逛笂 - } - wrkMast.setModiTime(new Date()); - if(wrkMastService.updateById(wrkMast)){ - map1.put("ReturnStatus", "0"); - map1.put("ErrorMessage", ""); - }else{ + } else { + //浠诲姟瀹屾垚 + if (map.get("Result").equals(1)) { + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo))); + if (wrkMast == null) { map1.put("ReturnStatus", "1"); - map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�"+wrkMast); + map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo); + } else { + if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10) { + wrkMast.setWrkSts(4L);//浠诲姟缁撴潫 + } else if (wrkMast.getIoType() == 101) { + wrkMast.setWrkSts(13L);//鍑哄簱鍒扮珯鐐逛笂 + } else if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { + wrkMast.setWrkSts(4L);//4.浠诲姟缁撴潫 + } else if (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 110) { + wrkMast.setWrkSts(14L); + } + wrkMast.setModiTime(new Date()); + if (wrkMastService.updateById(wrkMast)) { + map1.put("ReturnStatus", "0"); + map1.put("ErrorMessage", ""); + } else { + map1.put("ReturnStatus", "1"); + map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast); + } } + } else { + //浠诲姟鍙栨秷 + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo))); + if (wrkMast == null) { + map1.put("ReturnStatus", "1"); + map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo); + return map1; + } + workService.cancelWrkMast(String.valueOf(wrkMast.getWrkNo()),9999L); } } return map1; } /** - * 鎼繍鍒扮洰鐨勫湴 + * 鍑哄簱---鐩殑鍦版惉绂� */ @RequestMapping("/leave/task") - public HashMap<String ,Object> leaveTask(@RequestBody HashMap<String,Object> map) { - String taskNo = map.get("TaskNo")+""; - HashMap<String ,Object> map1 = new HashMap<>(); - if(Cools.isEmpty(taskNo)){ + public HashMap<String, Object> leaveTask(@RequestBody HashMap<String, Object> map) { + String taskNo = map.get("TaskNo") + ""; + HashMap<String, Object> map1 = new HashMap<>(); + if (Cools.isEmpty(taskNo)) { map1.put("ReturnStatus", "1"); map1.put("ErrorMessage", "浠诲姟鍙蜂负绌�"); - }else{ - WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",Integer.valueOf(taskNo))); - if(wrkMast == null){ + } else { + + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo))); + if (wrkMast == null) { map1.put("ReturnStatus", "1"); - map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�"+taskNo); - }else{ + map1.put("ErrorMessage", "娌℃湁鎵惧埌璇ヤ换鍔″彿锛�" + taskNo); + return map1; + } + if ((wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 110) && wrkMast.getWrkSts() != 14) { wrkMast.setWrkSts(14L);//鍑哄簱鍒扮珯鐐逛笂 wrkMast.setModiTime(new Date()); - if(wrkMastService.updateById(wrkMast)){ + if (wrkMastService.updateById(wrkMast)) { map1.put("ReturnStatus", "0"); map1.put("ErrorMessage", ""); - }else{ + } else { map1.put("ReturnStatus", "1"); - map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�"+wrkMast); + map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast); + } + } else if (wrkMast.getIoType() != 101) { + map1.put("ReturnStatus", "0"); + map1.put("ErrorMessage", ""); + return map1; + } else { + wrkMast.setWrkSts(14L);//鍑哄簱鍒扮珯鐐逛笂 + wrkMast.setModiTime(new Date()); + if (wrkMastService.updateById(wrkMast)) { + map1.put("ReturnStatus", "0"); + map1.put("ErrorMessage", ""); + } else { + map1.put("ReturnStatus", "1"); + map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�" + wrkMast); } } + + } return map1; } diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java index 0d2ba7d..2853918 100644 --- a/src/main/java/com/zy/asrs/controller/OutController.java +++ b/src/main/java/com/zy/asrs/controller/OutController.java @@ -1,16 +1,19 @@ package com.zy.asrs.controller; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.entity.BasDevp; import com.zy.asrs.entity.LocDetl; +import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.service.*; import com.zy.common.model.LocDto; import com.zy.common.model.TaskDto; import com.zy.common.web.BaseController; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -23,7 +26,7 @@ /** * Created by vincent on 2022/3/26 */ - +@Slf4j @RestController public class OutController extends BaseController { @@ -66,17 +69,37 @@ if (issued <= 0.0D) { continue; } List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); for (LocDetl locDetl : locDetls) { - if (issued > 0) { - LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), - issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued); - List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103); - locDto.setStaNos(staNos); - locDtos.add(locDto); - exist.add(locDetl.getLocNo()); - // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 - issued = issued - locDetl.getAnfme(); - } else { - break; + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo())); + if(locMast==null){ + R.error("娌℃湁鎵惧埌璇ュ簱浣嶏細"+locDetl.getLocNo()); + } + List<LocMast> locMasts=locMastService.selectList(new EntityWrapper<LocMast>() + .eq("group1",locMast.getGroup1()) + .eq("loc_sts","F") + .orderBy("loc_attribute",false)); + for (LocMast locMast1 : locMasts) { + LocDetl locDetl1 = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast1.getLocNo())); + if(locDetl1==null){ + return R.error(locMast1.getLocNo()+"娌℃湁鎵惧埌鐗╂枡"); + } + if (!locDetl1.getMatnr().equals(locDetl.getMatnr())) { + log.error(locMast1.getGroup1()+"宸烽亾鐨勭"+locMast1.getLocAttribute()+"娣辨祬搴撲綅鍙峰拰鍚屽贩閬撶墿鏂欎笉鍚�"); + break; + } + if (issued > 0) { + LocDto locDto = new LocDto(locDetl1.getLocNo(), locDetl1.getMatnr(), locDetl1.getMaktx(), locDetl1.getBatch(), orderDetl.getOrderNo(), + issued >= locDetl1.getAnfme() ? locDetl1.getAnfme() : issued); + List<Integer> staNos = new ArrayList<>(); + staNos.add(100); + staNos.add(200); + locDto.setStaNos(staNos); + locDtos.add(locDto); + exist.add(locDetl.getLocNo()); + // 鍓╀綑寰呭嚭鏁伴噺閫掑噺 + issued = issued - locDetl.getAnfme(); + } else { + break; + } } } if (issued > 0) { diff --git a/src/main/java/com/zy/asrs/entity/BasCrnp.java b/src/main/java/com/zy/asrs/entity/BasCrnp.java index eb4f9df..8d368db 100644 --- a/src/main/java/com/zy/asrs/entity/BasCrnp.java +++ b/src/main/java/com/zy/asrs/entity/BasCrnp.java @@ -50,8 +50,8 @@ /** * 鐘舵�� * 1.鑱旀満 - * 2.鎵嬪姩 - * 3.鍏呯數涓� + * 0.鎵嬪姩 + * 2.鍏呯數涓� */ @ApiModelProperty(value= "鐘舵��") @TableField("crn_sts") diff --git a/src/main/java/com/zy/asrs/entity/LocDetl.java b/src/main/java/com/zy/asrs/entity/LocDetl.java index 0556824..0b63f8a 100644 --- a/src/main/java/com/zy/asrs/entity/LocDetl.java +++ b/src/main/java/com/zy/asrs/entity/LocDetl.java @@ -67,7 +67,7 @@ @ApiModelProperty(value= "鍗曚綅") private String unit; - @ApiModelProperty(value= "鍗曚环") + @ApiModelProperty(value= "搴撳瓨鏁伴噺") private Double price; @ApiModelProperty(value= "sku") diff --git a/src/main/java/com/zy/asrs/entity/Mat.java b/src/main/java/com/zy/asrs/entity/Mat.java index edeaf84..e77a43b 100644 --- a/src/main/java/com/zy/asrs/entity/Mat.java +++ b/src/main/java/com/zy/asrs/entity/Mat.java @@ -86,10 +86,10 @@ private String specs; /** - * 鍨嬪彿 + * 鍥惧彿 */ @ApiModelProperty(value= "鍨嬪彿") - @ExcelProperty(value = "鍨嬪彿") + @ExcelProperty(value = "鍥惧彿") private String model; /** diff --git a/src/main/java/com/zy/asrs/entity/param/CarryParam.java b/src/main/java/com/zy/asrs/entity/param/CarryParam.java new file mode 100644 index 0000000..63dc5ce --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/CarryParam.java @@ -0,0 +1,46 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +@Data +public class CarryParam { + //宸ヤ綔鍙� + private String TaskNo; + + //鍏ュ嚭搴撶被鍨� + private Integer StereoscopicTaskType; + + //浼樺厛绾� + private Integer Priority; + + //瀹瑰櫒缂栫爜 + private String BoxNo; + + //婧愯揣浣嶆帓缂栧彿 + private Integer OriginalRowNo; + + //婧愯揣浣嶅眰缂栧彿 + private Integer OriginalFloorNo; + + //婧愯揣浣嶅垪缂栧彿 + private Integer OriginalColumnNo; + + //鐩爣搴撲綅鎺掔紪鍙� + private Integer GoalRowNo; + + //鐩爣搴撲綅灞傜紪鍙� + private Integer GoalFloorNo; + + //鐩爣搴撲綅鍒楃紪鍙� + private Integer GoalColumnNo; + + //璧风偣 + private String startPoint; + + //缁堢缂栧彿锛堣緭閫佺嚎涓婃煇涓�鐐逛綅锛� + private String TerminalNo; + + //澶囨敞 + private String meno; + +} diff --git a/src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java b/src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java new file mode 100644 index 0000000..5c126d6 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/GetShuttleStatusParam.java @@ -0,0 +1,91 @@ +package com.zy.asrs.entity.param; + +import com.baomidou.mybatisplus.annotations.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class GetShuttleStatusParam { + + /** + * 灏忚溅鍙� + */ + private Integer shuttleNo; + + /** + * 鐘舵�� 1: 姝e父 0: 鎵嬪姩 2.鍏呯數涓� + */ + @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 鎵嬪姩 2.鍏呯數涓� ") + private Integer status; + + /** + * 灏忚溅鎵�鍦ㄥ眰 + */ + @ApiModelProperty(value= "灏忚溅鎵�鍦ㄥ眰") + @TableField("charge_line") + private Integer chargeLine; + + + /** + * 灏忚溅寮傚父鐮� + */ + @ApiModelProperty(value= "灏忚溅寮傚父鐮�") + @TableField("errorCode") + private Integer errorCode; + + /** + * 灏忚溅鐘舵�� + * <p> + * IDLE(1, "绌洪棽"), + * WORKING(2, "浣滀笟涓�"), + * WAITING(3, "绛夊緟纭"), + * CHARGING(4, "鍏呯數涓�"), + * CHARGING_WAITING(5, "鍏呯數浠诲姟绛夊緟纭"), + * FIXING(6, "鏁呴殰淇涓�"), + * OFFLINE(7, "绂荤嚎"), + */ + private Integer protocolStatus; + /** + * 褰撳墠浜岀淮鐮� + * 0涓虹┖ + */ + private String currentCode; + + /** + * 鏄惁涓哄厖鐢电姸鎬� + */ + private Boolean hasCharge; + + + + + public String getProtocolStatus$() { + String protocolStatus$ = ""; + switch (this.protocolStatus) { + case 1: + protocolStatus$ = "绌洪棽"; + break; + case 2: + protocolStatus$ = "浣滀笟涓�"; + break; + case 3: + protocolStatus$ = "绛夊緟纭"; + break; + case 4: + protocolStatus$ = "鍏呯數涓�"; + break; + case 5: + protocolStatus$ = "鍏呯數浠诲姟绛夊緟纭"; + break; + case 6: + protocolStatus$ = "鏁呴殰淇涓�"; + break; + case 7: + protocolStatus$ = "绂荤嚎"; + break; + + + } + return protocolStatus$; + } +} diff --git a/src/main/java/com/zy/asrs/entity/result/StorageResult.java b/src/main/java/com/zy/asrs/entity/result/StorageResult.java index bdc456d..f9f56e5 100644 --- a/src/main/java/com/zy/asrs/entity/result/StorageResult.java +++ b/src/main/java/com/zy/asrs/entity/result/StorageResult.java @@ -8,12 +8,15 @@ private Integer ReturnStatus = 0; private Results Results; + @Data public static class Results{ //搴撲綅鍙� private String ShelfUnitId; //浠诲姟鍙� private Integer TaskNo; + + private String barcode; } } diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java index 4664557..a254a5c 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -232,7 +232,7 @@ wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� - wrkMast.setIoPri(13D); // 浼樺厛绾э細13 + wrkMast.setIoPri(10.0+locMast.getLocAttribute()); // 浼樺厛绾� wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� @@ -300,6 +300,7 @@ StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo()); // 鐢熸垚宸ヤ綔鍙� int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); + int yz=staDesc.getStnNo()*10+Integer.valueOf(taskDto.getLocNo().substring(6)); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -308,7 +309,7 @@ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� wrkMast.setIoPri(13D); // 浼樺厛绾э細13 wrkMast.setCrnNo(locMast.getCrnNo()); - wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 + wrkMast.setSourceStaNo(yz); // 婧愮珯 wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣� wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 @@ -331,6 +332,7 @@ if (orderDetl == null) { orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); } + LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo()).eq("matnr", locDto.getMatnr())); Mat mat=matService.selectOne(new EntityWrapper<Mat>().eq("matnr",locDto.getMatnr())); WrkDetl wrkDetl = new WrkDetl(); wrkDetl.sync(orderDetl); @@ -340,6 +342,7 @@ wrkDetl.setBatch(locDto.getBatch()); wrkDetl.setOrderNo(locDto.getOrderNo()); wrkDetl.setModel(mat.getModel()); + wrkDetl.setPrice(locDetl.getAnfme());//搴撳瓨鏁伴噺 wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺 wrkDetl.setAppeTime(now); wrkDetl.setAppeUser(userId); @@ -465,6 +468,7 @@ wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔� wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceLocNo(locNo); // 婧愬簱浣� + wrkMast.setIoPri(10.0+locMast.getLocAttribute());//浼樺厛绾� wrkMast.setFullPlt("N"); // 婊℃澘锛歒 wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� diff --git a/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java b/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java new file mode 100644 index 0000000..a1164aa --- /dev/null +++ b/src/main/java/com/zy/asrs/task/GetEquipmentStatus.java @@ -0,0 +1,74 @@ +package com.zy.asrs.task; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.Cools; +import com.zy.asrs.entity.BasCrnp; +import com.zy.asrs.entity.BasDevp; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.entity.param.GetShuttleStatusParam; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.service.BasCrnpService; +import com.zy.asrs.service.BasDevpService; +import com.zy.asrs.service.impl.BasDevpServiceImpl; +import com.zy.asrs.task.core.ReturnT; +import com.zy.common.utils.HttpHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class GetEquipmentStatus { + private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); + @Value("${wcs.address.URL}") + private String addrs; + @Value("${wcs.address.deviceStatus}") + private String deviceStatus; + @Autowired + private BasCrnpService basCrnpService; + @Autowired + private ApiLogService apiLogService; + @Autowired + private BasDevpService basDevpService; + + @Scheduled(cron = "0/3 * * * * ? ") + private void execute() { + //鑾峰彇璁惧淇℃伅 + String response =""; + try { + response = new HttpHandler.Builder() + // .setHeaders(headParam) + .setUri(addrs) + .setPath(deviceStatus) + .build() + .doGet(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.get("code").equals(200)) { + JSONObject data = JSON.parseObject(jsonObject.get("data").toString()); + List<GetShuttleStatusParam> shuttles = JSON.parseArray(data.get("basShuttle").toString(), GetShuttleStatusParam.class); + for (GetShuttleStatusParam shuttle : shuttles) { + + + BasCrnp shuttle1 = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", shuttle.getShuttleNo())); + shuttle1.setCrnSts(shuttle.getStatus());//灏忚溅妯″紡 + shuttle1.setCrnErr(Long.valueOf(shuttle.getErrorCode()));//灏忚溅鎶ヨ + shuttle1.setLev1(shuttle.getChargeLine());//灏忚溅鎵�鍦ㄥ眰 + basCrnpService.updateById(shuttle1); + } + + List<BasDevp> basDevps = JSON.parseArray(data.get("basDevp").toString(), BasDevp.class); + for (BasDevp basDevp : basDevps) { + basDevpService.updateById(basDevp); + } + } + } catch (Exception e) { + log.error("wms璇诲彇wcs灏忚溅鐘舵�佸け璐�"); + } + } +} diff --git a/src/main/java/com/zy/asrs/task/OutWorkScheduler.java b/src/main/java/com/zy/asrs/task/OutWorkScheduler.java new file mode 100644 index 0000000..1bb688d --- /dev/null +++ b/src/main/java/com/zy/asrs/task/OutWorkScheduler.java @@ -0,0 +1,41 @@ +package com.zy.asrs.task; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.service.WrkMastService; +import com.zy.asrs.task.core.ReturnT; +import com.zy.asrs.task.handler.OutWorkHandler; +import com.zy.asrs.task.handler.WorkMastHandler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class OutWorkScheduler { + private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); + + @Autowired + OutWorkHandler outWorkHandler; + @Autowired + WrkMastService wrkMastService; + + /** + * 鍑哄簱浠诲姟涓嬪彂 + */ + @Scheduled(cron = "0/3 * * * * ? ") + private void execute() { + List<WrkMast> wrkMasts=wrkMastService.selectList(new EntityWrapper<WrkMast>() + .eq("wrk_sts",11) + .in("io_type",11,101,103,107,110)); + for(WrkMast wrkMast:wrkMasts){ + ReturnT<String> result = outWorkHandler.start(wrkMast); + if (!result.isSuccess()) { + log.error("wms涓嬪彂鍑哄簱绉诲簱浠诲姟={}缁檞cs涓嬪彂澶辫触", wrkMast.getWrkNo()); + } + } + } +} diff --git a/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java b/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java new file mode 100644 index 0000000..06dd5f1 --- /dev/null +++ b/src/main/java/com/zy/asrs/task/handler/OutWorkHandler.java @@ -0,0 +1,95 @@ +package com.zy.asrs.task.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.LocMast; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.entity.param.CarryParam; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.service.LocMastService; +import com.zy.asrs.service.WrkMastService; +import com.zy.asrs.service.impl.LocMastServiceImpl; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import com.zy.common.utils.HttpHandler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +@Slf4j +@Service +@Transactional +public class OutWorkHandler extends AbstractHandler<String> { + + @Autowired + private LocMastService locMastService; + @Autowired + private ApiLogService apiLogService; + @Value("${wcs.address.URL}") + private String addrs; + @Value("${wcs.address.outboundTaskSend}") + private String outboundTaskSend; + @Autowired + private WrkMastService wrkMastService; + + + public synchronized ReturnT<String> start(WrkMast wrkMast) { + //浼樺厛绾� + LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo())); + int Priority = locMast.getLocAttribute() == null ? 0 : locMast.getLocAttribute(); + + HashMap<String, Object> map = new HashMap<>(); + CarryParam carryParam = new CarryParam(); + carryParam.setBoxNo(wrkMast.getBarcode());//鎵樼洏鐮� + carryParam.setTaskNo(wrkMast.getWrkNo()+"");//浠诲姟鍙� + carryParam.setStereoscopicTaskType(2);//2.鍑哄簱 + carryParam.setPriority(10+Priority);//浼樺厛绾� + carryParam.setOriginalRowNo(locMast.getRow1());//婧愬簱浣嶆帓 + carryParam.setOriginalColumnNo(locMast.getBay1());//婧愬簱浣嶅垪 + carryParam.setOriginalFloorNo(locMast.getLev1());//婧愬簱浣嶅眰 + carryParam.setStartPoint(wrkMast.getStaNo()+""+locMast.getLev1());//婧愮珯 + carryParam.setTerminalNo(wrkMast.getStaNo()+"");//鐩爣绔� + List<CarryParam> carryParamList=new ArrayList<>(); + carryParamList.add(carryParam); + map.put("TaskList",carryParamList); + + String response =""; + Boolean bool =false; + try { + log.info("wms娲惧彂浠诲姟缁檞cs鍑哄簱={}", map); + response = new HttpHandler.Builder() + // .setHeaders(headParam) + .setUri(addrs) + .setPath(outboundTaskSend) + .setJson(JSON.toJSONString(map)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if(jsonObject.get("Code").equals("1")){ + wrkMast.setWrkSts(12L); + wrkMastService.updateById(wrkMast); + bool = true; + } + } catch (Exception e) { + log.error("wcs娲惧彂浠诲姟缁橰CS鍑哄簱澶辫触{},杩斿洖鍊�={}", wrkMast, response); + } finally { + apiLogService.save("wcs娲惧彂浠诲姟缁橰CS鍑哄簱" + , addrs + outboundTaskSend + , null + , "127.0.0.1" + , JSON.toJSONString(map) + , response + , bool + ); + } + return SUCCESS; + + } +} diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java index 4fa9711..32abee8 100644 --- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java @@ -71,27 +71,27 @@ } } // 鎵嬪姩鍏ュ簱鐢熸垚鍗曟嵁 銆� 涓婃姤涓夋柟骞冲彴 銆� - if (!Cools.isEmpty(wrkDetls)) { - if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) { - exceptionHandle("鐢熸垚鎵嬪姩鍏ュ簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } +// if (!Cools.isEmpty(wrkDetls)) { +// if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) { +// exceptionHandle("鐢熸垚鎵嬪姩鍏ュ簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo()); +// } +// } // 鎷f枡鍐嶅叆搴� } else if (wrkMast.getIoType() == 53) { - if (!Cools.isEmpty(wrkDetls)) { - if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { - exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } +// if (!Cools.isEmpty(wrkDetls)) { +// if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { +// exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo()); +// } +// } } // 鍑哄簱 -------------------------------------------------------------------------------- } else if (wrkMast.getWrkSts() == 15) { - if (!Cools.isEmpty(wrkDetls)) { - if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { - exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } +// if (!Cools.isEmpty(wrkDetls)) { +// if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { +// exceptionHandle("鐢熸垚鎵嬪姩鍑哄簱鍗曟嵁[workNo={0}]澶辫触", wrkMast.getWrkNo()); +// } +// } } // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java index 9f8ce99..62ed062 100644 --- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java @@ -35,6 +35,10 @@ private WaitPakinService waitPakinService; @Autowired private OrderDetlService orderDetlService; + @Autowired + private WrkMastLogService wrkMastLogService; + @Autowired + private WrkDetlLogService wrkDetlLogService; public ReturnT<String> start(WrkMast wrkMast) { // 4.鍏ュ簱瀹屾垚 @@ -156,9 +160,16 @@ } for (WrkDetl wrkDetl : wrkDetls53) { - LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); + LocDetl locDetl = new LocDetl(); + locDetl.sync(wrkDetl); + locDetl.setAnfme(wrkDetl.getPrice()-wrkDetl.getAnfme());//鏁伴噺 + locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙� + locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜 + locDetl.setModiTime(now); + locDetl.setAppeTime(now); + locDetl.setPrice(0.0); if (null != locDetl) { - if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { + if (!locDetlService.insert(locDetl)) { // exceptionHandle("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触锛沎workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("鎷f枡鍏ュ簱 ===>> 淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); @@ -184,7 +195,7 @@ } // 淇敼搴撲綅鐘舵�� Q ====>> F - if (locMast.getLocSts().equals("Q")) { + if (locMast.getLocSts().equals("S")) { locMast.setLocSts("F"); locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); @@ -382,6 +393,8 @@ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("鍏ㄦ澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } + // 淇敼宸ヤ綔涓绘。鐘舵�� + wrkMast.setWrkSts(15L); } break; // 绌烘澘鍑哄簱 @@ -397,13 +410,40 @@ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("绌烘澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); } + // 淇敼宸ヤ綔涓绘。鐘舵�� + wrkMast.setWrkSts(15L); + } + break; + //鎷f枡鍜岀洏鐐瑰嚭搴� + case 103: + case 107: + if (locMast.getLocSts().equals("P")) { + locMast.setLocSts("O"); + locMast.setBarcode(""); + locMast.setModiTime(now); + locMast.setIoTime(now); + if (!locMastService.updateById(locMast)) { +// exceptionHandle("绌烘澘鍑哄簱 ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐ワ紱[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg("鎷f枡鍜岀洏鐐瑰嚭搴� ===>> 淇敼婧愬簱浣嶇姸鎬佸け璐�; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); + } + wrkMast.setWrkSts(16L);//绛夊緟鍏ュ簱 + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (!wrkMastLogService.save(wrkMast.getWrkNo())) { + exceptionHandle("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + if(!wrkMast.getEmptyMk().equals("Y")) { + // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 + if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { + exceptionHandle("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); + } + } } break; default: break; } - // 淇敼宸ヤ綔涓绘。鐘舵�� - wrkMast.setWrkSts(15L); + wrkMast.setModiTime(now); if (!wrkMastService.updateById(wrkMast)) { // exceptionHandle("鏇存柊鍑哄簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo()); diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java index 72cd9a1..6f16d15 100644 --- a/src/main/java/com/zy/common/web/WcsController.java +++ b/src/main/java/com/zy/common/web/WcsController.java @@ -46,43 +46,100 @@ private LocDetlService locDetlService; @Autowired private BasCrnpService basCrnpService; + @PostMapping("/pakin/loc/returnWarehouse") + @ResponseBody + public synchronized StorageResult returnWarehouse(@RequestBody(required = false) SearchLocParam param) { + StorageResult storageResult=new StorageResult(); + if (Cools.isEmpty(param.getTaskNo())) { + storageResult.setReturnStatus(1); + storageResult.setErrorMessage("浼犲叆宸ヤ綔鍙蜂负绌�"); + return storageResult; + } + WrkMast wrkMast =wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("wrk_no",param.getTaskNo()) + .in("io_type",103,107)); + if (Cools.isEmpty(wrkMast)){ + storageResult.setReturnStatus(1); + storageResult.setErrorMessage("娌℃湁鎵惧埌鐩樼偣鎷f枡浠诲姟---------"+param.getTaskNo()); + return storageResult; + } + SearchLocParam searchLocParam = new SearchLocParam(); + searchLocParam.setBoxNo(wrkMast.getBarcode()); + searchLocParam.setWcsIoType(1);//婊℃澘 + searchLocParam.setWcsSourceStaNo(wrkMast.getStaNo()); + searchLocParam.setWcsStatus(0); + return getLocNo(searchLocParam); + } + @PostMapping("/pakin/loc/v1") @ResponseBody - public synchronized R getLocNo(@RequestBody(required = false) SearchLocParam param) { + public synchronized StorageResult getLocNo(@RequestBody(required = false) SearchLocParam param) { StorageResult storageResult=new StorageResult(); log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param); if (Cools.isEmpty(param.getWcsIoType())) { - return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�"); + storageResult.setReturnStatus(1); + storageResult.setErrorMessage("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�"); + return storageResult; } if (Cools.isEmpty(param.getWcsSourceStaNo())) { - return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖"); + storageResult.setReturnStatus(1); + storageResult.setErrorMessage("婧愮珯缂栧彿涓嶈兘涓虹┖"); + return storageResult; } + int ioType = 0; List<WaitPakin> waitPakins = null; if (param.getWcsIoType() == 1) { - if (Cools.isEmpty(param.getBoxNo())) { - return R.error("鏉$爜涓嶈兘涓虹┖"); + //鎷f枡鍜岀洏鐐瑰叆搴� + WrkMast wrkMast1037 =wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("barcode", param.getBoxNo()) + .in("io_type",103,107)); + WrkMast wrkMast537 =wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("barcode", param.getBoxNo()) + .in("io_type",53,57)); + if (wrkMast537 != null) { + StorageResult.Results results=new StorageResult.Results(); + results.setTaskNo(wrkMast537.getWrkNo()); + results.setShelfUnitId(wrkMast537.getLocNo()+""); + storageResult.setResults(results); + return storageResult; } - waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBoxNo())); - if (Cools.isEmpty(waitPakins)) { - WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBoxNo()); - if (wrkMast != null && wrkMast.getIoType() == 103) { - return R.parse(CodeRes.PICK_600); + if(Cools.isEmpty(wrkMast1037)) { + if (Cools.isEmpty(param.getBoxNo())) { + storageResult.setReturnStatus(1); + storageResult.setErrorMessage("鏉$爜涓嶈兘涓虹┖"); + return storageResult; } - return R.parse(CodeRes.NO_COMB_700); + waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBoxNo())); + if (Cools.isEmpty(waitPakins)) { + WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBoxNo()); + if (wrkMast != null && wrkMast.getIoType() == 103) { + storageResult.setReturnStatus(1); + storageResult.setErrorMessage(CodeRes.PICK_600); + return storageResult; + } + storageResult.setReturnStatus(1); + storageResult.setErrorMessage(CodeRes.NO_COMB_700); + return storageResult; + } + int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet", param.getBoxNo())); + int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBoxNo())); + if (countLoc > 0 || countWrk > 0) { + storageResult.setReturnStatus(1); + storageResult.setErrorMessage(CodeRes.EXIST_500); + return storageResult; + } + }else { + ioType = wrkMast1037.getIoType(); } - int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBoxNo())); - int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBoxNo())); - if (countLoc > 0 || countWrk > 0) { - return R.error(CodeRes.EXIST_500); - } + } switch (param.getWcsIoType()) { case 1://婊℃墭鐩樺叆搴� assert waitPakins != null; - storageResult = startupFullPutStore(param.getWcsSourceStaNo(), param.getBoxNo(), waitPakins); + storageResult = startupFullPutStore(param.getWcsSourceStaNo(), param.getBoxNo(), waitPakins,ioType); break; case 2://绌烘墭鐩樺叆搴� storageResult = emptyPlateIn(param.getWcsSourceStaNo(), param.getBoxNo()); @@ -91,80 +148,111 @@ break; } log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", storageResult, param.getBoxNo()); - return R.ok().add(storageResult); + return storageResult; } + /** * 鍏ㄦ澘鍏ュ簱 */ @Transactional - public StorageResult startupFullPutStore(Integer devpNo, String barcode, List<WaitPakin> waitPakins) { + public StorageResult startupFullPutStore(Integer devpNo, String barcode, List<WaitPakin> waitPakins,Integer ioType) { StorageResult storageResult=new StorageResult(); Integer[] arr=arr(); - int type=Cools.isEmpty(waitPakins.get(0).getBeBatch())?1:waitPakins.get(0).getBeBatch(); - // 妫�绱㈠簱浣� - LocMast locMast1 =commonService.getLocNo2(waitPakins.get(0),arr,0,type,1); - int workNo = commonService.getWorkNo(0); - Date now = new Date(); - // 鐢熸垚宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); - wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID - wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 - wrkMast.setIoPri(13D); // 浼樺厛绾� - wrkMast.setSourceStaNo(devpNo); - wrkMast.setLocNo(locMast1.getLocNo()); - wrkMast.setBarcode(barcode); // 鎵樼洏鐮� - wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 - wrkMast.setPicking("N"); // 鎷f枡 - wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setEmptyMk("N"); // 绌烘澘 - wrkMast.setLinkMis("Y"); - wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷 - // 鎿嶄綔浜哄憳鏁版嵁 - wrkMast.setAppeTime(now); - wrkMast.setModiTime(now); - boolean res = wrkMastService.insert(wrkMast); - if (!res) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); - } - // 鐢熸垚宸ヤ綔妗f槑缁� - waitPakins.forEach(waitPakin -> { - WrkDetl wrkDetl = new WrkDetl(); - wrkDetl.sync(waitPakin); - wrkDetl.setWrkNo(wrkMast.getWrkNo()); - wrkDetl.setIoTime(wrkMast.getIoTime()); - wrkDetl.setAppeTime(now); - wrkDetl.setModiTime(now); - if (!wrkDetlService.insert(wrkDetl)) { - throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + LocMast locMast1=new LocMast(); + Integer workNo = 0; + //鍒ゆ柇鏄惁鏄嫞鏂欐垨鑰呮槸鐩樼偣 + if(ioType==103||ioType==107) { + WrkDetl wrkDetl=wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("zpallet", barcode)); + + int type=Cools.isEmpty(wrkDetl.getBeBatch())?1:wrkDetl.getBeBatch(); + // 妫�绱㈠簱浣� + WaitPakin waitPakin1=new WaitPakin(); + waitPakin1.sync(wrkDetl); + locMast1 =commonService.getLocNo2(waitPakin1,arr,0,type,1); + + WrkMast wrkMast=wrkMastService.selectByBarcode(barcode); + workNo = wrkMast.getWrkNo(); + int mbz=wrkMast.getStaNo()*10+Integer.valueOf(wrkMast.getSourceLocNo().substring(6)); + String ykw=wrkMast.getLocNo(); + wrkMast.setIoType(ioType-50); + wrkMast.setWrkSts(1L);//鍏ュ簱 + wrkMast.setModiTime(new Date()); + wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯 + wrkMast.setStaNo(mbz); // 鐩爣绔� + wrkMast.setLocNo(locMast1.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� + wrkMast.setSourceLocNo(ykw); // 婧愬簱浣� + wrkMastService.updateById(wrkMast); + }else{ + int type=Cools.isEmpty(waitPakins.get(0).getBeBatch())?1:waitPakins.get(0).getBeBatch(); + // 妫�绱㈠簱浣� + locMast1 =commonService.getLocNo2(waitPakins.get(0),arr,0,type,1); + + //姝e父鍏ュ簱 + workNo = commonService.getWorkNo(0); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setSourceStaNo(devpNo); + wrkMast.setLocNo(locMast1.getLocNo()); + wrkMast.setBarcode(barcode); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } - }); - // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y - Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() - .eq("zpallet", barcode); - WaitPakin setParam = new WaitPakin(); - setParam.setLocNo(locMast1.getLocNo()); - setParam.setIoStatus("Y"); - setParam.setModiTime(now); - if (!waitPakinService.update(setParam, wrapper)) { - throw new CoolException("鏇存柊閫氱煡妗eけ璐�"); + // 鐢熸垚宸ヤ綔妗f槑缁� + waitPakins.forEach(waitPakin -> { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(waitPakin); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + }); + // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y + Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() + .eq("zpallet", barcode); + WaitPakin setParam = new WaitPakin(); + setParam.setLocNo(locMast1.getLocNo()); + setParam.setIoStatus("Y"); + setParam.setModiTime(now); + if (!waitPakinService.update(setParam, wrapper)) { + throw new CoolException("鏇存柊閫氱煡妗eけ璐�"); + } } // 鏇存柊鐩爣搴撲綅鐘舵�� LocMast locMast = locMastService.selectById(locMast1.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 - locMast.setModiTime(now); + locMast.setModiTime(new Date()); if (!locMastService.updateById(locMast)){ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); } } else { throw new CoolException(locMast1.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); } + StorageResult.Results results=new StorageResult.Results(); results.setTaskNo(workNo); results.setShelfUnitId(locMast1.getLocNo()); + results.setBarcode(barcode); storageResult.setResults(results); return storageResult; } @@ -252,6 +340,7 @@ }else{ basCrnp.setTankQty(0); basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",basCrnp.getCrnNo())); + int xx=0; arr[i]=basCrnp.getLev1(); i++; int o=basCrnp.getCrnNo(); @@ -260,18 +349,27 @@ o=1; } basCrnp=basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no",o)); - if(q==1){ + if(Cools.isEmpty(basCrnp)){ + log.error(q+"鍙峰皬杞︽病鏈夋壘鍒�"); + continue; + } + if(basCrnp.getCrnErr()>0||basCrnp.getCrnSts()!=1){ + log.error(q+"鍙峰皬杞︽姤璀︽垨鑰呭湪鍏呯數璺宠繃姝よ溅"); + continue; + } + if(xx==0){ basCrnp.setTankQty(1); basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",o)); } arr[i]=basCrnp.getLev1(); i++; + xx++; } } for (int w=1;w<=7;w++){ boolean boo=true; - for(int g=0;g<count;g++){ + for(int g=0;g<i;g++){ if(arr[g]==w){ boo=false; break; @@ -281,6 +379,7 @@ arr[i]=w; i++; } + if(i==7) break; } return arr; } diff --git a/src/main/java/com/zy/common/web/param/SearchLocParam.java b/src/main/java/com/zy/common/web/param/SearchLocParam.java index 1f058ab..63cb560 100644 --- a/src/main/java/com/zy/common/web/param/SearchLocParam.java +++ b/src/main/java/com/zy/common/web/param/SearchLocParam.java @@ -9,6 +9,9 @@ @Data public class SearchLocParam { + @JSONField(name = "taskNo") + private Integer taskNo; + //鎵樼洏鐮� @JSONField(name = "BoxNo") private String boxNo; @@ -23,7 +26,7 @@ @JSONField(name = "WCSSourceStaNo") private Integer wcsSourceStaNo; - //绌烘澘婊℃澘 + //绌烘澘婊℃澘 1.婊℃澘 2.绌烘澘 @JSONField(name = "WCSIoType") private Integer wcsIoType; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 41e1cf9..dd6748a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -10,7 +10,7 @@ enabled: false datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver - url: jdbc:sqlserver://127.0.0.1:1433;databasename=lfdasrs-sxc + url: jdbc:sqlserver://192.168.0.17:1433;databasename=lfdasrs-sxc username: sa password: sa@123 mvc: @@ -50,6 +50,16 @@ # 涓�涓爢鍨涙満璐熻矗鐨勮揣鏋舵帓鏁� groupCount: 4 +#wcs瀵规帴 +wcs: + #鍦板潃 + address: + URL: http://127.0.0.1:9092/wcs + #鍑哄簱绉诲簱浠诲姟涓嬪彂 + outboundTaskSend: open/outboundTaskSend + + deviceStatus : open/deviceStatus + #erp瀵规帴 erp: #鍦板潃 diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml index 61c2dc6..cad2e7f 100644 --- a/src/main/resources/mapper/LocDetlMapper.xml +++ b/src/main/resources/mapper/LocDetlMapper.xml @@ -120,6 +120,7 @@ and b.loc_sts = 'F' <include refid="stockOutCondition"></include> ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) + </select> <select id="getStockOutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer"> @@ -205,6 +206,7 @@ where 1=1 and b.loc_sts = 'F' and a.matnr = #{matnr} + and b.loc_attribute = 1 <!-- <choose>--> <!-- <when test="batch != null and batch != ''">--> <!-- and a.batch = #{batch}--> diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index ce04079..e4b3d26 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -63,12 +63,13 @@ </resultMap> <select id="selectToBeCompleteData" resultMap="BaseResultMap"> - select * from asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no + select * from asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 104 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no </select> <select id="selectToBeHistoryData" resultMap="BaseResultMap"> select * from asr_wrk_mast where wrk_sts=5 + or wrk_sts=20 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)) diff --git a/src/main/webapp/static/image/logo.png b/src/main/webapp/static/image/logo.png index 094646e..71dd632 100644 --- a/src/main/webapp/static/image/logo.png +++ b/src/main/webapp/static/image/logo.png Binary files differ diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js index d0326bb..deca98e 100644 --- a/src/main/webapp/static/js/common.js +++ b/src/main/webapp/static/js/common.js @@ -1,4 +1,4 @@ -var baseUrl = "/htwms"; +var baseUrl = "/lfdsxkwms"; // 璇︽儏绐楀彛-楂樺害 var detailHeight = '80%'; -- Gitblit v1.9.1