From e9648272bcaee5f64273aca8e41f830a3644628d Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期四, 20 三月 2025 15:41:38 +0800 Subject: [PATCH] 初始化 --- src/main/webapp/views/locMast/locMast.html | 10 src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java | 5 src/main/java/com/zy/asrs/controller/LocMastController.java | 173 ++++++++-- src/main/java/com/zy/asrs/controller/OpenController.java | 104 ++++++ src/main/java/com/zy/asrs/entity/result/StorageResult.java | 19 + src/main/resources/mapper/LocMastMapper.xml | 13 src/main/java/com/zy/asrs/entity/BasCrnp.java | 16 src/main/java/com/zy/common/web/WcsController.java | 182 +++++++--- src/main/resources/mapper/BasCrnpMapper.xml | 1 src/main/java/com/zy/asrs/controller/WorkController.java | 12 src/main/webapp/views/locMast/locMast_detail.html | 12 src/main/java/com/zy/common/web/param/SearchLocParam.java | 22 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 2 src/main/java/com/zy/asrs/mapper/LocMastMapper.java | 2 src/main/webapp/static/js/locMast/locMast.js | 2 src/main/java/com/zy/asrs/entity/LocMast.java | 12 src/main/java/com/zy/asrs/service/LocMastService.java | 3 src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java | 17 src/main/java/com/zy/common/service/CommonService.java | 371 ++++++++++++++++++++- 19 files changed, 822 insertions(+), 156 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/LocMastController.java b/src/main/java/com/zy/asrs/controller/LocMastController.java index 3d7b9b3..5a9fba3 100644 --- a/src/main/java/com/zy/asrs/controller/LocMastController.java +++ b/src/main/java/com/zy/asrs/controller/LocMastController.java @@ -53,22 +53,24 @@ @RequestMapping(value = "/locMast/list/auth") @ManagerAuth - public R list(@RequestParam(defaultValue = "1")Integer curr, - @RequestParam(defaultValue = "10")Integer limit, - @RequestParam(required = false)String orderByField, - @RequestParam(required = false)String orderByType, - @RequestParam Map<String, Object> param){ + public R list(@RequestParam(defaultValue = "1") Integer curr, + @RequestParam(defaultValue = "10") Integer limit, + @RequestParam(required = false) String orderByField, + @RequestParam(required = false) String orderByType, + @RequestParam Map<String, Object> param) { excludeTrash(param); EntityWrapper<LocMast> wrapper = new EntityWrapper<>(); convert(param, wrapper); - if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} + if (!Cools.isEmpty(orderByField)) { + wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); + } return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper)); } - private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ - for (Map.Entry<String, Object> entry : map.entrySet()){ + private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) { + for (Map.Entry<String, Object> entry : map.entrySet()) { String val = String.valueOf(entry.getValue()); - if (val.contains(RANGE_TIME_LINK)){ + if (val.contains(RANGE_TIME_LINK)) { String[] dates = val.split(RANGE_TIME_LINK); wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); @@ -89,17 +91,17 @@ return R.ok(); } - @RequestMapping(value = "/locMast/update/auth") - @ManagerAuth(memo = "搴撲綅淇敼") - public R update(LocMast locMast){ - if (Cools.isEmpty(locMast) || null==locMast.getLocNo()){ + @RequestMapping(value = "/locMast/update/auth") + @ManagerAuth(memo = "搴撲綅淇敼") + public R update(LocMast locMast) { + if (Cools.isEmpty(locMast) || null == locMast.getLocNo()) { return R.error(); } LocMast oldLocMast = locMastService.selectById(locMast.getLocNo()); - if (locX(locMast.getLocNo())){ - if (oldLocMast.getLocSts().equals("X")){ + if (locX(locMast.getLocNo())) { + if (oldLocMast.getLocSts().equals("X")) { return R.error("姝ゅ娌℃湁搴撲綅锛岃鏍规嵁鐜板満鎯呭喌鎿嶄綔锛侊紒锛�"); - }else { + } else { locMast.setLocSts("X"); } } @@ -117,14 +119,41 @@ locMastService.updateById(locMast); return R.ok(); } - public boolean locX(String locNo){ - switch (locNo){ - case "1300601": case "1300602": case "1300603": case "1300604": case "1300605": case "1300606": - case "1300701": case "1300702": case "1300703": case "1300704": case "1300705": case "1300706": - case "1301301": case "1301302": case "1301303": case "1301304": case "1301305": case "1301306": - case "1301401": case "1301402": case "1301403": case "1301404": case "1301405": case "1301406": - case "1302001": case "1302002": case "1302003": case "1302004": case "1302005": case "1302006": - case "1301205": case "1301206": + + public boolean locX(String locNo) { + switch (locNo) { + case "1300601": + case "1300602": + case "1300603": + case "1300604": + case "1300605": + case "1300606": + case "1300701": + case "1300702": + case "1300703": + case "1300704": + case "1300705": + case "1300706": + case "1301301": + case "1301302": + case "1301303": + case "1301304": + case "1301305": + case "1301306": + case "1301401": + case "1301402": + case "1301403": + case "1301404": + case "1301405": + case "1301406": + case "1302001": + case "1302002": + case "1302003": + case "1302004": + case "1302005": + case "1302006": + case "1301205": + case "1301206": case "1302402": case "1402402": return true; @@ -135,12 +164,12 @@ @RequestMapping(value = "/locMast/delete/auth") @ManagerAuth(memo = "搴撲綅鍒犻櫎") - public R delete(@RequestParam String param){ + public R delete(@RequestParam String param) { List<LocMast> list = JSONArray.parseArray(param, LocMast.class); - if (Cools.isEmpty(list)){ + if (Cools.isEmpty(list)) { return R.error(); } - for (LocMast entity : list){ + for (LocMast entity : list) { locMastService.delete(new EntityWrapper<>(entity)); } return R.ok(); @@ -148,7 +177,7 @@ @RequestMapping(value = "/locMast/export/auth") @ManagerAuth(memo = "搴撲綅瀵煎嚭") - public R export(@RequestBody JSONObject param){ + public R export(@RequestBody JSONObject param) { List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); EntityWrapper<LocMast> wrapper = new EntityWrapper<>(); Map<String, Object> map = excludeTrash(param.getJSONObject("locMast")); @@ -164,7 +193,7 @@ wrapper.like("loc_no", condition); Page<LocMast> page = locMastService.selectPage(new Page<>(0, 10), wrapper); List<Map<String, Object>> result = new ArrayList<>(); - for (LocMast locMast : page.getRecords()){ + for (LocMast locMast : page.getRecords()) { Map<String, Object> map = new HashMap<>(); map.put("id", locMast.getLocNo()); map.put("value", locMast.getLocNo()); @@ -177,7 +206,7 @@ @ManagerAuth public R query(@RequestBody JSONObject param) { Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); - if (null != locMastService.selectOne(wrapper)){ + if (null != locMastService.selectOne(wrapper)) { return R.parse(BaseRes.REPEAT).add(getComment(LocMast.class, String.valueOf(param.get("key")))); } return R.ok(); @@ -188,21 +217,21 @@ // @Transactional public R init(LocMastInitParam param) { List<LocMast> list = new ArrayList<>(); - for (int r=param.getStartRow(); r<=param.getEndRow(); r++){ - for (int b=param.getStartBay(); b<=param.getEndBay(); b++) { - for (int l=param.getStartLev(); l<=param.getEndLev(); l++) { + for (int r = param.getStartRow(); r <= param.getEndRow(); r++) { + for (int b = param.getStartBay(); b <= param.getEndBay(); b++) { + for (int l = param.getStartLev(); l <= param.getEndLev(); l++) { // 鑾峰彇搴撲綅鍙� String locNo = String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l); // 鑾峰彇鍫嗗灈鏈哄彿 int crnNo = 0; Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getCrnAmount()); - for (List<Integer> node : shelves.nodes){ + for (List<Integer> node : shelves.nodes) { if (node.contains(r)) { crnNo = shelves.nodes.indexOf(node) + 1; break; } } - Date now = new Date(); + Date now = new Date(); LocMast locMast = new LocMast(); locMast.setLocNo(locNo); locMast.setLocSts("O"); @@ -226,4 +255,76 @@ locMastService.insertBatch(list); return R.ok("鍒濆鍖栨垚鍔�"); } -} + + /** + * 鍒濆鍖栫粍 + */ +// @GetMapping("/locMast/group") + private void group(){ + int i=1; + for(int row=1;row<17;row++){//鍒� + for (int lev=1;lev<8;lev++){//灞� + String s="group1="+i; + locMastService.updateForSet(s,new EntityWrapper<LocMast>().eq("bay1",row).eq("lev1",lev).ge("row1",1).le("row1",3)); + i++; + } + } + System.out.println("i="+i); + for(int row=1;row<17;row++){//鎺� + for (int lev=1;lev<8;lev++){//灞� + String s="group1="+i; + locMastService.updateForSet(s,new EntityWrapper<LocMast>().eq("bay1",row).eq("lev1",lev).ge("row1",5).le("row1",8)); + i++; + } + } + System.out.println("i="+i); + for(int row=1;row<17;row++){//鎺� + for (int lev=1;lev<8;lev++){//灞� + String s="group1="+i; + locMastService.updateForSet(s,new EntityWrapper<LocMast>().eq("bay1",row).eq("lev1",lev).ge("row1",9).le("row1",11)); + i++; + } + } + System.out.println("i="+i); + for(int row=1;row<17;row++){//鎺� + for (int lev=1;lev<8;lev++){//灞� + String s="group1="+i; + locMastService.updateForSet(s,new EntityWrapper<LocMast>().eq("bay1",row).eq("lev1",lev).ge("row1",13).le("row1",16)); + i++; + } + } + System.out.println("i="+i); + for(int row=1;row<17;row++){//鎺� + for (int lev=1;lev<8;lev++){//灞� + String s="group1="+i; + locMastService.updateForSet(s,new EntityWrapper<LocMast>().eq("bay1",row).eq("lev1",lev).ge("row1",17).le("row1",19)); + i++; + } + } + System.out.println("i="+i); + for(int row=1;row<17;row++){//鎺� + for (int lev=1;lev<8;lev++){//灞� + String s="group1="+i; + locMastService.updateForSet(s,new EntityWrapper<LocMast>().eq("bay1",row).eq("lev1",lev).ge("row1",21).le("row1",24)); + i++; + } + } + System.out.println("i="+i); + for(int row=1;row<17;row++){//鎺� + for (int lev=1;lev<8;lev++){//灞� + String s="group1="+i; + locMastService.updateForSet(s,new EntityWrapper<LocMast>().eq("bay1",row).eq("lev1",lev).ge("row1",25).le("row1",27)); + i++; + } + } + System.out.println("i="+i); + for(int row=1;row<17;row++){//鎺� + for (int lev=1;lev<8;lev++){//灞� + String s="group1="+i; + locMastService.updateForSet(s,new EntityWrapper<LocMast>().eq("bay1",row).eq("lev1",lev).ge("row1",29).le("row1",31)); + i++; + } + } + System.out.println("i="+i); + } +} \ No newline at end of file diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java index 1974537..4217e4e 100644 --- a/src/main/java/com/zy/asrs/controller/OpenController.java +++ b/src/main/java/com/zy/asrs/controller/OpenController.java @@ -1,11 +1,14 @@ package com.zy.asrs.controller; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.annotations.AppAuth; import com.core.common.*; import com.core.exception.CoolException; +import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.param.*; import com.zy.asrs.service.OpenService; +import com.zy.asrs.service.WrkMastService; import com.zy.common.model.DetlDto; import com.zy.common.web.BaseController; import lombok.extern.slf4j.Slf4j; @@ -15,6 +18,7 @@ import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; /** @@ -32,6 +36,8 @@ @Autowired private OpenService openService; + @Autowired + private WrkMastService wrkMastService; @PostMapping("/order/matSync/default/v1") @AppAuth(memo = "鍟嗗搧淇℃伅鍚屾鎺ュ彛") @@ -206,5 +212,103 @@ /*********************************鍚屾鐗╂枡妗f鍜岃鍗�****************************************************/ + /*********************************wcs鎺ュ彛瀵规帴****************************************************/ + /** + * 浠诲姟寮�濮� + */ + @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)){ + 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(3L);//鍏ュ簱寮�濮� + }else if(wrkMast.getIoType()==11){ + wrkMast.setWrkSts(13L);//鍑哄簱寮�濮� + } + 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; + } + + /** + * 鎼繍鍒扮洰鐨勫湴 + */ + @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)){ + 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{ + map1.put("ReturnStatus", "1"); + map1.put("ErrorMessage", "鏇存柊浠诲姟鐘舵�佸け璐�"+wrkMast); + } + } + } + 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)){ + 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{ + 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/WorkController.java b/src/main/java/com/zy/asrs/controller/WorkController.java index eae764b..7fd25fd 100644 --- a/src/main/java/com/zy/asrs/controller/WorkController.java +++ b/src/main/java/com/zy/asrs/controller/WorkController.java @@ -144,12 +144,12 @@ return R.ok(); } - @RequestMapping("/create/waitPain/wrkMast/start") - @ManagerAuth(memo = "鐢熸垚浠诲姟") - public R createWaitPainWrkMastStart(@RequestBody List<WaitPakin> list) { - StartupDto startupDto = workService.createWaitPainWrkMastStart(list, getUserId()); - return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo()); - } +// @RequestMapping("/create/waitPain/wrkMast/start") +// @ManagerAuth(memo = "鐢熸垚浠诲姟") +// public R createWaitPainWrkMastStart(@RequestBody List<WaitPakin> list) { +// StartupDto startupDto = workService.createWaitPainWrkMastStart(list, getUserId()); +// return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo()); +// } @RequestMapping("/deal/preHave/start") @ManagerAuth(memo = "鍏堝叆鍝佸鐞�") diff --git a/src/main/java/com/zy/asrs/entity/BasCrnp.java b/src/main/java/com/zy/asrs/entity/BasCrnp.java index 73d632e..eb4f9df 100644 --- a/src/main/java/com/zy/asrs/entity/BasCrnp.java +++ b/src/main/java/com/zy/asrs/entity/BasCrnp.java @@ -13,12 +13,14 @@ import com.core.common.Cools; import com.core.common.SpringUtils; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.Date; @TableName("asr_bas_crnp") +@Data public class BasCrnp implements Serializable { private static final long serialVersionUID = 1L; @@ -47,6 +49,9 @@ /** * 鐘舵�� + * 1.鑱旀満 + * 2.鎵嬪姩 + * 3.鍏呯數涓� */ @ApiModelProperty(value= "鐘舵��") @TableField("crn_sts") @@ -148,14 +153,23 @@ @TableField("emp_in") private String empIn; - @ApiModelProperty(value= "") + /** + * 鎵惧皬杞︽爣璁帮紝浼樺厛鎵炬湁1鐨勫皬杞︽墍鍦ㄥ眰锛屽啀鍘绘壘娌℃湁灏忚溅鐨勬墍鍦ㄥ眰 + */ + @ApiModelProperty(value= "鍏ュ簱鏍囪") @TableField("tank_qty") private Integer tankQty; + + @ApiModelProperty(value= "灏忚溅鎵�鍦ㄥ眰") + @TableField("lev1") + private Integer lev1; @ApiModelProperty(value= "") @TableField("tank_qty1") private Integer tankQty1; + + public BasCrnp() {} public BasCrnp(String inEnable,String outEnable,Integer crnSts,Integer wrkNo,Long crnErr,String frmLocno,Integer frmSta,Integer toSta,String toLocno,Long appeUser,Date appeTime,Long modiUser,Date modiTime,String hpMk,String retrieveMk,String ctlHp,String ctlRest,String empIn,Integer tankQty,Integer tankQty1) { diff --git a/src/main/java/com/zy/asrs/entity/LocMast.java b/src/main/java/com/zy/asrs/entity/LocMast.java index 0ee2575..6b46397 100644 --- a/src/main/java/com/zy/asrs/entity/LocMast.java +++ b/src/main/java/com/zy/asrs/entity/LocMast.java @@ -176,6 +176,18 @@ @TableField("ctn_no") private String ctnNo; + @ApiModelProperty(value= "缁�") + @TableField("group1") + private Integer group1; + + /** + * 娣辨祬搴撲綅鎺掑彿 + * 1.鏈�娣卞簱浣� + * 浠庡皬鍒板ぇ锛岃秺澶х殑搴撲綅瓒婃祬 + */ + @ApiModelProperty(value= "搴撲綅灞炴��") + @TableField("loc_attribute") + private Integer locAttribute; public String getWhsType$(){ BasWhsService service = SpringUtils.getBean(BasWhsService.class); diff --git a/src/main/java/com/zy/asrs/entity/result/StorageResult.java b/src/main/java/com/zy/asrs/entity/result/StorageResult.java new file mode 100644 index 0000000..bdc456d --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/result/StorageResult.java @@ -0,0 +1,19 @@ +package com.zy.asrs.entity.result; + +import lombok.Data; + +@Data +public class StorageResult { + private String ErrorMessage = ""; + private Integer ReturnStatus = 0; + private Results Results; + + @Data + public static class Results{ + //搴撲綅鍙� + private String ShelfUnitId; + //浠诲姟鍙� + private Integer TaskNo; + } + +} diff --git a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java index 208fff4..33877cc 100644 --- a/src/main/java/com/zy/asrs/mapper/LocMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/LocMastMapper.java @@ -22,4 +22,6 @@ Integer selectEmptyLocCount(@Param("locType1") Short locType1, @Param("crnNo") Integer crnNo); List<LocMast> queryShallowLocFMast(@Param("crnNo") Integer crnNo); + + List<LocMast> querySame(@Param("matnr") String matnr,@Param("lev1") Integer lev1); } diff --git a/src/main/java/com/zy/asrs/service/LocMastService.java b/src/main/java/com/zy/asrs/service/LocMastService.java index 00b330b..dc2562c 100644 --- a/src/main/java/com/zy/asrs/service/LocMastService.java +++ b/src/main/java/com/zy/asrs/service/LocMastService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.service.IService; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.LocMast; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -37,4 +38,6 @@ * @return */ List<LocMast> queryShallowLocFMast(Integer crnNo); + + List<LocMast> querySame(String matnr,Integer lev1); } diff --git a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java index babb339..c7cb82b 100644 --- a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java @@ -49,21 +49,12 @@ throw new CoolException(devpNo+"绔欑偣涓嶅瓨鍦�"); } if (pakin) { - if(station.getAutoing()==null || !station.getAutoing().equals("Y")) { - throw new CoolException(devpNo+"绔欑偣涓嶆槸鑷姩鐘舵��"); + if(station.getCanining()==null || !station.getAutoing().equals("Y")) { + throw new CoolException(devpNo+"绔欑偣涓嶆槸鑳藉叆鐘舵��"); } - if(station.getLoading()==null || !station.getLoading().equals("Y")) { - throw new CoolException(devpNo+"绔欑偣鏃犵墿"); - } - if(station.getWrkNo()!=null && station.getWrkNo()>0 && station.getWrkNo() < 9990) { - throw new CoolException(devpNo+"绔欑偣宸叉湁宸ヤ綔鍙�"); - } -// if(!station.getInEnable().equals("Y")) { -// throw new CoolException(devpNo+"绔欑偣涓嶆槸鍙叆鐘舵��"); +// if(wrkMastService.getWorkingMast(devpNo)>0){ +// throw new CoolException(devpNo+"绔欑偣涓嶈兘鍚屾椂鐢熸垚涓ょ瑪鍏ュ簱宸ヤ綔妗�"); // } - if(wrkMastService.getWorkingMast(devpNo)>0){ - throw new CoolException(devpNo+"绔欑偣涓嶈兘鍚屾椂鐢熸垚涓ょ瑪鍏ュ簱宸ヤ綔妗�"); - } } return station; } diff --git a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java index e6ce450..ae76556 100644 --- a/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/LocMastServiceImpl.java @@ -52,4 +52,9 @@ public List<LocMast> queryShallowLocFMast(Integer crnNo) { return this.baseMapper.queryShallowLocFMast(crnNo); } + + @Override + public List<LocMast> querySame(String matnr,Integer lev1) { + return this.baseMapper.querySame(matnr,lev1); + } } 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 a3616dc..4664557 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -957,7 +957,7 @@ } LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short) 1); - return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list); + return null; } @Override diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index 854ca6f..98226ab 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -14,11 +14,13 @@ import com.zy.common.model.Shelves; import com.zy.common.model.StartupDto; import com.zy.common.properties.SlaveProperties; +import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; /** @@ -50,6 +52,7 @@ /** * 鐢熸垚宸ヤ綔鍙� + * * @param wrkMk 0:鍏ュ簱 1 - 3000 ; 1:鎷f枡/骞舵澘/鐩樼偣 3001 - 6000 ; 2: 鍑哄簱 6001 -9000 ; 3:鍏朵粬 9001 -9999 * @return workNo(宸ヤ綔鍙�) */ @@ -62,17 +65,17 @@ int workNo = wrkLastno.getWrkNo(); int sNo = wrkLastno.getSNo(); int eNo = wrkLastno.getENo(); - workNo = workNo>=eNo ? sNo : workNo+1; + workNo = workNo >= eNo ? sNo : workNo + 1; while (true) { WrkMast wrkMast = wrkMastService.selectById(workNo); if (null != wrkMast) { - workNo = workNo>=eNo ? sNo : workNo+1; + workNo = workNo >= eNo ? sNo : workNo + 1; } else { break; } } // 淇敼搴忓彿璁板綍 - if (workNo > 0){ + if (workNo > 0) { wrkLastno.setWrkNo(workNo); wrkLastnoService.updateById(wrkLastno); } @@ -80,7 +83,7 @@ if (workNo == 0) { throw new CoolException("鐢熸垚宸ヤ綔鍙峰け璐ワ紝璇疯仈绯荤鐞嗗憳"); } else { - if (wrkMastService.selectById(workNo)!=null) { + if (wrkMastService.selectById(workNo) != null) { throw new CoolException("鐢熸垚宸ヤ綔鍙�" + workNo + "鍦ㄥ伐浣滄。涓凡瀛樺湪"); } } @@ -89,32 +92,21 @@ /** * 妫�绱㈠簱浣嶅彿 - * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋� - * @param staDescId 璺緞宸ヤ綔绫诲瀷 + * + * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋� + * @param staDescId 璺緞宸ヤ綔绫诲瀷 * @param sourceStaNo 婧愮珯 - * @param matNos 鍟嗗搧缂栧彿闆嗗悎 + * @param matNos 鍟嗗搧缂栧彿闆嗗悎 * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿 */ @Transactional - public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) { -// whsType = getWhsType(sourceStaNo, times); + public StartupDto getLocNo4(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) { StartupDto startupDto = new StartupDto(); - -// if (sourceStaNo < 200){ -// whsType = 1; -// } else if (sourceStaNo > 199 && sourceStaNo < 300){ -// whsType = 2; -// } else if (sourceStaNo > 299 && sourceStaNo < 400){ -// whsType = 3; -// } else if (sourceStaNo > 399){ -// whsType = 4; -// } - - if (sourceStaNo ==101||sourceStaNo==103){ + if (sourceStaNo == 101 || sourceStaNo == 103) { whsType = 1; - } else if (sourceStaNo ==105||sourceStaNo==107){ + } else if (sourceStaNo == 105 || sourceStaNo == 107) { whsType = 2; - } else{ + } else { throw new CoolException("绔欑偣鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); } @@ -164,11 +156,11 @@ if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) { continue; } - String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo()); + String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo()); // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣� LocMast shallowLoc = locMastService.selectById(shallowLocNo); if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { - if (shallowLoc.getLocType1()<locTypeDto.getLocType1()){ + if (shallowLoc.getLocType1() < locTypeDto.getLocType1()) { continue; } if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { @@ -189,16 +181,16 @@ if (curRow == 0) { curRow = 4; } - for (int i = 0; i < shelves.group; i ++) { + for (int i = 0; i < shelves.group; i++) { curRow = shelves.start(curRow); if (curRow < 0) { throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); } Integer crnNo1 = shelves.get(curRow); - crnNo1 = crnNo1 + divides*1; + crnNo1 = crnNo1 + divides * 1; if (basCrnpService.checkSiteError(crnNo1, true)) { crnNo = crnNo1; - curRow = curRow + divides*4; + curRow = curRow + divides * 4; break; } } @@ -219,7 +211,213 @@ } BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn()); if (!staNo.getAutoing().equals("Y")) { - throw new CoolException("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�"); + throw new CoolException("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�"); + } + + // 鏇存柊搴撲綅鎺掑彿 + rowLastno.setCurrentRow(curRow); + rowLastnoService.updateById(rowLastno); + + // 寮�濮嬫煡鎵惧簱浣� ==============================>> + + // 1.褰撴绱㈠簱鎺掍负娴呭簱浣嶆帓鏃讹紝浼樺厛瀵绘壘褰撳墠搴撴帓鐨勬繁搴撲綅鎺� + if (locMast == null) { + if (Utils.isShallowLoc(slaveProperties, curRow)) { + Integer deepRow = Utils.getDeepRow(slaveProperties, curRow); + locMast = locMastService.queryFreeLocMast(deepRow, locTypeDto.getLocType1()); + // todo:luxiaotao 濡傛灉鐢ㄦ祬鎺掓壘鍒扮殑娣卞簱浣嶏紝閭d箞鍒欓渶瑕佸垽鏂繖涓繁搴撲綅瀵瑰簲鐨勬祬搴撲綅鏄惁鏈夎揣锛團銆乆銆丏锛� + // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� + if (!locMastService.checkEmptyCount(locMast)) { + locMast = null; + } + } + if (Cools.isEmpty(locMast)) { + locMast = locMastService.queryFreeLocMast(curRow, locTypeDto.getLocType1()); + // 鍥犲簱浣嶇Щ杞�侀渶棰勭暀绌哄簱浣� + if (!locMastService.checkEmptyCount(locMast)) { + locMast = null; + } + // 鐩爣搴撲綅 ===>> 娴呭簱浣嶏紝 鍒欐牎楠屽叾娣卞簱浣嶆槸鍚︿负 F D X + if (null != locMast && Utils.isShallowLoc(slaveProperties, locMast.getLocNo())) { + LocMast deepLoc = locMastService.selectById(Utils.getDeepLoc(slaveProperties, locMast.getLocNo())); + if (!deepLoc.getLocSts().equals("F") && !deepLoc.getLocSts().equals("D") && !deepLoc.getLocSts().equals("X")) { + locMast = null; + } + } + // 鐩爣搴撲綅 ===>> 娣卞簱浣嶏紝 鍒欐牎楠屽叾娴呭簱浣嶆槸鍚︿负 O + if (null != locMast && Utils.isDeepLoc(slaveProperties, locMast.getLocNo())) { + LocMast shallowLoc = locMastService.selectById(Utils.getShallowLoc(slaveProperties, locMast.getLocNo())); + if (!shallowLoc.getLocSts().equals("O")) { + locMast = null; + } + } + } + } + + // 2.搴撲綅褰撳墠鎵�灞炲昂瀵告棤绌哄簱浣嶆椂锛岃皟鏁村昂瀵稿弬鏁帮紝鍚戜笂鍏煎妫�绱㈠簱浣� + if (Cools.isEmpty(locMast)) { + // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊 + if (times < rowCount) { + times = times + 1; + return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times); + } + + // 杞昏揣鐗╂壘杞诲簱浣嶄负绌烘椂锛屽彲浠ュ幓鎵鹃噸搴撲綅浠� + if (locTypeDto.getLocType1() == 1) { + locTypeDto.setLocType1((short) 2); + return getLocNo(1, staDescId, sourceStaNo, matNos, locTypeDto, times); + } + log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times); + throw new CoolException("娌℃湁绌哄簱浣�"); + } + String locNo = locMast.getLocNo(); + + // 鐢熸垚宸ヤ綔鍙� + int workNo = getWorkNo(0); + // 杩斿洖dto + startupDto.setWorkNo(workNo); + startupDto.setCrnNo(crnNo); + startupDto.setSourceStaNo(sourceStaNo); + startupDto.setStaNo(staNo.getDevNo()); + startupDto.setLocNo(locNo); + return startupDto; + } + + + /** + * 妫�绱㈠簱浣嶅彿 + * + * @param whsType 绫诲瀷 1:鍙屾繁寮忚揣鏋� + * @param staDescId 璺緞宸ヤ綔绫诲瀷 + * @param sourceStaNo 婧愮珯 + * @param matNos 鍟嗗搧缂栧彿闆嗗悎 + * @return locNo 妫�绱㈠埌鐨勫簱浣嶅彿 + */ + @Transactional + public StartupDto getLocNo(Integer whsType, Integer staDescId, Integer sourceStaNo, List<String> matNos, LocTypeDto locTypeDto, int times) { +// whsType = getWhsType(sourceStaNo, times); + StartupDto startupDto = new StartupDto(); + +// if (sourceStaNo < 200){ +// whsType = 1; +// } else if (sourceStaNo > 199 && sourceStaNo < 300){ +// whsType = 2; +// } else if (sourceStaNo > 299 && sourceStaNo < 400){ +// whsType = 3; +// } else if (sourceStaNo > 399){ +// whsType = 4; +// } + + if (sourceStaNo == 101 || sourceStaNo == 103) { + whsType = 1; + } else if (sourceStaNo == 105 || sourceStaNo == 107) { + whsType = 2; + } else { + throw new CoolException("绔欑偣鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); + } + + RowLastno rowLastno = rowLastnoService.selectById(whsType); + if (Cools.isEmpty(rowLastno)) { + throw new CoolException("1鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); + } + + // ===============>>>> 寮�濮嬫墽琛� + int curRow = rowLastno.getCurrentRow(); + int sRow = rowLastno.getsRow(); + int eRow = rowLastno.geteRow(); + int crn_qty = rowLastno.getCrnQty(); + int rowCount = eRow - sRow + 1; + // 鐩爣鍫嗗灈鏈哄彿 + int crnNo = 0; + // 鐩爣搴撲綅 + LocMast locMast = null; + + // 闈犺繎鎽嗘斁瑙勫垯 --- 鍚屽ぉ鍚岃鏍肩墿鏂� + if (!Cools.isEmpty(matNos)) { + List<String> locNos = locDetlService.getSameDetlToday(matNos.get(0), sRow, eRow); + for (String locNo : locNos) { + if (Utils.isShallowLoc(slaveProperties, locNo)) { + continue; + } + String shallowLocNo = Utils.getShallowLoc(slaveProperties, locNo); + // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣� + LocMast shallowLoc = locMastService.selectById(shallowLocNo); + if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { + if (VersionUtils.locMoveCheckLocType(shallowLoc, locTypeDto)) { + if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { + locMast = shallowLoc; + crnNo = locMast.getCrnNo(); + break; + } + } + } + } + } + + // 闈犺繎鎽嗘斁瑙勫垯 --- 绌烘墭 + if (staDescId == 10) { + List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D").ge("row1", sRow).le("row1", eRow)); + if (locMasts.size() > 0) { + for (LocMast loc : locMasts) { + if (Utils.isShallowLoc(slaveProperties, loc.getLocNo())) { + continue; + } + String shallowLocNo = Utils.getShallowLoc(slaveProperties, loc.getLocNo()); + // 妫�娴嬬洰鏍囧簱浣嶆槸鍚︿负绌哄簱浣� + LocMast shallowLoc = locMastService.selectById(shallowLocNo); + if (shallowLoc != null && shallowLoc.getLocSts().equals("O")) { + if (shallowLoc.getLocType1() < locTypeDto.getLocType1()) { + continue; + } + if (basCrnpService.checkSiteError(shallowLoc.getCrnNo(), true)) { + locMast = shallowLoc; + crnNo = locMast.getCrnNo(); + break; + } + } + } + } + } + + // 濡傛灉娌℃湁鐩歌繎鐗╂枡锛屽垯鎸夎鍒欒疆璇㈣揣鏋� + if (null == locMast) { + Shelves shelves = new Shelves(rowCount, crn_qty); + int divides = (int) Arith.divides(1, curRow - 1, 4); + curRow = (int) Arith.remainder(curRow, 4); + if (curRow == 0) { + curRow = 4; + } + for (int i = 0; i < shelves.group; i++) { + curRow = shelves.start(curRow); + if (curRow < 0) { + throw new CoolException("妫�绱㈠簱浣嶅け璐ワ紝璇疯仈绯荤鐞嗗憳"); + } + Integer crnNo1 = shelves.get(curRow); + crnNo1 = crnNo1 + divides * 1; + if (basCrnpService.checkSiteError(crnNo1, true)) { + crnNo = crnNo1; + curRow = curRow + divides * 4; + break; + } + } + } + + if (crnNo == 0) { + throw new CoolException("娌℃湁鍙敤鐨勫爢鍨涙満"); + } + // 鑾峰彇鐩爣绔� + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", staDescId) + .eq("stn_no", sourceStaNo) + .eq("crn_no", crnNo); + StaDesc staDesc = staDescService.selectOne(wrapper); + if (Cools.isEmpty(staDesc)) { + log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo); + throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + } + BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn()); + if (!staNo.getAutoing().equals("Y")) { + throw new CoolException("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�"); } // 鏇存柊搴撲綅鎺掑彿 @@ -299,7 +497,7 @@ return msg.substring(0, 16); } else { StringBuilder msgBuilder = new StringBuilder(msg); - for(int i = 0; i < count - msg.length(); ++i) { + for (int i = 0; i < count - msg.length(); ++i) { msgBuilder.insert(0, "0"); } return msgBuilder.toString(); @@ -340,4 +538,117 @@ } } + /** + * @param waitPakin 缁勬墭鐨勭墿鏂� + * @param arr 淇濆瓨椤哄簭灞� + * @param d 涓嬫爣 + * @param locType 鐗╂枡鏄惁涓虹壒娈婄墿鏂� + * @param locType1 1.婊℃墭 2.绌烘墭 + * @return + */ + public LocMast getLocNo2(WaitPakin waitPakin, Integer[] arr, Integer d, Integer locType, Integer locType1) { + LocMast locMast = null; + //涓�.鏌ヨ鍏ュ簱璐х墿鏄惁鏄壒娈婃憜鏀捐揣鐗� + if (locType == 2) { + //鏌ユ壘灞傛爣璁扮殑 + LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("lev1", arr[d]) + .eq("loc_sts", "O") + .eq("loc_type1", 2) + .eq("loc_attribute", 1)); + if (!Cools.isEmpty(locMast1)) { + locMast = locMast1; + } + } else { + List<LocMast> locMasts = new ArrayList<>(); + //浜�.绌烘爤鏉挎憜鏀捐鍒� + //1.璇ュ眰鐩稿悓绌烘爤鏉� + //2.鑾峰緱locAttribute搴撲綅灞炴�т负1鐨勬墍鏈夊簱浣� + //3.鏌ョ湅缁勯噷鏄惁杩樻湁绌轰綅 + if (locType1 == 2) { + locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("lev1", arr[d]) + .eq("loc_sts", "D") + .eq("loc_type1", 1) + .eq("loc_attribute", 1)); + if (!Cools.isEmpty(locMasts)) { + for (LocMast locMast1 : locMasts) { + //4.鏌ョ湅璇ョ粍鏄惁鏈夐绾﹀叆搴撳拰棰勭害鍑哄簱鐨勫簱浣嶏紝鏈夌殑璇濈洿鎺ヨ烦杩囪缁� + List<LocMast> locMasts2 = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("group1", locMast1.getGroup1()) + .in("loc_sts", "P", "Q", "R", "S")); + if (!Cools.isEmpty(locMasts2)) { + continue; + } + //5.鎵惧嚭鍚屼竴缁勭殑绌哄簱浣� + //6.瀵规繁娴呭簱浣嶈繘琛屾帓搴� + List<LocMast> locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("group1", locMast1.getGroup1()) + .eq("loc_sts", "O") + .orderBy("locAttribute")); + if (Cools.isEmpty(locMasts1)) { + continue; + } + //7.鏌ョ湅 + locMast = locMasts1.get(0); + } + } + } else { + //涓�.姝e父璐х墿鍏ュ簱 + //1.璇ュ眰鐩稿悓鐗╂枡鎽嗘斁 + //2.鑾峰緱locAttribute搴撲綅灞炴�т负1鐨勬墍鏈夊簱浣� + //3.鏌ョ湅缁勯噷鏄惁杩樻湁绌轰綅 + locMasts = locMastService.querySame(waitPakin.getMatnr(), arr[d]); + if (!Cools.isEmpty(locMasts)) { + for (LocMast locMast1 : locMasts) { + //4.鏌ョ湅璇ョ粍鏄惁鏈夐绾﹀叆搴撳拰棰勭害鍑哄簱鐨勫簱浣嶏紝鏈夌殑璇濈洿鎺ヨ烦杩囪缁� + List<LocMast> locMasts2 = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("group1", locMast1.getGroup1()) + .in("loc_sts", "P", "Q", "R", "S")); + if (!Cools.isEmpty(locMasts2)) { + continue; + } + //5.鎵惧嚭鍚屼竴缁勭殑绌哄簱浣� + //6.瀵规繁娴呭簱浣嶈繘琛屾帓搴� + List<LocMast> locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("group1", locMast1.getGroup1()) + .eq("loc_sts", "O") + .orderBy("locAttribute")); + if (Cools.isEmpty(locMasts1)) { + continue; + } + //7.鏌ョ湅 + locMast = locMasts1.get(0); + } + } + + } + //鍥�.娌℃湁鐩稿悓鐗╂枡锛岃繘琛屾甯告壘搴� + if (Cools.isEmpty(locMast)) { + //鏌ユ壘璇ュ眰鎵�鏈夌┖鐨�"loc_attribute",1 + List<LocMast> locMastList = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("lev1", arr[d]) + .eq("loc_sts", "O") + .eq("loc_type1", 1) + .eq("loc_attribute", 1) + .orderBy("row1", false) + .orderBy("bay1", false)); + if (!Cools.isEmpty(locMastList)) { + locMast = locMastList.get(0); + } + } + //璇ュ眰娌℃湁鎵惧埌搴撲綅鏃惰繘鍏ラ�掑綊鎹㈠眰鎵惧簱浣� + if (Cools.isEmpty(locMast)) { + if (d > 6) { + throw new CoolException("娌℃湁绌哄簱浣�"); + } + if (d == 6 && locType == 2) { + return getLocNo2(waitPakin, arr, 0, 1, locType1); + } + return getLocNo2(waitPakin, arr, d++, locType, locType1); + } + } + return locMast; + } + } diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java index 06099a0..72cd9a1 100644 --- a/src/main/java/com/zy/common/web/WcsController.java +++ b/src/main/java/com/zy/common/web/WcsController.java @@ -6,6 +6,7 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; +import com.zy.asrs.entity.result.StorageResult; import com.zy.asrs.service.*; import com.zy.common.CodeRes; import com.zy.common.model.LocTypeDto; @@ -43,72 +44,67 @@ private WaitPakinService waitPakinService; @Autowired private LocDetlService locDetlService; + @Autowired + private BasCrnpService basCrnpService; @PostMapping("/pakin/loc/v1") @ResponseBody - public synchronized R getLocNo(@RequestBody SearchLocParam param) { + public synchronized R getLocNo(@RequestBody(required = false) SearchLocParam param) { + StorageResult storageResult=new StorageResult(); log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param); - if (Cools.isEmpty(param.getIoType())) { + if (Cools.isEmpty(param.getWcsIoType())) { return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�"); } - if (Cools.isEmpty(param.getSourceStaNo())) { + if (Cools.isEmpty(param.getWcsSourceStaNo())) { return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖"); } List<WaitPakin> waitPakins = null; - if (param.getIoType() == 1) { - if (Cools.isEmpty(param.getBarcode())) { + if (param.getWcsIoType() == 1) { + if (Cools.isEmpty(param.getBoxNo())) { return R.error("鏉$爜涓嶈兘涓虹┖"); } - waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); + waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBoxNo())); if (Cools.isEmpty(waitPakins)) { - WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); + WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBoxNo()); if (wrkMast != null && wrkMast.getIoType() == 103) { return R.parse(CodeRes.PICK_600); } return R.parse(CodeRes.NO_COMB_700); } - int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); - int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); + 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); } } - if (Cools.isEmpty(param.getLocType1())){ - return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�"); - } - // 婧愮珯鐐圭姸鎬佹娴� - BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); - sourceStaNo.setLocType1(param.getLocType1()); - LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); - StartupDto dto = null; - switch (param.getIoType()) { + switch (param.getWcsIoType()) { case 1://婊℃墭鐩樺叆搴� assert waitPakins != null; - dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins); + storageResult = startupFullPutStore(param.getWcsSourceStaNo(), param.getBoxNo(), waitPakins); break; - case 10://绌烘墭鐩樺叆搴� - dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode()); + case 2://绌烘墭鐩樺叆搴� + storageResult = emptyPlateIn(param.getWcsSourceStaNo(), param.getBoxNo()); break; default: break; } - log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode()); - return R.ok().add(dto); + log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", storageResult, param.getBoxNo()); + return R.ok().add(storageResult); } /** * 鍏ㄦ澘鍏ュ簱 */ @Transactional - public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) { - // 婧愮珯鐐圭姸鎬佹娴� - BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); + public StorageResult startupFullPutStore(Integer devpNo, String barcode, List<WaitPakin> waitPakins) { + StorageResult storageResult=new StorageResult(); + Integer[] arr=arr(); + int type=Cools.isEmpty(waitPakins.get(0).getBeBatch())?1:waitPakins.get(0).getBeBatch(); // 妫�绱㈠簱浣� - List<String> matNos = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList()); - StartupDto dto = commonService.getLocNo(1, 1, devpNo, matNos, locTypeDto,0); - int workNo = dto.getWorkNo(); + LocMast locMast1 =commonService.getLocNo2(waitPakins.get(0),arr,0,type,1); + int workNo = commonService.getWorkNo(0); Date now = new Date(); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); @@ -117,17 +113,15 @@ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 wrkMast.setIoPri(13D); // 浼樺厛绾� - wrkMast.setCrnNo(dto.getCrnNo()); - wrkMast.setSourceStaNo(dto.getSourceStaNo()); - wrkMast.setStaNo(dto.getStaNo()); - wrkMast.setLocNo(dto.getLocNo()); + 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(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 + wrkMast.setCtnType(1); // 瀹瑰櫒绫诲瀷 // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); @@ -151,20 +145,14 @@ Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() .eq("zpallet", barcode); WaitPakin setParam = new WaitPakin(); - setParam.setLocNo(dto.getLocNo()); + setParam.setLocNo(locMast1.getLocNo()); setParam.setIoStatus("Y"); setParam.setModiTime(now); if (!waitPakinService.update(setParam, wrapper)) { throw new CoolException("鏇存柊閫氱煡妗eけ璐�"); } - // 鏇存柊婧愮珯鐐逛俊鎭� - sourceStaNo.setWrkNo(workNo); - sourceStaNo.setModiTime(now); - if (!basDevpService.updateById(sourceStaNo)){ - throw new CoolException("鏇存柊婧愮珯澶辫触"); - } // 鏇存柊鐩爣搴撲綅鐘舵�� - LocMast locMast = locMastService.selectById(dto.getLocNo()); + LocMast locMast = locMastService.selectById(locMast1.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 locMast.setModiTime(now); @@ -172,18 +160,23 @@ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); } } else { - throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + throw new CoolException(locMast1.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); } - return dto; + StorageResult.Results results=new StorageResult.Results(); + results.setTaskNo(workNo); + results.setShelfUnitId(locMast1.getLocNo()); + storageResult.setResults(results); + return storageResult; } @Transactional - public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode) { - // 婧愮珯鐐圭姸鎬佹娴� - BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); + public StorageResult emptyPlateIn(Integer devpNo, String barcode) { + StorageResult storageResult=new StorageResult(); // 妫�绱㈠簱浣� - StartupDto dto = commonService.getLocNo(1, 10, devpNo, null, locTypeDto,0); - int workNo = dto.getWorkNo(); + Integer[] arr=arr(); + // 妫�绱㈠簱浣� + LocMast locMast1 =commonService.getLocNo2(null,arr,0,1,2); + int workNo = commonService.getWorkNo(0); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); @@ -191,17 +184,15 @@ wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱 wrkMast.setIoPri(13D); // 浼樺厛绾� - wrkMast.setCrnNo(dto.getCrnNo()); - wrkMast.setSourceStaNo(dto.getSourceStaNo()); - wrkMast.setStaNo(dto.getStaNo()); - wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setSourceStaNo(devpNo); + wrkMast.setLocNo(locMast1.getLocNo()); wrkMast.setFullPlt("N"); // 婊℃澘 wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("Y"); // 绌烘澘 wrkMast.setLinkMis("Y"); wrkMast.setBarcode(barcode); - wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 + wrkMast.setCtnType(2); // 瀹瑰櫒绫诲瀷 // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(new Date()); wrkMast.setModiTime(new Date()); @@ -209,14 +200,8 @@ if (!res) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } - // 鏇存柊婧愮珯鐐逛俊鎭� - sourceStaNo.setWrkNo(workNo); - sourceStaNo.setModiTime(new Date()); - if (!basDevpService.updateById(sourceStaNo)){ - throw new CoolException("鏇存柊婧愮珯澶辫触"); - } // 鏇存柊鐩爣搴撲綅鐘舵�� - LocMast locMast = locMastService.selectById(dto.getLocNo()); + LocMast locMast = locMastService.selectById(locMast1.getLocNo()); if (locMast.getLocSts().equals("O")){ locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 locMast.setModiTime(new Date()); @@ -224,9 +209,80 @@ throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); } } else { - throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + throw new CoolException(locMast1.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); } - return dto; + StorageResult.Results results=new StorageResult.Results(); + results.setTaskNo(workNo); + results.setShelfUnitId(locMast1.getLocNo()); + storageResult.setResults(results); + return storageResult; + } + + @Transactional + public Integer[] arr() { + //鑾峰彇鏈夋爣璁扮殑灏忚溅锛屾寜椤哄簭杩涜璁板綍 + int count =basCrnpService.selectCount(new EntityWrapper<BasCrnp>()); + //鍒濆鍖栨暟缁� + Integer [] arr=new Integer[7]; + //鏁扮粍鏍囪 + int i=0; + BasCrnp basCrnp=basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("tank_qty",1)); + //娌℃湁鎵惧埌鏍囪鏃舵寜榛樿涓�鍙峰皬杞︽墍鍦ㄥ眰寮�濮嬫帓 + if(Cools.isEmpty(basCrnp)){ + for(int q=1;q<=count;q++){ + basCrnp=basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no",q)); + if(Cools.isEmpty(basCrnp)){ + log.error(q+"鍙峰皬杞︽病鏈夋壘鍒�"); + continue; + } + if(basCrnp.getCrnErr()>0||basCrnp.getCrnSts()!=1){ + log.error(q+"鍙峰皬杞︽姤璀︽垨鑰呭湪鍏呯數璺宠繃姝よ溅"); + continue; + } + arr[i]=basCrnp.getLev1(); + i++; + if(q==1){ + basCrnp.setTankQty(0); + basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",1)); + }else if(q==2){ + basCrnp.setTankQty(1); + basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",2)); + } + } + }else{ + basCrnp.setTankQty(0); + basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",basCrnp.getCrnNo())); + arr[i]=basCrnp.getLev1(); + i++; + int o=basCrnp.getCrnNo(); + for(int q=1;q<count;q++){ + if(++o>count){ + o=1; + } + basCrnp=basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no",o)); + if(q==1){ + basCrnp.setTankQty(1); + basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",o)); + } + arr[i]=basCrnp.getLev1(); + i++; + } + + } + for (int w=1;w<=7;w++){ + boolean boo=true; + for(int g=0;g<count;g++){ + if(arr[g]==w){ + boo=false; + break; + } + } + if(boo){ + arr[i]=w; + i++; + } + } + 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 1a170ce..1f058ab 100644 --- a/src/main/java/com/zy/common/web/param/SearchLocParam.java +++ b/src/main/java/com/zy/common/web/param/SearchLocParam.java @@ -1,5 +1,6 @@ package com.zy.common.web.param; +import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; /** @@ -8,13 +9,22 @@ @Data public class SearchLocParam { - private Integer ioType; + //鎵樼洏鐮� + @JSONField(name = "BoxNo") + private String boxNo; + //鎵ц鐘舵�� 0锛氭垚鍔� 1锛氬け璐� + @JSONField(name = "WCSStatus") + private Integer wcsStatus=0; + //閿欒淇℃伅 鍏蜂綋鐨勯敊璇俊鎭紙瓒呴珮锛岃秴閲嶇瓑锛� + @JSONField(name = "WCSErrorMessage") + private String wcsErrorMessage=""; - private Integer sourceStaNo; + //婧愮珯鐐� + @JSONField(name = "WCSSourceStaNo") + private Integer wcsSourceStaNo; - private String barcode; - - // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:楂樺簱浣嶏級 - private Short locType1; + //绌烘澘婊℃澘 + @JSONField(name = "WCSIoType") + private Integer wcsIoType; } diff --git a/src/main/resources/mapper/BasCrnpMapper.xml b/src/main/resources/mapper/BasCrnpMapper.xml index 50d9755..00b15b5 100644 --- a/src/main/resources/mapper/BasCrnpMapper.xml +++ b/src/main/resources/mapper/BasCrnpMapper.xml @@ -26,6 +26,7 @@ <result column="tank_qty" property="tankQty" /> <result column="tank_qty1" property="tankQty1" /> <result column="origin" property="origin" /> + <result column="lev1" property="lev1" /> </resultMap> </mapper> diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml index 2244412..ba75efb 100644 --- a/src/main/resources/mapper/LocMastMapper.xml +++ b/src/main/resources/mapper/LocMastMapper.xml @@ -34,6 +34,8 @@ <result column="mk" property="mk" /> <result column="barcode" property="barcode" /> <result column="ctn_no" property="ctnNo" /> + <result column="group1" property="group1" /> + <result column="loc_attribute" property="locAttribute" /> </resultMap> @@ -75,4 +77,15 @@ ) and (loc_sts = 'F' or loc_sts = 'D') and crn_no = #{crnNo} </select> + + <select id="querySame" resultMap="BaseResultMap"> + select l.* from asr_loc_mast l,asr_loc_detl d where 1=1 + and l.loc_no = d.loc_no + and d.matnr = #{matnr} + and l.lev1 = #{lev1} + and l.loc_attribute = 1 + and l.loc_type1 = 1 + and l.loc_sts = 'F' + </select> + </mapper> diff --git a/src/main/webapp/static/js/locMast/locMast.js b/src/main/webapp/static/js/locMast/locMast.js index c9bafaf..9197a35 100644 --- a/src/main/webapp/static/js/locMast/locMast.js +++ b/src/main/webapp/static/js/locMast/locMast.js @@ -32,6 +32,8 @@ ,{field: 'row1', align: 'center',title: '鎺�', sort:true} ,{field: 'bay1', align: 'center',title: '鍒�', sort:true} ,{field: 'lev1', align: 'center',title: '灞�', sort:true} + ,{field: 'group1', align: 'center',title: '缁�', sort:true} + ,{field: 'locAttribute', align: 'center',title: '娣辨祬搴撲綅鍙�', sort:true} ,{field: 'fullPlt', align: 'center',title: '婊℃澘', templet:function(row){ var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' disabled table-index='"+row.LAY_TABLE_INDEX+"'"; if(row.fullPlt === 'Y'){html += " checked ";} diff --git a/src/main/webapp/views/locMast/locMast.html b/src/main/webapp/views/locMast/locMast.html index 6f4b17d..cd4c937 100644 --- a/src/main/webapp/views/locMast/locMast.html +++ b/src/main/webapp/views/locMast/locMast.html @@ -60,6 +60,16 @@ <input class="layui-input" type="text" name="lev1" placeholder="灞�" autocomplete="off"> </div> </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="group1" placeholder="缁�" autocomplete="off"> + </div> + </div> + <div class="layui-inline"> + <div class="layui-input-inline"> + <input class="layui-input" type="text" name="loc_attribute" placeholder="娣辨祬搴撲綅鍙�" autocomplete="off"> + </div> + </div> <!-- 寰呮坊鍔� --> <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block"> <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button> diff --git a/src/main/webapp/views/locMast/locMast_detail.html b/src/main/webapp/views/locMast/locMast_detail.html index 1e12d40..6c7c638 100644 --- a/src/main/webapp/views/locMast/locMast_detail.html +++ b/src/main/webapp/views/locMast/locMast_detail.html @@ -101,6 +101,18 @@ <input id="lev1" class="layui-input" type="text" autocomplete="off" disabled="disabled"> </div> </div> + <div class="layui-inline" style="width:80%;"> + <label class="layui-form-label">缁勶細</label> + <div class="layui-input-inline"> + <input id="group1" class="layui-input" type="text" autocomplete="off" disabled="disabled"> + </div> + </div> + <div class="layui-inline" style="width:80%;"> + <label class="layui-form-label">娣辨祬搴撲綅鍙凤細</label> + <div class="layui-input-inline"> + <input id="locAttribute" class="layui-input" type="text" autocomplete="off" disabled="disabled"> + </div> + </div> <div class="layui-inline" style="width:80%;display: none"> <label class="layui-form-label">婊°��銆�鏉匡細</label> <div class="layui-input-inline" style="text-align: left"> -- Gitblit v1.9.1