src/main/java/com/zy/asrs/controller/DigitalTwinController.java
@@ -31,16 +31,16 @@ // @ManagerAuth public R overview(@RequestParam(required = false) String areaId){ //digitalTwinService.overview(areaId); DtOverviewVo dtOverviewVo = digitalTwinService.overview(areaId); DtOverviewVo dtOverviewVo = DtOverviewVo.builder() .totalLoc(999) .useLoc(900) .idleLoc(99) .todayOutbound(160) .todayWarehousing(170) .remainingStock(180) .build(); // DtOverviewVo dtOverviewVo = DtOverviewVo.builder() // .totalLoc(999) // .useLoc(900) // .idleLoc(99) // .todayOutbound(160) // .todayWarehousing(170) // .remainingStock(180) // .build(); return R.ok().add(dtOverviewVo); } @@ -57,19 +57,19 @@ public R recentOrder(@RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate){ // digitalTwinService.order(startDate, endDate); List<DtOrderVo> orderVoList = digitalTwinService.order(startDate, endDate); DtOrderVo dtOrderVo = DtOrderVo.builder() .orderDate("2025-10-22") .orderNum(156) .build(); DtOrderVo dtOrderVo2 = DtOrderVo.builder() .orderDate("2025-10-23") .orderNum(166) .build(); List<DtOrderVo> orderVoList = new ArrayList<>(); orderVoList.add(dtOrderVo); orderVoList.add(dtOrderVo2); // DtOrderVo dtOrderVo = DtOrderVo.builder() // .orderDate("2025-10-22") // .orderNum(156) // .build(); // DtOrderVo dtOrderVo2 = DtOrderVo.builder() // .orderDate("2025-10-23") // .orderNum(166) // .build(); // List<DtOrderVo> orderVoList = new ArrayList<>(); // orderVoList.add(dtOrderVo); // orderVoList.add(dtOrderVo2); return R.ok().add(orderVoList); } @@ -88,19 +88,19 @@ @RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate){ // digitalTwinService.recentLoc(areaId, startDate, endDate); List<DtLocVo> locVoList = digitalTwinService.recentLoc(areaId, startDate, endDate); DtLocVo dtLocVo = DtLocVo.builder() .locDate("2025-10-22") .idleNum(208) .build(); DtLocVo dtLocVo2 = DtLocVo.builder() .locDate("2025-10-23") .idleNum(177) .build(); List<DtLocVo> locVoList = new ArrayList<>(); locVoList.add(dtLocVo); locVoList.add(dtLocVo2); // DtLocVo dtLocVo = DtLocVo.builder() // .locDate("2025-10-22") // .idleNum(208) // .build(); // DtLocVo dtLocVo2 = DtLocVo.builder() // .locDate("2025-10-23") // .idleNum(177) // .build(); // List<DtLocVo> locVoList = new ArrayList<>(); // locVoList.add(dtLocVo); // locVoList.add(dtLocVo2); return R.ok().add(locVoList); } @@ -119,21 +119,22 @@ @RequestParam(required = false) String startDate, @RequestParam(required = false) String endDate){ // digitalTwinService.inAndOutBound(areaId, startDate, endDate); List<DtInAndOutBoundVo> inAndOutBoundVoList = digitalTwinService.inAndOutBound(areaId, startDate, endDate); DtInAndOutBoundVo dtInAndOutBoundVo = DtInAndOutBoundVo.builder() .boundDate("2025-10-22") .inBoundNum(237) .outBoundNum(487) .build(); DtInAndOutBoundVo dtInAndOutBoundVo2 = DtInAndOutBoundVo.builder() .boundDate("2025-10-23") .inBoundNum(187) .outBoundNum(287) .build(); List<DtInAndOutBoundVo> inAndOutBoundVoList = new ArrayList<>(); inAndOutBoundVoList.add(dtInAndOutBoundVo); inAndOutBoundVoList.add(dtInAndOutBoundVo2); // DtInAndOutBoundVo dtInAndOutBoundVo = DtInAndOutBoundVo.builder() // .boundDate("2025-10-22") // .inBoundNum(237) // .outBoundNum(487) // .build(); // DtInAndOutBoundVo dtInAndOutBoundVo2 = DtInAndOutBoundVo.builder() // .boundDate("2025-10-23") // .inBoundNum(187) // .outBoundNum(287) // .build(); // List<DtInAndOutBoundVo> inAndOutBoundVoList = new ArrayList<>(); // inAndOutBoundVoList.add(dtInAndOutBoundVo); // inAndOutBoundVoList.add(dtInAndOutBoundVo2); return R.ok().add(inAndOutBoundVoList); } @@ -152,31 +153,31 @@ @RequestParam(required = false) Integer pageIndex, @RequestParam(required = false) Integer pageSize){ // digitalTwinService.recentDetainMat(areaId, overDayNum, pageIndex, pageSize); List<DtDetainMatVo> detainMatVoList = digitalTwinService.recentDetainMat(areaId, overDayNum, pageIndex, pageSize); DtDetainMatVo dtDetainMatVo = DtDetainMatVo.builder() .belongAreaId("A1") .belongAreaName("刀具库") .matId("mat10001") .matName("道具把") .lokId("loc1001") .lokName("库位10001") .detainTime(765) .inBoundTime("2025-10-11T11:15:16") .build(); DtDetainMatVo dtDetainMatVo2 = DtDetainMatVo.builder() .belongAreaId("A1") .belongAreaName("刀具库") .matId("mat10002") .matName("道具把") .lokId("loc1002") .lokName("库位10002") .detainTime(665) .inBoundTime("2025-10-10T11:15:16") .build(); List<DtDetainMatVo> detainMatVoList = new ArrayList<>(); detainMatVoList.add(dtDetainMatVo); detainMatVoList.add(dtDetainMatVo2); // DtDetainMatVo dtDetainMatVo = DtDetainMatVo.builder() // .belongAreaId("A1") // .belongAreaName("刀具库") // .matId("mat10001") // .matName("道具把") // .lokId("loc1001") // .lokName("库位10001") // .detainTime(765) // .inBoundTime("2025-10-11T11:15:16") // .build(); // DtDetainMatVo dtDetainMatVo2 = DtDetainMatVo.builder() // .belongAreaId("A1") // .belongAreaName("刀具库") // .matId("mat10002") // .matName("道具把") // .lokId("loc1002") // .lokName("库位10002") // .detainTime(665) // .inBoundTime("2025-10-10T11:15:16") // .build(); // List<DtDetainMatVo> detainMatVoList = new ArrayList<>(); // detainMatVoList.add(dtDetainMatVo); // detainMatVoList.add(dtDetainMatVo2); return R.ok().add(detainMatVoList); } @@ -231,76 +232,74 @@ @RequestMapping(value = "/warehouseDetail") // @ManagerAuth public R warehouseDetail(@RequestParam(required = false) String areaId){ List<DtLocDetailVo> dtLocDetailVoList = digitalTwinService.warehouseDetail(areaId); // digitalTwinService.warehouseDetail(areaId); List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>(); DtLocDetailVo dtLocDetailVo = new DtLocDetailVo(); dtLocDetailVo.setLocNo("CA0100202"); dtLocDetailVo.setLocSts("O"); dtLocDetailVo.setAreaId(10010L); dtLocDetailVo.setAreaName("刀具库"); dtLocDetailVo.setRow1(1); dtLocDetailVo.setBay1(2); dtLocDetailVo.setLev1(2); LocMast locMast = new LocMast(); locMast.setLocNo("CA0100202"); locMast.setLocSts("O"); locMast.setRow1(1); locMast.setBay1(2); locMast.setLev1(2); dtLocDetailVo.setLocMast(locMast); LocDetl locDetl = new LocDetl(); locDetl.setLocNo("CA0100202"); locDetl.setAreaId(10010L); locDetl.setAreaName("刀具库"); locDetl.setMatnr("mat10001"); locDetl.setMaktx("刀把"); dtLocDetailVo.setLocDetl(locDetl); dtLocDetailVoList.add(dtLocDetailVo); DtLocDetailVo dtLocDetailVo2 = new DtLocDetailVo(); dtLocDetailVo2.setLocNo("CA0100202"); dtLocDetailVo2.setLocSts("O"); dtLocDetailVo2.setAreaId(10010L); dtLocDetailVo2.setAreaName("刀具库"); dtLocDetailVo2.setRow1(1); dtLocDetailVo2.setBay1(2); dtLocDetailVo2.setLev1(2); LocMast locMast2 = new LocMast(); locMast2.setLocNo("CA0100203"); locMast2.setLocSts("O"); locMast2.setRow1(1); locMast2.setBay1(2); locMast2.setLev1(3); dtLocDetailVo2.setLocMast(locMast2); LocDetl locDetl2 = new LocDetl(); locDetl2.setLocNo("CA0100203"); locDetl2.setAreaId(10010L); locDetl2.setAreaName("刀具库"); locDetl2.setMatnr("mat10001"); locDetl2.setMaktx("刀把"); dtLocDetailVo2.setLocDetl(locDetl2); dtLocDetailVoList.add(dtLocDetailVo2); return R.ok().add(dtLocDetailVoList); } // List<DtLocDetailVo> dtLocDetailVoList = new ArrayList<>(); // DtLocDetailVo dtLocDetailVo = new DtLocDetailVo(); // dtLocDetailVo.setLocNo("CA0100202"); // dtLocDetailVo.setLocSts("O"); // dtLocDetailVo.setAreaId(10010L); // dtLocDetailVo.setAreaName("刀具库"); // dtLocDetailVo.setRow1(1); // dtLocDetailVo.setBay1(2); // dtLocDetailVo.setLev1(2); // // LocMast locMast = new LocMast(); // locMast.setLocNo("CA0100202"); // locMast.setLocSts("O"); // locMast.setRow1(1); // locMast.setBay1(2); // locMast.setLev1(2); // dtLocDetailVo.setLocMast(locMast); // // LocDetl locDetl = new LocDetl(); // locDetl.setLocNo("CA0100202"); // locDetl.setAreaId(10010L); // locDetl.setAreaName("刀具库"); // locDetl.setMatnr("mat10001"); // locDetl.setMaktx("刀把"); // dtLocDetailVo.setLocDetl(locDetl); // dtLocDetailVoList.add(dtLocDetailVo); // // // DtLocDetailVo dtLocDetailVo2 = new DtLocDetailVo(); // dtLocDetailVo2.setLocNo("CA0100202"); // dtLocDetailVo2.setLocSts("O"); // dtLocDetailVo2.setAreaId(10010L); // dtLocDetailVo2.setAreaName("刀具库"); // dtLocDetailVo2.setRow1(1); // dtLocDetailVo2.setBay1(2); // dtLocDetailVo2.setLev1(2); // // LocMast locMast2 = new LocMast(); // locMast2.setLocNo("CA0100203"); // locMast2.setLocSts("O"); // locMast2.setRow1(1); // locMast2.setBay1(2); // locMast2.setLev1(3); // dtLocDetailVo2.setLocMast(locMast2); // // LocDetl locDetl2 = new LocDetl(); // locDetl2.setLocNo("1001"); // locDetl2.setLocNo("CA0100203"); // locDetl2.setAreaId(10010L); // locDetl2.setAreaName("刀具库"); // locDetl2.setMatnr("mat10001"); // locDetl2.setMaktx("刀把"); // dtLocDetailVo2.setLocDetl(locDetl2); // dtLocDetailVoList.add(dtLocDetailVo2); // //// List<LocDetl> locDetlList = new ArrayList<>(); //// locDetlList.add(locDetl); //// locDetlList.add(locDetl2); return R.ok().add(dtLocDetailVoList); } // //// LocDetl locDetl2 = new LocDetl(); //// locDetl2.setLocNo("1001"); //// locDetl2.setAreaId(10010L); //// locDetl2.setAreaName("刀具库"); //// locDetl2.setMatnr("mat10001"); //// locDetl2.setMaktx("刀把"); //// ////// List<LocDetl> locDetlList = new ArrayList<>(); ////// locDetlList.add(locDetl); ////// locDetlList.add(locDetl2); } src/main/java/com/zy/asrs/controller/LocMastController.java
@@ -1,5 +1,6 @@ package com.zy.asrs.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; @@ -12,6 +13,7 @@ import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.digitaltwin.LocPicDto; import com.zy.asrs.entity.param.LocMastInitParam; import com.zy.asrs.mapper.LocDetlMapper; import com.zy.asrs.service.*; @@ -20,6 +22,7 @@ import com.zy.common.service.CommonService; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -46,6 +49,8 @@ private WrkMastLogService wrkMastLogService; @Resource private WrkDetlLogService wrkDetlLogService; @Value("${wcs.url}") private String WCS_URL; @RequestMapping(value = "/locMast/init/pwd") public R locMastInitPwd(@RequestParam(required = false) String pwd) { @@ -335,4 +340,39 @@ return R.error("初始化失败===>" + e.getMessage()); } } @GetMapping("/locMast/picUrl") @ManagerAuth public R getPicUrl(@RequestParam String locNo) { LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_no", locNo)); if (locMast == null) { return R.error(); } List<LocPicDto> list = new ArrayList<>(); String picStr = locMast.getPic(); if (Cools.isEmpty(picStr)) { return R.ok().add(list); } List<String> pics = JSON.parseArray(picStr, String.class); for (String pic : pics) { List<String> picList = new ArrayList<>(); String[] split = pic.split("_"); String picPath = split[0]; String locNoStr = ""; if (split.length > 1) { locNoStr = split[1]; picPath += "_" + locNoStr; } picList.add("http://" + WCS_URL + "/image/" + picPath + "-1.jpg"); picList.add("http://" + WCS_URL + "/image/" + picPath + "-2.jpg"); LocPicDto locPicDto = new LocPicDto(); locPicDto.setLocNo(locNoStr); locPicDto.setPics(picList); list.add(locPicDto); } return R.ok().add(list); } } src/main/java/com/zy/asrs/controller/MesController.java
@@ -41,14 +41,14 @@ return mesReturn; } // // 出库申请 // @PostMapping("/api/mes/outBoundOrder") // public MesReturn outBoundOrder(@RequestBody MesOutApply param){ // // MesReturn mesReturn = new MesReturn(); // mesReturn.setSuccess(mesService.outBoundOrder(param) == 1 ? "1" : "2"); // return mesReturn; // } // 出库申请 @PostMapping("/api/mes/outBoundOrder") public MesReturn outBoundOrder(@RequestBody MesOutApply param){ MesReturn mesReturn = new MesReturn(); mesReturn.setSuccess(mesService.outBoundOrder(param) == 1 ? "1" : "2"); return mesReturn; } // // 出库入库订单申请 @PostMapping("/api/mes/callOutBoundOrder") src/main/java/com/zy/asrs/controller/MobileController.java
@@ -14,6 +14,10 @@ import com.zy.asrs.entity.result.MobileAdjustResult; import com.zy.asrs.mapper.ManLocDetlMapper; import com.zy.asrs.service.*; import com.zy.asrs.service.impl.OrderDetlPakinServiceImpl; import com.zy.asrs.service.impl.OrderDetlPakoutServiceImpl; import com.zy.asrs.service.impl.OrderPakinServiceImpl; import com.zy.asrs.service.impl.OrderPakoutServiceImpl; import com.zy.asrs.utils.OrderInAndOutUtil; import com.zy.common.model.WrkDto; import com.zy.common.utils.HttpHandler; @@ -24,6 +28,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.*; /** @@ -61,6 +66,16 @@ @Resource private StaDescService staDescService; @Autowired private OrderPakinServiceImpl orderPakinService; @Autowired private TaskService taskService; @Autowired private OrderDetlPakinServiceImpl orderDetlPakinService; @Autowired private OrderPakoutServiceImpl orderPakoutService; @Autowired private OrderDetlPakoutServiceImpl orderDetlPakoutService; @RequestMapping("/pda/WarehouseOut/v1") @ManagerAuth(memo = "并板途中拣料-参考念初") @@ -209,48 +224,50 @@ @RequestMapping("/order/search/orderNo/auth") @ManagerAuth public R orderSearchByBarcode(@RequestParam String orderNo){ if (Cools.isEmpty(orderNo)){ orderNo=null; } // List<Order> orders = orderService.selectorderNoL(orderNo); List<Order> orders = OrderInAndOutUtil.selectOrderNoL(null, orderNo); if (Cools.isEmpty(orders)){ OrderPakin orderPakin = orderPakinService.selectByNo(orderNo); if (orderPakin == null) { return R.ok(); } LinkedList<CombParam> combParams = new LinkedList<>(); if (!Cools.isEmpty(orders)){ for (Order order:orders){ CombParam combParam=new CombParam(); if (order == null) { continue; DocType docType = docTypeService.selectById(orderPakin.getDocType()); if (docType.getPakin() != 1) { return R.ok(); } DocType docType = docTypeService.selectById(order.getDocType()); if (docType.getPakin() == null || docType.getPakin() != 1) { continue; List<OrderDetlPakin> orderDetlPakins = orderPakinService.selectWorkingDetls(orderPakin.getId()); if (Cools.isEmpty(orderDetlPakins)) { return R.ok(); } if (order.getSettle() > 2) { continue; List<OrderDetlPakin> orderDetls1= new ArrayList<>(); for (OrderDetlPakin orderDetl : orderDetlPakins) { if(orderDetl.getAnfme()-orderDetl.getWorkQty()>0){ orderDetls1.add(orderDetl); } // List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId()); List<OrderDetl> orderDetls = OrderInAndOutUtil.selectWorkingDetls(order.getPakinPakoutStatus$(), order.getId()); if (!Cools.isEmpty(orderDetls)) { LinkedList<CombParam.CombMat> combMats = new LinkedList<>(); for (OrderDetl orderDetl:orderDetls){ CombParam.CombMat combMat = new CombParam.CombMat(); combMat.setMatnr(orderDetl.getMatnr()); combMat.setBatch(orderDetl.getBatch()); combMat.setAnfme(orderDetl.getAnfme()-orderDetl.getWorkQty()); combMat.setMaktx(orderDetl.getMaktx()); combMat.setSpecs(orderDetl.getSpecs()); combMats.add(combMat); } combParam.setCombMats(combMats); return R.ok().add(orderDetls1); } combParam.setOrderNo(order.getOrderNo()); combParams.add(combParam); @RequestMapping("/order/search/orderNo/out/auth") @ManagerAuth public R orderSearchByBarcodeOut(@RequestParam String orderNo){ OrderPakout orderPakout = orderPakoutService.selectByNo(orderNo); if (orderPakout == null) { return R.ok(); } DocType docType = docTypeService.selectById(orderPakout.getDocType()); List<OrderDetlPakout> orderDetlPakouts = orderPakoutService.selectWorkingDetls(orderPakout.getId()); if (Cools.isEmpty(orderDetlPakouts)) { return R.ok(); } return R.ok().add(combParams); List<OrderDetlPakout> orderDetls1= new ArrayList<>(); for (OrderDetlPakout orderDetl : orderDetlPakouts) { if(orderDetl.getAnfme()-orderDetl.getWorkQty()>0){ orderDetls1.add(orderDetl); } } return R.ok().add(orderDetls1); } @RequestMapping("/comb/auth") @@ -549,4 +566,116 @@ return mobileService.callEmptyBinOutBound(locNo,size,getUserId()); } /** * 空板回库或者拣料回库 * * @param sourceStaNo * @param staNo * @return */ @RequestMapping("/AGVStartReturn") public synchronized R AGVStartReturn(@RequestParam(required = false) String sourceStaNo , @RequestParam(required = false) String staNo , @RequestParam(required = false) String taskNo) { if (Cools.isEmpty(sourceStaNo) || Cools.isEmpty(staNo)) { return R.error("源站点和托盘码不能为空"); } List<Task> tasks = taskService.selectList(new EntityWrapper<Task>().eq("source_sta_no", sourceStaNo).eq("barcode", staNo)); if (tasks.size() > 0) { return R.error("该托盘="+staNo+"已经存在搬运任务,请不要重复下发"); } String barcode = staNo.substring(0,1); if(barcode.equals("3")){ taskNo = "307"; }else if(barcode.equals("4")){ taskNo = "402"; }else if(barcode.equals("5")){ taskNo = "401"; } R r = R.ok(); //生成AGV搬运出库任务 // 保存工作档 Task task = new Task(); Date date = new Date(); String TaskNo = 555555 + "aa" + date.getTime(); task.setWrkNo((int) date.getTime()) .setTaskNo(TaskNo) .setIoTime(date) .setWrkSts(301L) // 工作状态:301.任务下发 .setIoType(3) // 入出库状态: 3.站到站 4.站到区域 .setTaskType("agv") .setIoPri(10D) .setFullPlt("Y") // 满板:Y .setPicking("N") // 拣料 .setExitMk("N")// 退出 .setStaNo(staNo) .setSourceStaNo(taskNo)//agv取货站点 .setEmptyMk("N")// 空板 .setBarcode(staNo)// 托盘码 .setLinkMis("N") .setAppeUser(9945L) .setAppeTime(date) .setModiUser(9945L) .setModiTime(date); if (!taskService.insert(task)) { throw new CoolException("保存工作档失败"); } return r; } @RequestMapping("/orderIn") public synchronized R AGVOrderInReturn() { List<OrderPakin> settle = orderPakinService.selectList(new EntityWrapper<OrderPakin>().in("settle", 1, 2)); List<String> list = new ArrayList<>(); for (OrderPakin orderPakin : settle) { if (orderPakin.getSettle()==2){ List<OrderDetlPakin> orderId = orderDetlPakinService.selectList(new EntityWrapper<OrderDetlPakin>().eq("order_id", orderPakin.getId())); Boolean boo=true; for (OrderDetlPakin orderDetlPakin : orderId) { if (orderDetlPakin.getAnfme()>orderDetlPakin.getWorkQty()){ boo=false; break; } } if (boo) { settle.remove(orderPakin); }else { list.add(orderPakin.getOrderNo()); } }else { list.add(orderPakin.getOrderNo()); } } return R.ok(list); } @RequestMapping("/orderOut") public synchronized R AGVOrderOutReturn() { List<OrderPakout> settle = orderPakoutService.selectList(new EntityWrapper<OrderPakout>().in("settle", 1, 2).eq("doc_type",11)); List<String> list = new ArrayList<>(); for (OrderPakout orderPakout: settle) { if (orderPakout.getSettle()==2){ List<OrderDetlPakout> orderId = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().eq("order_id", orderPakout.getId())); Boolean boo=true; for (OrderDetlPakout orderDetlPakout: orderId) { if (orderDetlPakout.getAnfme()>orderDetlPakout.getWorkQty()){ boo=false; break; } } if (boo) { settle.remove(orderPakout); }else { list.add(orderPakout.getOrderNo()); } }else { list.add(orderPakout.getOrderNo()); } } return R.ok(list); } } src/main/java/com/zy/asrs/controller/OutController.java
@@ -11,6 +11,7 @@ import com.zy.common.model.LocDto; import com.zy.common.model.TaskDto; import com.zy.common.web.BaseController; import lombok.Synchronized; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -172,9 +173,10 @@ return R.ok().add(locDtos); } @Synchronized @PostMapping("/out/pakout/auth") @ManagerAuth(memo = "订单出库") public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException { public R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException { if (Cools.isEmpty(locDtos)) { return R.parse(BaseRes.PARAM); } @@ -204,7 +206,9 @@ List<TaskDto> taskDtos = new ArrayList<>(); // 根据 (库位 & 出库站) 分组; 理想状态:一组为一次出库任务 for (LocDto locDto : locDtos) { if (locDto.isLack()) { continue; } if (locDto.isLack()) { continue; } TaskDto taskDto = new TaskDto(locDto.getLocNo(), locDto.getStaNo(), locDto); if (TaskDto.has(taskDtos, taskDto)) { TaskDto dto = TaskDto.find(taskDtos, taskDto); @@ -234,6 +238,12 @@ if (orderPakout.getDocType() == 11) { if (i==size){ for (;j<=orderPakout.getPayType();j++){ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", taskDto.getLocNo())); Integer locType = Integer.valueOf(locMast1.getLocType2()); //配盘 出库单出库区域时Q-L4时,出大托盘空板 if(orderPakout.getCstmrName().equals("Q-L4")){ locType = 2; } String bar=""; //具体待定 // if(!Cools.isEmpty(orderPakout.getShipCode())&&orderPakout.getShipCode().equals("A01")){ @@ -242,10 +252,10 @@ LocMast locMast = new LocMast(); if(Cools.isEmpty(bar)){ locMast=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_sts", "D")); .eq("loc_sts", "D").eq("loc_type2", locType)); }else { locMast=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_sts", "D").like("barcode", bar)); .eq("loc_sts", "D").eq("loc_type2", locType).like("barcode", bar)); } if (Cools.isEmpty(locMast)) { @@ -254,7 +264,9 @@ String locNo = locMast.getLocNo(); EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam(); emptyPlateOutParam.setOutSite(303); emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locNo);}}); emptyPlateOutParam.setLocNos(new ArrayList<String>() {{ add(locNo); }}); String agvSta = ""; if(locMast.getLocType3()==2){ @@ -266,6 +278,13 @@ } }else if(i == 4){ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", taskDto.getLocNo())); Integer locType = Integer.valueOf(locMast1.getLocType2()); //配盘 出库单出库区域时Q-L4时,出大托盘空板 if(orderPakout.getCstmrName().equals("Q-L4")){ locType = 2; } String bar=""; if(!Cools.isEmpty(orderPakout.getShipCode())&&orderPakout.getShipCode().equals("A01")){ bar = "A01"; @@ -273,10 +292,10 @@ LocMast locMast = null; if(Cools.isEmpty(bar)){ locMast=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_sts", "D")); .eq("loc_sts", "D").eq("loc_type2", locType)); }else { locMast=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_sts", "D").like("barcode", bar)); .eq("loc_sts", "D").eq("loc_type2", locType).like("barcode", bar)); } if (Cools.isEmpty(locMast)) { @@ -285,7 +304,9 @@ String locNo = locMast.getLocNo(); EmptyPlateOutParam emptyPlateOutParam = new EmptyPlateOutParam(); emptyPlateOutParam.setOutSite(303); emptyPlateOutParam.setLocNos(new ArrayList<String>(){{add(locNo);}}); emptyPlateOutParam.setLocNos(new ArrayList<String>() {{ add(locNo); }}); String agvSta = ""; if(locMast.getLocType3()==2){ @@ -294,10 +315,80 @@ } WrkMast wrkMast = workService.emptyPlateOut(emptyPlateOutParam,ioPri,agvSta); ioPri--; j++; } } } return R.ok(); } @PostMapping("/out/pakout/preview/auth1") @ManagerAuth public R pakoutPreview1(@RequestBody String orderNo) throws InterruptedException { if (Cools.isEmpty(orderNo)) { return R.parse(BaseRes.PARAM); } List<OrderDetlPakout> orderDetlPakouts = orderDetlPakoutService.selectList(new EntityWrapper<OrderDetlPakout>().eq("order_no", orderNo)); if (orderDetlPakouts.size() == 0) { return R.parse("订单明细为空"); } List<LocDto> locDtos = new ArrayList<>(); Set<String> exist = new HashSet<>(); // 获取订单主表 OrderPakout orderPakOut = orderPakOutService.selectByNo(orderDetlPakouts.get(0).getOrderNo()); for (OrderDetlPakout orderDetl : orderDetlPakouts) { double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); if (issued <= 0.0D) { continue; } List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist, orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getBrand(), orderPakOut.getDocType() == 11 ? null : orderDetl.getStandby1(), orderDetl.getStandby2(), orderDetl.getStandby3(), orderDetl.getBoxType1(), orderDetl.getBoxType2(), orderDetl.getBoxType3()); for (LocDetl locDetl : locDetls) { if (issued > 0) { LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued); LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo())); locDto.setFrozen(locDetl.getFrozen()); locDto.setFrozenLoc(locMast.getFrozen()); List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103); locDto.setStaNos(staNos); locDto.setBrand(orderDetl.getBrand()); locDto.setStandby1(orderDetl.getStandby1()); locDto.setStandby2(orderDetl.getStandby2()); locDto.setStandby3(orderDetl.getStandby3()); locDto.setBoxType1(orderDetl.getBoxType1()); locDto.setBoxType2(orderDetl.getBoxType2()); locDto.setBoxType3(orderDetl.getBoxType3()); locDtos.add(locDto); exist.add(locDetl.getLocNo()); // 剩余待出数量递减 issued = issued - locDetl.getAnfme(); } else { break; } } if (issued > 0) { LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); locDto.setBrand(orderDetl.getBrand()); locDto.setStandby1(orderDetl.getStandby1()); locDto.setStandby2(orderDetl.getStandby2()); locDto.setStandby3(orderDetl.getStandby3()); locDto.setBoxType1(orderDetl.getBoxType1()); locDto.setBoxType2(orderDetl.getBoxType2()); locDto.setBoxType3(orderDetl.getBoxType3()); locDto.setLack(Boolean.TRUE); locDtos.add(locDto); } } R pakout = pakout(locDtos); return R.ok().add(pakout); } } src/main/java/com/zy/asrs/entity/LocMast.java
@@ -209,6 +209,9 @@ @TableField("frozen_memo") private String frozenMemo; @ApiModelProperty(value= "拍照图片") private String pic; public String getWhsType$(){ BasWhsTypeService service = SpringUtils.getBean(BasWhsTypeService.class); src/main/java/com/zy/asrs/entity/Task.java
@@ -135,6 +135,10 @@ @ApiModelProperty(value= "料架号") private String packed; @ApiModelProperty(value= "下发AGV任务计数") @TableField("ctn_type") private Integer ctnType=0; /** * 拣料 */ @@ -173,10 +177,6 @@ @ApiModelProperty(value= "工作时间") @TableField("io_time") private Date ioTime; @ApiModelProperty(value= "") @TableField("ctn_type") private Integer ctnType; @ApiModelProperty(value= "") @TableField("ove_mk") src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -332,6 +332,9 @@ @TableField("task_no") private String taskNo; @ApiModelProperty(value= "拍照图片") private String pic; public WrkMast() {} public String getYmd$(){ src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -327,6 +327,9 @@ @TableField("take_none") private String takeNone; @ApiModelProperty(value= "拍照图片") private String pic; public WrkMastLog() { } src/main/java/com/zy/asrs/entity/digitaltwin/DtOrderVo.java
@@ -3,13 +3,17 @@ import lombok.Builder; import lombok.Data; import java.time.LocalDate; import java.time.ZoneId; import java.util.Date; // 数字孪生:按天订单数量 @Data @Builder // DtOrderVo.java public class DtOrderVo { // 日期 private String orderDate; // 订单数量 private String orderDate; // 或 LocalDate private Integer orderNum; } src/main/java/com/zy/asrs/entity/digitaltwin/LocPicDto.java
New file @@ -0,0 +1,13 @@ package com.zy.asrs.entity.digitaltwin; import lombok.Data; import java.util.List; @Data public class LocPicDto { private String locNo; private List<String> pics; } src/main/java/com/zy/asrs/entity/param/CombParam.java
@@ -19,6 +19,9 @@ // 库位编号 private String locNo; //agv原站点 private String rsta; private List<CombMat> combMats; @Data src/main/java/com/zy/asrs/entity/rcs/RcsTaskSubmit.java
@@ -9,7 +9,7 @@ public class RcsTaskSubmit { // 任务类型,枚举值:TRANSPORT搬运。 private String taskType = "TRANSPORT"; private String taskType = "CS3"; // 执行步骤集合。本次任务机器人需要执行的关键路径,序号0代表起点,序号1代表终点。 private List<RcsTaskTargetRoute> targetRoute; // 任务唯一编号,如果为空,系统生成任务号并返回。 src/main/java/com/zy/asrs/service/impl/DigitalTwinServiceImpl.java
@@ -74,7 +74,9 @@ endTime = endDate.substring(0, 4) + "-" + endDate.substring(4, 6) + "-" + endDate.substring(6, 8) + "00:00:00"; List<DtOrderVo> dbOrder = digitalTwinMapper.recentOrder(startTime, endTime); // 空日期补全 for (DtOrderVo dtOrderVo : dbOrder) { dtOrderVo.setOrderDate(dtOrderVo.getOrderDate()); } return dbOrder; } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -733,7 +733,7 @@ Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, orderNo); OrderInAndOutUtil.updateOrder(Boolean.TRUE, order.getId(), 2L, userId); }); if(!Cools.isEmpty(param.getLocNo())){ if(!Cools.isEmpty(param.getRsta()) && param.getRsta().contains("-")){ //生成AGV搬运任务 //生成AGV搬运出库任务 // 保存工作档 @@ -741,14 +741,14 @@ Date date = new Date(); String s = ""; if (param.getBarcode().charAt(0) == '3'){ s = "307"; s = "Z-307"; }else if (param.getBarcode().charAt(0) == '4'){ s = "401"; s = "Z-402"; }else if (param.getBarcode().charAt(0) == '5'){ s = "402"; s = "Z-401"; } String TaskNo = param.getBarcode()+"-"+date.getTime(); task.setWrkNo(Integer.getInteger(param.getBarcode())) String TaskNo = param.getBarcode()+"aa"+date.getTime(); task.setWrkNo((int) date.getTime()) .setTaskNo(TaskNo) .setIoTime(date) .setWrkSts(301L) // 工作状态:301.任务下发 @@ -759,7 +759,7 @@ .setPicking("N") // 拣料 .setExitMk("N")// 退出 .setStaNo(s) .setSourceStaNo(param.getLocNo())//空料架缓存区E1 .setSourceStaNo(param.getRsta())//agv取货位 .setEmptyMk("N")// 空板 .setBarcode(param.getBarcode())// 托盘码 .setLinkMis("N") @@ -1334,11 +1334,12 @@ //滑块库 if(locMast.getLocType3()==1){ if(locMast.getLocType2()==1){ sta = "Z-402"; }else if(locMast.getLocType2()==2){ sta = "Z-401"; } }else if(locMast.getLocType3()==2){ sta="307"; sta="Z-307"; } // 获取路径 src/main/java/com/zy/asrs/service/impl/OrderPakinServiceImpl.java
@@ -100,6 +100,7 @@ orderDetl.setCreateBy(order.getCreateBy()); orderDetl.setUpdateTime(order.getUpdateTime()); orderDetl.setUpdateBy(order.getUpdateBy()); orderDetl.setBarcode(wrkDetl.getZpallet()); if (!orderDetlPakinService.insert(orderDetl)) { throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); } src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -233,7 +233,7 @@ RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class); if("SUCCESS".equals(rcsReturn.getCode())||"200".equals(rcsReturn.getCode())) { JSONObject data = rcsReturn.getData(); String robotTaskCode = data.getString("RobotTaskCode"); String robotTaskCode = data.getString("robotTaskCode"); if (robotTaskCode.equals(rcsTaskSubmit.getRobotTaskCode())){ return 1; } @@ -327,6 +327,8 @@ String robotTaskCode = rcsReporterTask.getRobotTaskCode(); String singleRobotCode = rcsReporterTask.getSingleRobotCode(); String[] split = robotTaskCode.split("-"); robotTaskCode = split[0]; //华晓AGV状态反馈,及申请 if(Cools.isEmpty(rcsReporterTask.getExtra())){ if(Cools.isEmpty(rcsReporterTask.getMethod())){ src/main/java/com/zy/asrs/task/AGVTaskReportScheduler.java
@@ -67,7 +67,7 @@ // 保存工作档 Task task = new Task(); Date date = new Date(); String TaskNo = wrkMast.getWrkNo() + "-" + date.getTime(); String TaskNo = wrkMast.getWrkNo() + "aa" + date.getTime(); task.setWrkNo(wrkMast.getWrkNo()) .setTaskNo(TaskNo) .setIoTime(date) @@ -78,8 +78,8 @@ .setFullPlt("Y") // 满板:Y .setPicking("N") // 拣料 .setExitMk("N")// 退出 .setStaNo(stnNo) .setSourceStaNo(wrkMast.getSourceStaNo())//空料架缓存区E1 .setStaNo(wrkMast.getMemo()) .setSourceStaNo("Z-"+wrkMast.getSourceStaNo()) .setEmptyMk("N")// 空板 .setBarcode(wrkMast.getBarcode())// 托盘码 .setLinkMis("N") @@ -123,7 +123,7 @@ //如果是接驳站点则需要判断接驳站点是否有空料架 //如果有空料架需要判断是否有出库任务 //有出库任务则禁止下发本次搬运任务 if (task.getStaNo().equals("401") || task.getStaNo().equals("402") || task.getStaNo().equals("307")) { if (task.getStaNo().equals("Z-401") || task.getStaNo().equals("Z-402") || task.getStaNo().equals("Z-307")) { BasDevp basDevp = basDevpService.checkSiteStatus(Integer.parseInt(task.getStaNo())); if (basDevp != null && !Cools.isEmpty(basDevp.getInreq1()) && basDevp.getInreq1().equals("Y")) { List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() @@ -139,13 +139,13 @@ //生成AGV搬运出库任务 // 保存工作档 String SourceStaNo = ""; if (task.getStaNo().equals("401")) { if (task.getStaNo().equals("Z-401")) { //大料架缓冲区 SourceStaNo = "E3"; }else if (task.getStaNo().equals("402")) { SourceStaNo = "E2"; }else if (task.getStaNo().equals("307")) { SourceStaNo = "E1"; SourceStaNo = "Q-E3"; }else if (task.getStaNo().equals("Z-402")) { SourceStaNo = "Q-E2"; }else if (task.getStaNo().equals("Z-307")) { SourceStaNo = "Q-E1"; } Task task3 = new Task(); Date date = new Date(); @@ -183,10 +183,18 @@ if (!start.isSuccess()) { task.setUpdMk("X"); task.setErrorMemo(start.getMsg()); task.setCtnType(task.getCtnType()+1);//下发任务计数 task.setModiTime(new Date()); if (!taskService.updateById(task)) { log.error("工作档[workNo={}]标记待处理失败", task.getWrkNo()); } }else { task.setCtnType(task.getCtnType()+1); task.setModiTime(new Date()); task.setWrkSts(302L);//任务执行中 if (!taskService.updateById(task)) { log.error("工作档[workNo={}]标记待处理失败", task.getWrkNo()); } } } src/main/java/com/zy/asrs/task/OrderSyncScheduler.java
@@ -179,7 +179,7 @@ void otherInOrderCompleteReport() { String erpReport = Parameter.get().getErpReport(); if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) { OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().eq("settle", 4) OrderPakin orderPakin = orderPakinService.selectOne(new EntityWrapper<OrderPakin>().ne("doc_type",1).eq("settle", 4) .ne("doc_type", 1).orderBy("update_time")); if (orderPakin == null) { return; src/main/java/com/zy/asrs/task/handler/AGVTaskReportHandler.java
@@ -37,21 +37,48 @@ }else if(task.getIoType()==5){ SourceStaNoType = "ZONE"; } String taskType = "CS3"; Boolean flag1 = false; Boolean flag2 = false; if(task.getStaNo().equals("Z-401")|| task.getStaNo().equals("Z-402")|| task.getStaNo().equals("Z-307")){ taskType = "YLIN"; flag1 = true; } if (task.getSourceStaNo().equals("Z-401")|| task.getSourceStaNo().equals("Z-402")|| task.getSourceStaNo().equals("Z-307")){ taskType = "YLOUT"; flag2 = true; } if(flag1&&flag2){ taskType = "YLBOTH"; } //AGV区域中无法用- String StaNo = task.getStaNo(); String SourceStaNo = task.getSourceStaNo(); if (task.getStaNo().split("-")[0].equals("Q")) { String[] split = task.getStaNo().split("-"); StaNo = split[0]+split[1]; } if (task.getSourceStaNo().split("-")[0].equals("Q")) { String[] split = task.getStaNo().split("-"); SourceStaNo = split[0]+split[1]; } // 下发给RCS RcsTaskSubmit rcsTaskSubmit = new RcsTaskSubmit(); rcsTaskSubmit.setRobotTaskCode(task.getTaskNo()); rcsTaskSubmit.setTaskType(taskType); rcsTaskSubmit.setRobotTaskCode(task.getTaskNo()+"-"+task.getCtnType()); rcsTaskSubmit.setInitPriority(10); //默认10 List<RcsTaskTargetRoute> targetRouteList = new ArrayList<>(); RcsTaskTargetRoute startRoute = new RcsTaskTargetRoute(); startRoute.setSeq(0); startRoute.setType(SourceStaNoType); startRoute.setCode(task.getSourceStaNo()); startRoute.setCode(SourceStaNo); startRoute.setOperation("COLLECT"); targetRouteList.add(startRoute); RcsTaskTargetRoute endRoute = new RcsTaskTargetRoute(); endRoute.setSeq(1); endRoute.setType(TargetStaNoType); endRoute.setCode(task.getStaNo()); endRoute.setCode(StaNo); endRoute.setOperation("DELIVERY"); targetRouteList.add(endRoute); rcsTaskSubmit.setTargetRoute(targetRouteList); src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -93,6 +93,7 @@ locMast.setLocSts("D"); locMast.setIoTime(now); locMast.setModiTime(now); locMast.setPic(wrkMast.getPic()); if (!locMastService.updateById(locMast)) { // exceptionHandle("空板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -177,6 +178,7 @@ locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); locMast.setPic(wrkMast.getPic()); if (!locMastService.updateById(locMast)) { // exceptionHandle("全板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -285,6 +287,7 @@ locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); locMast.setPic(wrkMast.getPic()); if (!locMastService.updateById(locMast)) { // exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -354,6 +357,7 @@ locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); locMast.setPic(wrkMast.getPic()); if (!locMastService.updateById(locMast)) { // exceptionHandle("并板入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -391,6 +395,7 @@ locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); locMast.setPic(wrkMast.getPic()); if (!locMastService.updateById(locMast)) { // exceptionHandle("盘点入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -413,8 +418,10 @@ } } // 修改源库位状态 ==> O String picUrl = ""; LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); if (null != sourceLoc) { picUrl = sourceLoc.getPic(); sourceLoc.setBarcode(""); sourceLoc.setLocSts("O"); sourceLoc.setModiTime(now); @@ -430,6 +437,7 @@ locMast.setBarcode(wrkMast.getBarcode()); locMast.setIoTime(now); locMast.setModiTime(now); locMast.setPic(picUrl); if (!locMastService.updateById(locMast)) { // exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); src/main/java/com/zy/common/model/DetlDto.java
@@ -227,9 +227,9 @@ if (Cools.isEmpty(matnr)) { return null; } for (DetlDto detlDto : detlDtos) { for (DetlDto detlDto : detlDtos) {//&& standby1.equals(detlDto.getStandby1()) if (matnr.equals(detlDto.getMatnr()) && Cools.eq(batch, detlDto.getBatch()) && brand.equals(detlDto.getBrand()) && standby1.equals(detlDto.getStandby1()) && brand.equals(detlDto.getBrand()) && standby2.equals(detlDto.getStandby2()) && standby3.equals(detlDto.getStandby3()) && boxType1.equals(detlDto.getBoxType1()) && boxType2.equals(detlDto.getBoxType2()) && boxType3.equals(detlDto.getBoxType3())) { src/main/java/com/zy/common/model/TaskDto.java
@@ -71,14 +71,14 @@ // 汇总不考虑序列码 List<DetlDto> detlDtos = new ArrayList<>(); for (LocDto locDto : this.getLocDtos()) { DetlDto dto = new DetlDto(locDto.getMatnr(), locDto.getBatch(),locDto.getBrand(),locDto.getStandby1(),locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3(), locDto.getAnfme()); DetlDto dto = new DetlDto(locDto.getMatnr(), locDto.getBatch(),locDto.getBrand(),null,locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3(), locDto.getAnfme()); if (DetlDto.has(detlDtos, dto)) { DetlDto detlDto = DetlDto.find(detlDtos, locDto.getMatnr(), dto.getBatch(),dto.getBrand(),dto.getStandby1(),dto.getStandby2(),dto.getStandby3(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3()); DetlDto detlDto = DetlDto.find(detlDtos, locDto.getMatnr(), dto.getBatch(),dto.getBrand(),null,dto.getStandby2(),dto.getStandby3(),dto.getBoxType1(),dto.getBoxType2(),dto.getBoxType3()); assert detlDto != null; detlDto.setAnfme(detlDto.getAnfme() + locDto.getAnfme()); } else { detlDtos.add(new DetlDto(locDto.getMatnr(), locDto.getBatch() ,locDto.getBrand(),locDto.getStandby1(),locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3() ,locDto.getBrand(),null,locDto.getStandby2(),locDto.getStandby3(),locDto.getBoxType1(),locDto.getBoxType2(),locDto.getBoxType3() , locDto.getAnfme())); } } src/main/resources/application-dev.yml
@@ -129,6 +129,9 @@ #托盘物料号 zpalletId: tuopan wcs: url: 127.0.0.1:9094/wcs #mes对接 mes: @@ -139,7 +142,7 @@ #海康对接 hik: switch: true url: http://172.26.11.98:80/ url: http://172.26.11.98:80/rcs/rtas/ #华晓对接 hx: src/main/resources/mapper/LocMastMapper.xml
@@ -36,6 +36,7 @@ <result column="ctn_no" property="ctnNo" /> <result column="frozen" property="frozen" /> <result column="frozen_memo" property="frozenMemo" /> <result column="pic" property="pic" /> </resultMap> <select id="queryFreeLocMast" resultMap="BaseResultMap"> src/main/resources/mapper/ViewDigitalTwinMapper.xml
@@ -3,6 +3,13 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.zy.asrs.mapper.DigitalTwinMapper"> <resultMap id="dtOrderMap" type="com.zy.asrs.entity.digitaltwin.DtOrderVo"> <constructor> <arg column="orderDate" javaType="java.util.Date"/> <arg column="orderNum" javaType="java.lang.Integer"/> </constructor> </resultMap> <!--总览:总库位、已用库位、今日库存、今日出库、今日入库--> <select id="overview" resultType="Double"> SELECT COUNT(*) FROM asr_loc_mast WHERE loc_sts != 'Z' @@ -32,10 +39,26 @@ </select> <select id="recentOrder" resultType="com.zy.asrs.entity.digitaltwin.DtOrderVo"> SELECT CONVERT(VARCHAR, order_time, 23) as orderDate, COUNT(*) AS orderNum FROM man_order SELECT FORMAT(orderDate, 'yyyyMMdd') as orderDate, COUNT(*) as orderNum FROM ( SELECT CAST(order_time AS DATE) as orderDate FROM man_order_pakin WHERE order_time BETWEEN #{startTime} AND #{endTime} GROUP BY CONVERT(VARCHAR, order_time, 23) UNION ALL SELECT CAST(order_time AS DATE) as orderDate FROM man_order_pakout WHERE order_time BETWEEN #{startTime} AND #{endTime} ) combined GROUP BY orderDate ORDER BY orderDate </select> <select id="recentInBound" resultType="com.zy.asrs.entity.digitaltwin.DtInAndOutBoundVo"> src/main/resources/mapper/WrkMastLogMapper.xml
@@ -61,6 +61,7 @@ <result column="full_plt" property="fullPlt" /> <result column="pre_have" property="preHave" /> <result column="take_none" property="takeNone" /> <result column="pic" property="pic" /> </resultMap> <sql id="queryWhere"> <where> src/main/resources/mapper/WrkMastMapper.xml
@@ -60,6 +60,7 @@ <result column="full_plt" property="fullPlt" /> <result column="pre_have" property="preHave" /> <result column="take_none" property="takeNone" /> <result column="pic" property="pic" /> </resultMap> <select id="selectToBeCompleteData" resultMap="BaseResultMap"> src/main/webapp/static/js/stoMan/stoQue.js
@@ -56,7 +56,7 @@ ,{field: 'locType3$', align: 'center',title: '轻重类型', hide:true} ,{field: 'modiUser$', align: 'center',title: '修改人员', hide:true} ,{field: 'modiTime$', align: 'center',title: '修改时间', width: 180, hide:false} ,{ fixed: 'right', title:'操作', align: 'center', toolbar: '#operate'} ,{ fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width: 180} ]], request: { pageName: 'curr', @@ -181,6 +181,46 @@ } locDetlToLayer(data.locNo); break; case 'showPic': let imgHtml = '<div style="height:100%;display: flex;justify-content: space-around;align-items: center;flex-wrap: wrap;">'; $.ajax({ url: baseUrl+"/locMast/picUrl", headers: {'token': localStorage.getItem('token')}, data: { locNo: data.locNo }, method: 'GET', traditional:true, success: function (res) { if (res.code === 200){ res.data.forEach((item) => { let locNo = item.locNo; let pics = item.pics; pics.forEach((pic) => { let tmp = '<div><div><img width="600" src="' + pic + '" /></div><div>' + locNo + '</div></div>'; imgHtml += tmp; }) }) imgHtml += "</div>"; layer.open({ type: 1, title: '查看图片', area: [top.detailWidth, top.detailHeight], shadeClose: true, content: imgHtml, success: function(layero, index){ } }); } else if (res.code === 403){ top.location.href = baseUrl+"/"; } else { layer.msg(res.msg) } } }); break; } }); src/main/webapp/views/stoMan/stoQue.html
@@ -105,6 +105,7 @@ <script type="text/html" id="operate"> <a class="layui-btn layui-btn-xs loc-detl" lay-event="locDetl">查看明细</a> <a class="layui-btn layui-btn-xs loc-detl" lay-event="showPic">查看图片</a> </script> <!--明细表-->