From 7ea6501464a8df3cad55c21e04b606e88d7b8580 Mon Sep 17 00:00:00 2001 From: 野心家 <1051256694@qq.com> Date: 星期一, 05 五月 2025 15:41:45 +0800 Subject: [PATCH] 呼叫AGV搬运 --- src/main/java/com/zy/asrs/controller/MobileController.java | 361 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 270 insertions(+), 91 deletions(-) diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java index af7f3fb..75264dd 100644 --- a/src/main/java/com/zy/asrs/controller/MobileController.java +++ b/src/main/java/com/zy/asrs/controller/MobileController.java @@ -1,7 +1,9 @@ package com.zy.asrs.controller; +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.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; @@ -10,17 +12,31 @@ import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.entity.param.MobileAdjustParam; +import com.zy.asrs.entity.param.OffSaleParam; +import com.zy.asrs.entity.param.RCSParam; import com.zy.asrs.entity.result.MobileAdjustResult; +import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; +import com.zy.asrs.task.WorkMastScheduler; import com.zy.common.model.LocDto; import com.zy.common.model.TaskDto; import com.zy.common.model.WrkDto; +import com.zy.common.model.enums.WorkNoType; +import com.zy.common.service.CommonService; +import com.zy.common.utils.HttpHandler; import com.zy.common.web.BaseController; +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.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.*; + +import static jdk.nashorn.internal.runtime.regexp.joni.Config.log; /** * 绉诲姩绔帴鍙f帶鍒跺櫒 @@ -29,6 +45,7 @@ @RestController @RequestMapping("mobile") public class MobileController extends BaseController { + private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); @Autowired private MobileService mobileService; @@ -51,7 +68,35 @@ @Autowired private PackService packService; @Autowired - private WorkService workService; + private ManLocDetlMapper manLocDetlMapper; + @Autowired + private CommonService commonService; + @Autowired + private StaDescService staDescService; + @Autowired + private ApiLogService apiLogService; + @Value("${rcs.address.url}") + private String url; + @Value("${rcs.address.attrcs}") + private String attrcs; + + + // 鍟嗗搧涓婃灦 + @RequestMapping("/mat/onSale/auth") + @ManagerAuth + public R matOnSale(@RequestBody CombParam combParam){ + mobileService.onSale(combParam); + return R.ok("涓婃灦鎴愬姛"); + } + // 鍟嗗搧涓嬫灦 + @RequestMapping("/mat/offSale/auth") + //@ManagerAuth + public R matOffSale(@RequestBody OffSaleParam offSaleParam){ + mobileService.offSale(offSaleParam); + return R.ok("涓嬫灦鎴愬姛"); + } + + // 缁勬墭 ---------------------------------------------------------------------------------------------------- @@ -154,48 +199,10 @@ } /** - * 鍑哄簱纭 - 鎷f枡鍑哄簱 - 閫夋嫨鍏蜂綋鏉$爜鍟嗗搧 + * 鍑哄簱纭瀹屾垚 + * @param list + * @return */ - @RequestMapping("/pakout/confirm/pick/auth") - @ManagerAuth - public R pakoutQueryByBarcode(@RequestParam(required = false) Integer wrkNo - , @RequestParam(required = false) String matnr){ - if (Cools.isEmpty(wrkNo)) { - return R.ok(); - } - if (Cools.isEmpty(matnr)) { - return R.ok(); - } - WrkMast wrkMast = wrkMastService.selectById(wrkNo); - if (wrkMast == null) { - return R.ok(); - } - String orderNo = null; - List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); - for (WrkDetl wrkDetl : wrkDetls) { - if (Cools.isEmpty(orderNo)) { - orderNo = wrkDetl.getOrderNo(); - } - if ((wrkDetl.getMatnr() + "-" + wrkDetl.getBatch()).equals(matnr)) { - return R.ok().add(wrkDetl); - } - } - // 鏇挎崲 鏄庣粏 - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo())); - for (LocDetl locDetl : locDetls) { - if ((locDetl.getMatnr() + "-" + locDetl.getBatch()).equals(matnr)) { - WrkDetl wrkDetl = new WrkDetl(); - wrkDetl.sync(locDetl); - wrkDetl.setOrderNo(orderNo); - wrkDetl.setIoTime(wrkMast.getIoTime()); - wrkDetl.setWrkNo(wrkNo); - return R.ok().add(wrkDetl); - } - } - return R.error("绯荤粺閿欒锛屾潯鐮佷笉瀛樺湪"); - } - - @RequestMapping("/pakout/confirm/auth") @ManagerAuth @Transactional @@ -245,7 +252,7 @@ for (Integer wrkNo : wrkNos) { WrkMast wrkMast = wrkMastService.selectById(wrkNo); - if (wrkMast.getWrkSts() == 14 && (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N"))) { + if (wrkMast.getWrkSts() == 15 && (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N"))) { List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkNo); boolean complete = true; for (WrkDetl wrkDetl : wrkDetls) { @@ -265,6 +272,222 @@ } return R.ok("瀹屾垚纭"); } + + + /** + * 琛ョ┖鎵樼洏鍒板叆搴撶紦瀛樹綅 + * @param map + * @return + */ + @RequestMapping("/supplementEmpty") + @ManagerAuth + @Transactional + public R supplementEmpty(@RequestBody HashMap<String,Object> map){ + if (Cools.isEmpty(map)) { + return R.error("琛ョ┖鎵樼洏搴撲綅涓虹┖"); + } + List<LocMast> locMastList=locMastService.selectList(new EntityWrapper<LocMast>().eq("loc_sts", "D")); + if (locMastList.isEmpty()) { + return R.error("绔嬪簱閲屾病鏈夌┖鎵樼洏"); + } + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type); + + // 鑾峰彇婧愮珯 + Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() + .eq("type_no", 110) + .eq("stn_no", 102) + .eq("crn_no", locMastList.get(0).getCrnNo()); + StaDesc staDesc = staDescService.selectOne(wrapper); + Integer sourceStaNo = staDesc.getCrnStn(); + if (Cools.isEmpty(sourceStaNo)) { + throw new CoolException("妫�绱㈡簮绔欏け璐�"); + } + Date now = new Date(); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 + wrkMast.setIoPri(10D); + wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 + wrkMast.setStaNo(102); // 鐩爣绔� + wrkMast.setCrnNo(locMastList.get(0).getCrnNo()); + wrkMast.setSourceLocNo(locMastList.get(0).getLocNo()); // 婧愬簱浣� + wrkMast.setFullPlt("N"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("Y"); // 绌烘澘 + wrkMast.setLinkMis("N"); + wrkMast.setAppeUser(getUserId()); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(getUserId()); + wrkMast.setModiTime(now); + wrkMast.setMemo((String) map.get("locNo"));//agv鏀捐揣浣� + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害 + if (locMastList.get(0).getLocSts().equals("D")){ + locMastList.get(0).setLocSts("R"); + locMastList.get(0).setModiUser(getUserId()); + locMastList.get(0).setModiTime(now); + if (!locMastService.updateById(locMastList.get(0))) { + throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�"); + } + } + return R.ok(); + } + + /** + * agv鎵弿婧愮珯鐐规樉绀虹洰鏍囩珯鐐� + * @param locNo + * @return + */ + @RequestMapping("/AGVSite") + public R AGVSite(@RequestParam(required = false) String locNo){ + HashMap<Integer,String> map=new HashMap<>(); + map.put(100,"100-鍏ュ簱鍙�"); + map.put(1000,"1000-琛ョ┖鏉垮彛"); + map.put(2001,"2001-鍑哄簱鍙�1"); + map.put(2002,"2002-鍑哄簱鍙�2"); + map.put(3001,"3001-浣滀笟鍙�1"); + map.put(3002,"3002-浣滀笟鍙�2"); + map.remove(Integer.parseInt(locNo)); + return R.ok(map); + } + + /** + * 鎵ц绉诲簱浠诲姟 + * @param sourceStaNo + * @param staNo + * @return + */ + @RequestMapping("/AGVMove") + public R AGVMove(@RequestParam(required = false) String sourceStaNo + ,@RequestParam(required = false) String staNo){ + RCSParam rcsParam = new RCSParam(); + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy骞碝M鏈坉d鏃� HH:mm:ss"); + String formattedDate = now.format(formatter); // 鏍煎紡鍖栨棩鏈熸椂闂� + //缃戠粶娴佹按鍙� + rcsParam.setReqId(now.toString()); + //搴旂敤鏍囪瘑 + rcsParam.setClientId("WMS"); + //閫氱煡鏃堕棿 + rcsParam.setReqTime(formattedDate); + RCSParam.DataBody dataBody=new RCSParam.DataBody(); + //浠诲姟鍙� + dataBody.setId(formattedDate); + + List<RCSParam.TaskBody> taskBodyList=new ArrayList<>(); + RCSParam.TaskBody taskBody=new RCSParam.TaskBody(); + //鍙栬揣绫诲瀷 + taskBody.setType("load"); + taskBody.setStation(sourceStaNo); + taskBodyList.add(taskBody); + + RCSParam.TaskBody taskBody1=new RCSParam.TaskBody(); + //鏀捐揣绫诲瀷 + taskBody1.setType("unload"); + taskBody1.setStation(staNo); + taskBodyList.add(taskBody1); + + dataBody.setTasks(taskBodyList); + rcsParam.setData(dataBody); + String response =""; + Boolean bool =false; + + try { + log.info("wms娲惧彂鎼繍浠诲姟缁橝GV鎼繍={}", rcsParam); + response = new HttpHandler.Builder() + // .setHeaders(headParam) + .setUri(url) + .setPath(attrcs) + .setJson(JSON.toJSONString(rcsParam)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if(jsonObject.getBoolean("IsSuccess")){ + bool = true; + } + } catch (Exception e) { + log.error("wms娲惧彂鎼繍浠诲姟缁橝GV鎼繍澶辫触杩斿洖鍊�={}", response); + } finally { + apiLogService.save("wms娲惧彂鎼繍浠诲姟缁橝GV鎼繍" + , url + attrcs + , null + , "127.0.0.1" + , JSON.toJSONString(rcsParam) + , response + , bool + ); + } + if(bool){ + return R.ok(); + }else { + return R.error("涓嬪彂浠诲姟澶辫触"); + } + + } + + + // 鏍规嵁搴撲綅鐮佸拰鍟嗗搧鐮佹悳绱㈠晢鍝� + @RequestMapping("/mat/find/auth") + public R find(@RequestParam(required = false) String locNo + , @RequestParam(required = false) String matnr){ + //List<ManLocDetl> manLocDetls = manLocDetlMapper.selectItem0(locNo, matnr); + ManLocDetl manLocDetl = manLocDetlMapper.selectLocNo0(locNo, matnr); + return R.ok(manLocDetl); + //return R.ok(manLocDetlMapper.selectItem0(locNo, matnr)); + } + + /** + * 鍑哄簱纭 - 鎷f枡鍑哄簱 - 閫夋嫨鍏蜂綋鏉$爜鍟嗗搧 + */ + @RequestMapping("/pakout/confirm/pick/auth") + @ManagerAuth + public R pakoutQueryByBarcode(@RequestParam(required = false) Integer wrkNo + , @RequestParam(required = false) String matnr){ + if (Cools.isEmpty(wrkNo)) { + return R.ok(); + } + if (Cools.isEmpty(matnr)) { + return R.ok(); + } + WrkMast wrkMast = wrkMastService.selectById(wrkNo); + if (wrkMast == null) { + return R.ok(); + } + String orderNo = null; + List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); + for (WrkDetl wrkDetl : wrkDetls) { + if (Cools.isEmpty(orderNo)) { + orderNo = wrkDetl.getOrderNo(); + } + if ((wrkDetl.getMatnr() + "-" + wrkDetl.getBatch()).equals(matnr)) { + return R.ok().add(wrkDetl); + } + } + // 鏇挎崲 鏄庣粏 + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo())); + for (LocDetl locDetl : locDetls) { + if ((locDetl.getMatnr() + "-" + locDetl.getBatch()).equals(matnr)) { + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(locDetl); + wrkDetl.setOrderNo(orderNo); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setWrkNo(wrkNo); + return R.ok().add(wrkDetl); + } + } + return R.error("绯荤粺閿欒锛屾潯鐮佷笉瀛樺湪"); + } + + + // 鐩樼偣 ---------------------------------------------------------------------------------------------------- @@ -299,58 +522,14 @@ return R.ok("鐩樼偣鎴愬姛"); } - @PostMapping("/out/pakout/auth") -// @ManagerAuth(memo = "鏍规嵁璁㈠崟鍑哄簱") + @PostMapping("/order/out/pakout/auth") + @ManagerAuth(memo = "璁㈠崟鍑哄簱") public synchronized R pakoutByOrder(@RequestBody JSONObject param) { if(!param.containsKey("staNo") || !param.containsKey("orderNo")){ return R.parse(BaseRes.PARAM); } - Integer staNo = param.containsKey("staNo") ? Integer.parseInt(param.get("staNo").toString()) : 0; - String orderNo = param.containsKey("orderNo") ? param.get("orderNo").toString() : ""; - - BasDevp sta = basDevpService.checkSiteStatus(staNo); - //鏍规嵁璁㈠崟鍙风敓鎴愬嚭搴撲换鍔″伐浣滄。,寰呭疄鐜� - List<OrderDetl> orderDetls = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no", orderNo)); - for(OrderDetl orderDetl : orderDetls){ - - } - - -// if (Cools.isEmpty(locDtos)) { -// return R.parse(BaseRes.PARAM); -// } -// boolean lack = true; -// for (LocDto locDto : locDtos) { -// if (!locDto.isLack()) { -// lack = false; -// break; -// } -// } -// if (lack) { -// return R.error("搴撳瓨涓嶈冻"); -// } -// -// Thread.sleep(1000L); -// -// List<TaskDto> taskDtos = new ArrayList<>(); -// // 鏍规嵁 锛堝簱浣� & 鍑哄簱绔欙級 鍒嗙粍锛� 鐞嗘兂鐘舵�侊細涓�缁勪负涓�娆″嚭搴撲换鍔� -// for (LocDto locDto : locDtos) { -// if (locDto.isLack()) { continue; } -// TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto); -// if (TaskDto.has(taskDtos, taskDto)) { -// TaskDto dto = TaskDto.find(taskDtos, taskDto); -// assert dto != null; -// dto.getLocDtos().addAll(taskDto.getLocDtos()); -// } else { -// taskDtos.add(taskDto); -// } -// } -// // ----------------------------------------------------------------------------------------------- -// for (TaskDto taskDto : taskDtos) { -// BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo()); -// workService.stockOut(staNo, taskDto, getUserId()); -// } - return R.ok(); + mobileService.pakoutByOrder(param,getUserId()); + return R.ok("鍑哄簱鎴愬姛"); } } -- Gitblit v1.9.1