From ea09ba33fceccbb70ad1ad0621e739679a37dbb2 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期三, 23 十月 2024 11:08:05 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/entity/param/StatusParam.java | 33 ++ src/main/java/com/zy/asrs/entity/Re.java | 63 +++++ src/main/java/com/zy/asrs/task/WCSReportScheduler.java | 46 +++ src/main/java/com/zy/asrs/entity/WrkMast.java | 2 src/main/java/com/zy/common/web/WcsController.java | 216 ++++++++++++++--- src/main/java/com/zy/asrs/entity/result/WorkIssuedResult.java | 75 ++++++ src/main/java/com/zy/common/model/LocTypeDto.java | 9 src/main/java/com/zy/common/CodeRes.java | 14 src/main/java/com/zy/common/web/param/SearchLocParam.java | 42 +++ src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 28 +- src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | 6 src/main/java/com/zy/asrs/task/handler/WCSReportHandler.java | 116 +++++++++ src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java | 20 - src/main/java/com/zy/common/service/CommonService.java | 25 + src/main/resources/license.lic | 0 src/main/resources/application.yml | 12 + 16 files changed, 597 insertions(+), 110 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/Re.java b/src/main/java/com/zy/asrs/entity/Re.java new file mode 100644 index 0000000..e9b1ad9 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/Re.java @@ -0,0 +1,63 @@ +package com.zy.asrs.entity; + + +import com.core.common.Cools; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; + +public class Re extends HashMap<String, Object> { + private static final long serialVersionUID = 1L; + private static final String CODE = "code"; + private static final String MSG = "msg"; + private static final String DATA = "data"; + + public Re(Integer code, String msg) { + super.put("returnStatus", code); + super.put("returnInfo", msg); + Date date=new Date(); + DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String dateStr=df.format(date); + super.put ("msgTime", dateStr); + } + + public static Re ok() { + return parse("0-鎿嶄綔鎴愬姛"); + } + + public static Re ok(String msg) { + Re r = ok(); + r.put("msg", msg); + return r; + } + + public static Re ok(Object obj) { + return parse("0-鎿嶄綔鎴愬姛").add(obj); + } + + public static Re error() { + return parse("1-鏈嶅姟鍣ㄩ敊璇�"); + } + + public static Re error(String msg) { + Re r = error(); + r.put("msg", msg); + return r; + } + + public Re add(Object obj) { + this.put("data", obj); + return this; + } + + public static Re parse(String message) { + if (Cools.isEmpty(message)) { + return parse("1-鏈嶅姟鍣ㄩ敊璇�"); + } else { + String[] msg = message.split("-"); + return msg.length == 2 ? new Re(Integer.parseInt(msg[0]), msg[1]) : parse("1-".concat(message)); + } + } +} diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java index 83298e9..565499e 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMast.java +++ b/src/main/java/com/zy/asrs/entity/WrkMast.java @@ -37,7 +37,7 @@ @ApiModelProperty(value= "") private Date ymd; - @ApiModelProperty(value= "") + @ApiModelProperty(value= "鏄惁涓婃姤wcs") private String mk; @ApiModelProperty(value= "") diff --git a/src/main/java/com/zy/asrs/entity/param/StatusParam.java b/src/main/java/com/zy/asrs/entity/param/StatusParam.java new file mode 100644 index 0000000..a7df03b --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/param/StatusParam.java @@ -0,0 +1,33 @@ +package com.zy.asrs.entity.param; + +import lombok.Data; + +@Data +public class StatusParam { + /** + * 浠诲姟缂栧彿 + */ + private String taskId; + + /** + * 涓婃姤鏃堕棿 + */ + private String reportTime; + + /** + * 浠诲姟鐘舵�� + * 鎵ц杩囩▼涓� + * 鐨勭姸鎬併�� 0- 宸� 鎺� + * 鏀� , 1- 浠� 鍔� 寮� + * 濮�,2-鍙栬揣瀹屾垚,3- + * 浠诲姟涓柇,4-鏀捐揣 + * 瀹屾垚,8-浠诲姟缁撴潫 + */ + private int taskStatus; + + /** + * 璐т綅缂栫爜 + * 鐩殑浣嶇疆缂栫爜 + */ + private String gridId; +} diff --git a/src/main/java/com/zy/asrs/entity/result/WorkIssuedResult.java b/src/main/java/com/zy/asrs/entity/result/WorkIssuedResult.java new file mode 100644 index 0000000..c8742eb --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/result/WorkIssuedResult.java @@ -0,0 +1,75 @@ +package com.zy.asrs.entity.result; + +import lombok.Data; + +import java.util.List; + +@Data +public class WorkIssuedResult { + /** + * 缁勫彿 + */ + private String groupId; + + /** + * 涓嬪彂鏃堕棿 + */ + private String msgTime; + + /** + * 浼樺厛绾� + * 姝ょ粍浠诲姟浼樺厛 + * 绾э紝涓嶅~鍒欐寜鐓� + * 鈥� msgTime 鈥濇墽 + * 琛岋紝骞朵笖浼樺厛绾� + * 鑷姩鏈�浣� + */ + private int priorityCode; + + /** + * 浠撳簱缂栫爜 + */ + private String warehouse; + + private List<Tasks> tasks; + + @Data + public static class Tasks { + /** + * 浠诲姟 ID + */ + private String taskId; + + /** + * 浠诲姟绫诲瀷 + * 0:鍏ュ簱 + * 1:鍑哄簱 + * 2:绉诲簱 + */ + private int taskType; + + /** + * 浠诲姟璧风偣 + */ + private String startNode; + + /** + * 浠诲姟缁堢偣 + */ + private String endNode; + + /** + *鎵樼洏鐮� + */ + private String barCode; + + /** + * 鎺掑簭 + * 鍚岀粍浠诲姟鐨勬墽琛� + * 椤哄簭, 鍚岀粍涓嶅彲 + * 閲嶅 鏁板�煎皬鍦� + * 鍓嶏紝澶х殑鍦ㄥ悗 + */ + private int order; + } +} 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..5e4f002 100644 --- a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java @@ -45,26 +45,6 @@ @Override public BasDevp checkSiteStatus(Integer devpNo, boolean pakin) { BasDevp station = selectById(devpNo); - if (station == null){ - throw new CoolException(devpNo+"绔欑偣涓嶅瓨鍦�"); - } - if (pakin) { - if(station.getAutoing()==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+"绔欑偣涓嶈兘鍚屾椂鐢熸垚涓ょ瑪鍏ュ簱宸ヤ綔妗�"); - } - } return station; } } diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java index e37ebd6..5ba2491 100644 --- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java @@ -94,9 +94,9 @@ throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱"); } - if(param.getBarcode().length()!=8){ - throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode()); - } +// if(param.getBarcode().length()!=8){ +// throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + param.getBarcode()); +// } if (param.getCombMats().size()>1){ throw new CoolException("涓嶅厑璁告贩鏂�===>>" + param.getBarcode()); } 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 8747729..9553b17 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -243,7 +243,7 @@ WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); - wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setWrkSts(0L); // 宸ヤ綔鐘舵�侊細0.寰呮帴鏀� wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� wrkMast.setIoPri(13D); // 浼樺厛绾э細13 wrkMast.setCrnNo(locMast.getCrnNo()); @@ -454,9 +454,13 @@ if (!locMast.getLocSts().equals("D")){ throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$()); } + boolean res1 = false; + if(param.getOutSite()==100){ + res1 = true; + } List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() .eq("lev1", locMast.getLev1()) - .orderBy("bay1",false)); + .orderBy("bay1",res1)); for (LocMast locMast1 : locMasts) { if (locMast1.getLocNo().equals(locMast.getLocNo())) { break; @@ -480,7 +484,7 @@ WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); - wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setWrkSts(0L); // 宸ヤ綔鐘舵�侊細0.寰呭彂閫� wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 wrkMast.setIoPri(10D); wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 @@ -696,12 +700,13 @@ if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) { throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚"); } - // 鍏ュ簱 + 搴撲綅杞Щ - if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { - wrkMast.setWrkSts(4L); // 鍑哄簱 - } else if (wrkMast.getWrkSts() > 10) { + if (wrkMast.getIoType() > 100) { wrkMast.setWrkSts(14L); + // 鍏ュ簱 + 搴撲綅杞Щ + } else if (wrkMast.getIoType()==1 || wrkMast.getIoType()==10 || wrkMast.getIoType()==11) { + wrkMast.setWrkSts(4L); + } Date now = new Date(); wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true)); @@ -847,7 +852,7 @@ String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣� String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬� // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級 - if (wrkMast.getWrkSts() < 4) { + if (wrkMast.getIoType() < 100) { locNo = wrkMast.getLocNo(); locSts = "O"; @@ -864,10 +869,10 @@ locMastService.updateById(locMast); } // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛� - } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { + } else if (wrkMast.getIoType() > 100 && wrkMast.getWrkSts() != 14) { locNo = wrkMast.getSourceLocNo(); // 鍑哄簱 ===>> F.鍦ㄥ簱 - if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { + if (wrkMast.getIoType() == 101) { locSts = "F"; // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� } else if (wrkMast.getIoType() == 110) { @@ -899,8 +904,7 @@ waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>() // .eq("order_no", waitPakin.getOrderNo()) .eq("zpallet",waitPakin.getZpallet()) - .eq("matnr", waitPakin.getMatnr()) - .eq("batch", waitPakin.getBatch())); + .eq("matnr", waitPakin.getMatnr())); } } } diff --git a/src/main/java/com/zy/asrs/task/WCSReportScheduler.java b/src/main/java/com/zy/asrs/task/WCSReportScheduler.java new file mode 100644 index 0000000..2f6b33a --- /dev/null +++ b/src/main/java/com/zy/asrs/task/WCSReportScheduler.java @@ -0,0 +1,46 @@ +package com.zy.asrs.task; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.core.common.Cools; +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.WCSReportHandler; +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 WCSReportScheduler { + private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); + @Autowired + private WrkMastService wrkMastService; + @Autowired + private WCSReportHandler wcsReportHandler; + @Value("${wcs-slave.workIssued-fig}") + private Boolean workIssuedFig; + + /** + * 涓嬪彂浠诲姟缁橶CS + */ + @Scheduled(cron = "0/3 * * * * ? ") + public void execute (){ + if (!workIssuedFig){ + return; + } + List<WrkMast> wrkMastList=wrkMastService.selectList(new EntityWrapper<WrkMast>()); + int i=1; + for(WrkMast wrkMast:wrkMastList){ + if (wrkMast.getWrkSts()==0){ + wcsReportHandler.start(wrkMast,i); + i++; + } + } + + } +} diff --git a/src/main/java/com/zy/asrs/task/handler/WCSReportHandler.java b/src/main/java/com/zy/asrs/task/handler/WCSReportHandler.java new file mode 100644 index 0000000..af840cd --- /dev/null +++ b/src/main/java/com/zy/asrs/task/handler/WCSReportHandler.java @@ -0,0 +1,116 @@ +package com.zy.asrs.task.handler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.core.exception.CoolException; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.entity.result.WorkIssuedResult; +import com.zy.asrs.service.ApiLogService; +import com.zy.asrs.service.WrkMastService; +import com.zy.asrs.task.AbstractHandler; +import com.zy.asrs.task.core.ReturnT; +import com.zy.common.constant.MesConstant; +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.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +@Slf4j +@Service +@Transactional +public class WCSReportHandler extends AbstractHandler<String> { + @Value("${wcs-slave.url}") + private String url; + @Value("${wcs-slave.workIssued}") + private String workIssued; + @Value("${wcs-slave.inDevp}") + private String inDevp; + @Value("${wcs-slave.outDevp}") + private String outDevp; + @Autowired + private ApiLogService apiLogService; + @Autowired + private WrkMastService wrkMastService; + + public ReturnT<String> start(WrkMast wrkMast,int i) { + WorkIssuedResult workIssuedResult = new WorkIssuedResult(); + + Date date = new Date(); + DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String groupId = dateFormat.format(date)+"-"+i; + workIssuedResult.setGroupId(groupId);//缁勫彿 + workIssuedResult.setMsgTime(dateFormat.format(date)); + workIssuedResult.setWarehouse("wzzy"); + + List<WorkIssuedResult.Tasks> tasks = new ArrayList<>(); + WorkIssuedResult.Tasks task = new WorkIssuedResult.Tasks(); + task.setTaskId(wrkMast.getWrkNo().toString()); + task.setBarCode(wrkMast.getBarcode()); + task.setOrder(i); + if(wrkMast.getIoType() == 1 ){//鍏ュ簱 + task.setTaskType(0);//鍏ュ簱 + task.setStartNode(inDevp); + task.setEndNode(wrkMast.getLocNo());//鐩爣搴撲綅 + }else if(wrkMast.getIoType() == 10 ){//绌烘澘鍏ュ簱 + task.setTaskType(0);//鍏ュ簱 + task.setStartNode("200"); + task.setEndNode(wrkMast.getLocNo());//鐩爣搴撲綅 + }else if(wrkMast.getIoType() == 101 ){//鍑哄簱 + task.setTaskType(1);//鍑哄簱 + task.setStartNode(wrkMast.getSourceLocNo());//婧愬簱浣� + task.setEndNode(outDevp); + }else{//绌烘澘鍑哄簱 + task.setTaskType(1);//鍑哄簱 + task.setStartNode(wrkMast.getSourceLocNo());//婧愬簱浣� + task.setEndNode("100"); + } + tasks.add(task); + workIssuedResult.setTasks(tasks); + String response = ""; + boolean success = false; + try { + response = new HttpHandler.Builder() + .setUri(url) + .setPath(workIssued) + .setJson(JSON.toJSONString(workIssuedResult)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("returnStatus").equals(0)) { + success = true; + wrkMast.setWrkSts(1L); + wrkMastService.updateById(wrkMast); + } else { + log.error("wms涓嬪彂浠诲姟缁檞cs澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url+"/"+workIssued, JSON.toJSONString(workIssuedResult), response); + throw new CoolException("wms涓嬪彂浠诲姟缁檞cs澶辫触"); + } + } catch (Exception e) { + log.error("fail", e); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return FAIL.setMsg(e.getMessage()); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "wms涓嬪彂浠诲姟缁檞cs", + url+"/"+workIssued, + null, + "127.0.0.1", + JSON.toJSONString(workIssuedResult), + response, + success + ); + } catch (Exception e) { log.error("", e); } + } + + return null; + } +} diff --git a/src/main/java/com/zy/common/CodeRes.java b/src/main/java/com/zy/common/CodeRes.java index 23d9266..3aabc0f 100644 --- a/src/main/java/com/zy/common/CodeRes.java +++ b/src/main/java/com/zy/common/CodeRes.java @@ -5,14 +5,14 @@ public interface CodeRes extends BaseRes { // user - String USER_10001 = "10001-璐﹀彿涓嶅瓨鍦�"; - String USER_10002 = "10002-璐﹀彿宸茶绂佺敤"; - String USER_10003 = "10003-瀵嗙爜閿欒"; + String USER_10001 = "1-璐﹀彿涓嶅瓨鍦�"; + String USER_10002 = "1-璐﹀彿宸茶绂佺敤"; + String USER_10003 = "1-瀵嗙爜閿欒"; - String SYSTEM_20001 = "20001-璁稿彲璇佸凡澶辨晥"; + String SYSTEM_20001 = "1-璁稿彲璇佸凡澶辨晥"; - String EXIST_500 = "500-宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�"; - String PICK_600 = "600-鎷f枡浠诲姟"; - String NO_COMB_700 = "700-璇峰厛缁勬墭"; + String EXIST_500 = "1-宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�"; + String PICK_600 = "1-鎷f枡浠诲姟"; + String NO_COMB_700 = "1-璇峰厛缁勬墭"; } diff --git a/src/main/java/com/zy/common/model/LocTypeDto.java b/src/main/java/com/zy/common/model/LocTypeDto.java index c6630aa..b8526c3 100644 --- a/src/main/java/com/zy/common/model/LocTypeDto.java +++ b/src/main/java/com/zy/common/model/LocTypeDto.java @@ -26,14 +26,7 @@ } public LocTypeDto(BasDevp basDevp) { - if (basDevp.getLocType1() == null || basDevp.getLocType1() == 0) { - throw new CoolException("plc楂樹綆妫�娴嬪紓甯�"); - } - if (basDevp.getLocType1() == 1) { - this.locType1 = 1; // 浣庡簱浣� - } else { - this.locType1 = 2; // 楂樺簱浣� - } + this.locType1 = 1; // 浣庡簱浣� log.info(JSON.toJSONString(this)); } diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index 53f15e0..1fdf82b 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -493,13 +493,24 @@ } } } + if(Cools.isEmpty(locMast)){ + List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() + .eq("lev1", 1) + .orderBy("bay1",false)); + for (LocMast locMast2 : locMasts) { + if (locMast2.getLocSts().equals("O") ) { + if (locMast == null){ + locMast = locMast2; + }else if (locMast2.getLocSts().equals("F")){ + locMast = null; + } + } + } + } }else { - for (int i = 1; i<=4;i++){ + for (int i = 1; i<=2;i++){ if (locMast != null){ break; - } - if (i == 2){ - continue; } List<LocMast> locMastsF = locMastService.selectList(new EntityWrapper<LocMast>() .eq("lev1", i) @@ -536,13 +547,11 @@ } } } - } - }else { List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() - .eq("lev1", 2) - .orderBy("bay1",false)); + .eq("lev1", 3) + .orderBy("bay1",true)); if (Cools.isEmpty(locMasts)){ throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===銆嬪簱浣嶆湭鐭�"); } diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java index 066530a..5a4001e 100644 --- a/src/main/java/com/zy/common/web/WcsController.java +++ b/src/main/java/com/zy/common/web/WcsController.java @@ -1,5 +1,7 @@ package com.zy.common.web; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; @@ -7,19 +9,23 @@ import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.EmptyPlateOutParam; +import com.zy.asrs.entity.param.StatusParam; import com.zy.asrs.service.*; import com.zy.common.CodeRes; import com.zy.common.model.LocTypeDto; import com.zy.common.model.StartupDto; import com.zy.common.service.CommonService; +import com.zy.common.utils.HttpHandler; import com.zy.common.web.param.SearchLocParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; @@ -44,74 +50,98 @@ @Autowired private WaitPakinService waitPakinService; @Autowired - private LocDetlService locDetlService; + private LocDetlService locDetlService; @Autowired private RowLastnoService rowLastnoService; @Autowired private WorkService workService; + @Autowired + private ApiLogService apiLogService; + @Value("${wcs-slave.url}") + private String url; + @Value("${wcs-slave.loc}") + private String loc; - @PostMapping("/pakin/loc/v1") + @PostMapping("/fromwcs/inware-task") @ResponseBody - public synchronized R getLocNo(@RequestBody SearchLocParam param) { + public synchronized Re getLocNo(@RequestBody SearchLocParam param) { log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param); - if (Cools.isEmpty(param.getIoType())) { - return R.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�"); + if (Cools.isEmpty(param.getCargoHeight())) { + return Re.error("鍏ュ嚭搴撶被鍨嬩笉鑳戒负绌�"); } - if (Cools.isEmpty(param.getSourceStaNo())) { - return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖"); + if (Cools.isEmpty(param.getFromPort())) { + return Re.error("婧愮珯缂栧彿涓嶈兘涓虹┖"); } List<WaitPakin> waitPakins = null; - if (param.getIoType() == 1) { - if (Cools.isEmpty(param.getBarcode())) { - return R.error("鏉$爜涓嶈兘涓虹┖"); + if (param.getFromPort().equals("100")) { + + //鏈夌┖鏉垮嚭搴撴椂绂佹鍏ュ簱 + int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type",110).eq("sta_no",100)); + if(wrkCount > 0){ + return Re.error("鏈夌┖鏉垮嚭搴撳埌100绔欐椂鏃剁姝㈠叆搴�"); } - waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); + + if (Cools.isEmpty(param.getBarCode())) { + return Re.error("鏉$爜涓嶈兘涓虹┖"); + } + waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarCode())); if (Cools.isEmpty(waitPakins)) { - WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); + WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarCode()); if (wrkMast != null && wrkMast.getIoType() == 103) { - return R.parse(CodeRes.PICK_600); + return Re.parse(CodeRes.PICK_600); } - return R.parse(CodeRes.NO_COMB_700); + return Re.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.getBarCode())); + int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet", param.getBarCode())); if (countLoc > 0 || countWrk > 0) { - return R.error(CodeRes.EXIST_500); + return Re.error(CodeRes.EXIST_500); + } + }else { + //鏈夋弧鏉垮嚭搴撴椂绂佹绌烘澘鍏ュ簱 + int wrkCount = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type",101).or().eq("io_type",110)); + if(wrkCount > 0){ + return Re.error("鏈夋弧鏉垮嚭搴撴椂绂佹绌烘澘鍏ュ簱"); + } + + int countLoc = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", 10)); + if (countLoc > 0 ) { + return Re.error("宸叉湁绌烘澘鍏ュ簱浠诲姟绂佹鍦ㄥ叆绌烘澘"); } } - if (Cools.isEmpty(param.getLocType1())){ - return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�"); + if (Cools.isEmpty(param.getCargoHeight())) { + return Re.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�"); } // 婧愮珯鐐圭姸鎬佹娴� - BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); - sourceStaNo.setLocType1(param.getLocType1()); + BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.valueOf(param.getFromPort()), true); + sourceStaNo.setLocType1(param.getCargoHeight().shortValue()); LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); StartupDto dto = null; - switch (param.getIoType()) { - case 1://婊℃墭鐩樺叆搴� + switch (param.getFromPort()) { + case "100"://婊℃墭鐩樺叆搴� assert waitPakins != null; - dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins); + dto = startupFullPutStore(Integer.valueOf(param.getFromPort()), param.getBarCode(), locTypeDto, waitPakins); break; - case 10://绌烘墭鐩樺叆搴� - dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode()); + case "200"://绌烘墭鐩樺叆搴� + dto = emptyPlateIn(Integer.valueOf(param.getFromPort()), locTypeDto, param.getBarCode()); break; default: break; } - log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode()); - return R.ok().add(dto); + log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarCode()); + return Re.ok(); } @PostMapping("/auto/emptyIn/v1") @ResponseBody - public R autoEmptyIn(@RequestBody LocTypeDto locTypeDto){ + public R autoEmptyIn(@RequestBody LocTypeDto locTypeDto) { // 婧愮珯鐐圭姸鎬佹娴� BasDevp sourceStaNo = basDevpService.checkSiteStatus(12, true); // 妫�绱㈠簱浣� - StartupDto dto = commonService.getLocNo( 10, 12, null,null,null, locTypeDto); + StartupDto dto = commonService.getLocNo(10, 12, null, null, null, locTypeDto); Date now = new Date(); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); @@ -134,12 +164,12 @@ wrkMast.setAppeTime(now); wrkMast.setModiTime(now); wrkMast.setMemo("鑷姩绌烘墭鍏ュ簱"); - return wrkMastService.insert(wrkMast) ? R.ok("鑷姩绌烘墭鍏ュ簱鎴愬姛,宸ヤ綔鍙�:"+wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍏ュ簱澶辫触"); + return wrkMastService.insert(wrkMast) ? R.ok("鑷姩绌烘墭鍏ュ簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍏ュ簱澶辫触"); } @PostMapping("auto/emptyOut/v1") @ResponseBody - public R autoEmptyOut(){ + public R autoEmptyOut() { LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_sts", "D")); if (Cools.isEmpty(locMast)) { @@ -147,9 +177,11 @@ } EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam(); emptyPlateOutParam.setOutSite(12); - emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locMast.getLocNo()+"");}}); + emptyPlateOutParam.setLocNos(new ArrayList<String>() {{ + add(locMast.getLocNo() + ""); + }}); WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam); - return R.ok(!Cools.isEmpty(wrkMast)? R.ok("鑷姩绌烘墭鍑哄簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触")); + return R.ok(!Cools.isEmpty(wrkMast) ? R.ok("鑷姩绌烘墭鍑哄簱鎴愬姛,宸ヤ綔鍙�:" + wrkMast.getWrkNo()) : R.error("鐢熸垚鑷姩绌烘墭鍑哄簱澶辫触")); } /** @@ -162,14 +194,14 @@ // 妫�绱㈠簱浣� List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList()); List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList()); - StartupDto dto = commonService.getLocNo( 1, devpNo, matnrs.get(0),batchs.get(0),null, locTypeDto); + StartupDto dto = commonService.getLocNo(1, devpNo, matnrs.get(0), batchs.get(0), null, locTypeDto); int workNo = dto.getWorkNo(); Date now = new Date(); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setWrkSts(0L); // 宸ヤ綔鐘舵�侊細0.寰呮帴鏀� wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 wrkMast.setIoPri(13D); // 浼樺厛绾� wrkMast.setCrnNo(dto.getCrnNo()); @@ -183,6 +215,7 @@ wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("Y"); wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 + wrkMast.setMk("N");//鏄惁瀹屾垚涓婃姤wcs // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); @@ -215,19 +248,19 @@ // 鏇存柊婧愮珯鐐逛俊鎭� sourceStaNo.setWrkNo(workNo); sourceStaNo.setModiTime(now); - if (!basDevpService.updateById(sourceStaNo)){ + if (!basDevpService.updateById(sourceStaNo)) { throw new CoolException("鏇存柊婧愮珯澶辫触"); } // 鏇存柊鐩爣搴撲綅鐘舵�� LocMast locMast = locMastService.selectById(dto.getLocNo()); - if (locMast.getLocSts().equals("O")){ + if (locMast.getLocSts().equals("O")) { locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 locMast.setModiTime(now); - if (!locMastService.updateById(locMast)){ + if (!locMastService.updateById(locMast)) { throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); } } else { - throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤"); } return dto; } @@ -237,13 +270,13 @@ // 婧愮珯鐐圭姸鎬佹娴� BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); // 妫�绱㈠簱浣� - StartupDto dto = commonService.getLocNo( 10, devpNo, null,null,null, locTypeDto); + StartupDto dto = commonService.getLocNo(10, devpNo, null, null, null, locTypeDto); int workNo = dto.getWorkNo(); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(workNo); wrkMast.setIoTime(new Date()); - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setWrkSts(0L); // 宸ヤ綔鐘舵�侊細0.寰呮帴鏀� wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱 wrkMast.setIoPri(13D); // 浼樺厛绾� wrkMast.setCrnNo(dto.getCrnNo()); @@ -267,21 +300,112 @@ // 鏇存柊婧愮珯鐐逛俊鎭� sourceStaNo.setWrkNo(workNo); sourceStaNo.setModiTime(new Date()); - if (!basDevpService.updateById(sourceStaNo)){ + if (!basDevpService.updateById(sourceStaNo)) { throw new CoolException("鏇存柊婧愮珯澶辫触"); } // 鏇存柊鐩爣搴撲綅鐘舵�� LocMast locMast = locMastService.selectById(dto.getLocNo()); - if (locMast.getLocSts().equals("O")){ + if (locMast.getLocSts().equals("O")) { locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 locMast.setModiTime(new Date()); - if (!locMastService.updateById(locMast)){ + if (!locMastService.updateById(locMast)) { throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); } } else { - throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); + throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤"); } return dto; } + @PostMapping("/fromwcs/task") + @ResponseBody + public Re status(@RequestBody StatusParam statusParam) { + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", statusParam.getTaskId())); + if(Cools.isEmpty(wrkMast)){ + return Re.error("娌℃湁鎵惧埌:"+statusParam.getTaskId()+"杩欐潯浠诲姟"); + } + /** + * 浠诲姟鐘舵�� + * 鎵ц杩囩▼涓� + * 鐨勭姸鎬併�� 0- 宸� 鎺� + * 鏀� , 1- 浠� 鍔� 寮� + * 濮�,2-鍙栬揣瀹屾垚,3- + * 浠诲姟涓柇,4-鏀捐揣 + * 瀹屾垚,8-浠诲姟缁撴潫 + */ + if (statusParam.getTaskStatus()==0){ + wrkMast.setWrkSts(1L);//1.宸叉帴鏀� + }else if (statusParam.getTaskStatus()==1){ + wrkMast.setWrkSts(2L);//2.浠诲姟寮�濮� + }else if (statusParam.getTaskStatus()==2){ + wrkMast.setWrkSts(3L);//3.鍙栬揣瀹屾垚 + }else if (statusParam.getTaskStatus()==3){ + wrkMast.setWrkSts(6L);//6.浠诲姟涓柇 + } else if (statusParam.getTaskStatus()==4){ + wrkMast.setWrkSts(7L);//6.鏀捐揣瀹屾垚 + }if (statusParam.getTaskStatus()==8){ + if(wrkMast.getIoType()==1 || wrkMast.getIoType() == 10){ + wrkMast.setWrkSts(4L);//4.鍏ュ簱瀹屾垚 + }else if (wrkMast.getIoType()==101 || wrkMast.getIoType() == 110){ + wrkMast.setWrkSts(14L);//14.宸插嚭搴撴湭纭 + } + } + wrkMastService.updateById(wrkMast); + return Re.ok(); + } + + @GetMapping("loc") + public void loc(){ + List<LocMast> locMasts=locMastService.selectList(new EntityWrapper<LocMast>()); + List<HashMap<String,Object>> mapList=new ArrayList<>(); + for (LocMast locMast : locMasts) { + if (locMast.getLev1()!=4){ + HashMap<String,Object> map=new HashMap<>(); + map.put("warehouse","wzzy"); + map.put("posiX",locMast.getRow1()); + map.put("posiY",locMast.getBay1()); + map.put("posiZ",locMast.getLev1()); + map.put("cargoNo",locMast.getLocNo()); + map.put("type","0"); + mapList.add(map); + } + } + if(mapList.size()>0){ + String response = ""; + boolean success = false; + try { + response = new HttpHandler.Builder() + .setUri(url) + .setPath(loc) + .setJson(JSON.toJSONString(mapList)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("returnStatus").equals(0)) { + success = true; + } else { + log.error("wms鍚屾wcs搴撲綅澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url+"/"+loc, JSON.toJSONString(mapList), response); + throw new CoolException("wms涓嬪彂浠诲姟缁檞cs澶辫触"); + } + } catch (Exception e) { + log.error("fail", e); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + throw new CoolException("wms涓嬪彂浠诲姟缁檞cs澶辫触"); + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "wms鍚屾wcs搴撲綅澶辫触", + url+"/"+loc, + null, + "127.0.0.1", + JSON.toJSONString(mapList), + response, + success + ); + } catch (Exception e) { log.error("", e); } + } + } + } + } 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..a9c8f59 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,7 @@ package com.zy.common.web.param; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; /** @@ -8,13 +10,43 @@ @Data public class SearchLocParam { - private Integer ioType; + /** + * 鐢宠鏃堕棿 + */ + @JsonProperty(value = "applyTime") + private String applyTime; - private Integer sourceStaNo; + /** + * 鍏ュ簱鍙g紪鍙� + */ + @JsonProperty(value = "fromPort") + private String fromPort; - private String barcode; + /** + * 鎵樼洏鐮� + */ + @JsonProperty(value = "barCode") + private String barCode; - // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:楂樺簱浣嶏級 - private Short locType1; + /** + * 璐х墿楂樺害 + * 1锛堜綆锛夛紝2锛堜腑锛夛紝 + * 3锛堥珮锛� 涓変釜绛� + * 绾э紝榛樿 0 + */ + private Integer cargoHeight; + + /** + * 璐х墿閲嶉噺 + * 绮剧‘搴︽牴鎹澶� + * 瀹氾紝鏈�楂� 0.1KG锛� + * 榛樿 0.0 + */ + private double cargoWeight; + + + +// // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:楂樺簱浣嶏級 +// private Short locType1; } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e2dc55d..da66372 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -57,6 +57,18 @@ doubleLocsLeft: 1,5,9,13 # 鍙虫繁搴撲綅鎺掑彿 doubleLocsRight: 4,8,12,16 + #鏄惁寮�鍚痺ms涓嬪彂浠诲姟缁檞cs + workIssued-fig : true + #鍦板潃 + url : 192.168.110.100:8082 + #wms涓嬪彂浠诲姟缁檞cs + workIssued : fromWms/taskReceive + #搴撲綅鍚屾 + loc: fromWms/cargoNoSyn + #鍏ュ簱绔� + inDevp : 100 + #鍑哄簱绔� + outDevp : 200 # wms鍙傛暟閰嶇疆 wms-parameter: # 鑷姩琛ョ┖鏉垮姛鑳藉紑鍏� diff --git a/src/main/resources/license.lic b/src/main/resources/license.lic index ed797a3..86821c9 100644 --- a/src/main/resources/license.lic +++ b/src/main/resources/license.lic Binary files differ -- Gitblit v1.9.1