| | |
| | | // wrapper.in("source", docIds); |
| | | Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(curr, limit), wrapper); |
| | | for (OrderDetl record : page.getRecords()) { |
| | | Double sumAnfme = agvLocDetlService.getSumAnfmeDb(record.getMatnr(), record.getThreeCode(), 1); |
| | | Double sumAnfme = agvLocDetlService.getSumAnfmeDb2(record.getMatnr(), record.getThreeCode(), 1); |
| | | record.setStock(sumAnfme == null ? 0 : sumAnfme); |
| | | } |
| | | return R.ok(page); |
| | |
| | | import com.zy.common.model.OrderMergeVo; |
| | | import com.zy.common.model.TaskDto; |
| | | import com.zy.common.web.BaseController; |
| | | import com.zy.system.entity.Config; |
| | | import com.zy.system.service.ConfigService; |
| | | import lombok.Synchronized; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | @Autowired |
| | | private AgvLocDetlService agvLocDetlService; |
| | | |
| | | @Autowired |
| | | private ConfigService configService; |
| | | |
| | | |
| | | @Autowired |
| | | private AgvWrkMastService agvWrkMastService; |
| | | |
| | | @PostMapping("/out/pakout/orderDetlIds/auth") |
| | | @ManagerAuth |
| | | public R pakoutOrderDetlIds(@RequestParam Long orderId) throws InterruptedException { |
| | |
| | | Order order = orderService.selectByNo(orderDetl.getOrderNo()); |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if("人工补货单".equals(docType.getDocName())){ |
| | | if (issued <= 0.0D) { continue; } |
| | | if (issued <= 0.0D) { |
| | | continue; |
| | | } |
| | | issued = locDetlService.queryStockAndSetLocDto1(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime()); |
| | | if (issued > 0) { |
| | | LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued,orderDetl.getProcessSts()); |
| | |
| | | locDtoList.add(locDto); |
| | | } |
| | | }else { |
| | | if (issued <= 0.0D) { continue; } |
| | | if (issued <= 0.0D) { |
| | | continue; |
| | | } |
| | | |
| | | //从平库寻找 |
| | | //issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime()); |
| | |
| | | Order order = orderService.selectByNo(orderDetl.getOrderNo()); |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if("人工补货单".equals(docType.getDocName())){ |
| | | if (issued <= 0.0D) { continue; } |
| | | if (issued <= 0.0D) { |
| | | continue; |
| | | } |
| | | issued = locDetlService.queryStockAndSetLocDto1(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime()); |
| | | if (issued > 0) { |
| | | LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued,orderDetl.getProcessSts()); |
| | |
| | | locDtoList.add(locDto); |
| | | } |
| | | }else { |
| | | if (issued <= 0.0D) { continue; } |
| | | if (issued <= 0.0D) { |
| | | continue; |
| | | } |
| | | |
| | | //从平库寻找 |
| | | //issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime()); |
| | |
| | | Order order = orderService.selectByNo(orderDetl.getOrderNo()); |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if("人工补货单".equals(docType.getDocName())){ |
| | | if (issued <= 0.0D) { continue; } |
| | | if (issued <= 0.0D) { |
| | | continue; |
| | | } |
| | | issued = locDetlService.queryStockAndSetLocDto1(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime()); |
| | | if (issued > 0) { |
| | | LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued,orderDetl.getProcessSts()); |
| | |
| | | locDtoList.add(locDto); |
| | | } |
| | | }else { |
| | | if (issued <= 0.0D) { continue; } |
| | | if (issued <= 0.0D) { |
| | | continue; |
| | | } |
| | | |
| | | //从平库寻找 |
| | | //issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime()); |
| | |
| | | AgvLocMast agvLocMast = agvLocMastService.selectById(locDto.getLocNo()); |
| | | List<String> staNoList = agvBasDevpService.selectCacheShelvesStationCodeByLocType(agvLocMast.getLocType1()); |
| | | |
| | | |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "FOUR")); |
| | | if (config != null) { |
| | | if (config.getStatus().intValue() == 1) { |
| | | List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", locDto.getAgvStaNo())); |
| | | if (agvWrkMasts != null && !agvWrkMasts.isEmpty()) { |
| | | for (AgvWrkMast agvWrkMast : agvWrkMasts) { |
| | | if (agvWrkMast.getWrkSts() < 204) { |
| | | return R.error(locDto.getAgvStaNo() + "该站点已有任务,等任务完成或者货架搬走再叫料"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | if(!staNoList.contains(locDto.getAgvStaNo())){ |
| | | return R.error(locDto.getAgvStaNo()+"该站点已有出库任务,无法选择该站点出库"); |
| | | } |
| | |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/process/out/pakout/auth") |
| | | @ManagerAuth(memo = "加工出库") |
| | | @Transactional |
| | |
| | | private void generateTaskDto(List<LocDto> locDtos, List<TaskDto> taskDtos, List<TaskDto> agvTaskDtos){ |
| | | // 根据 (库位 & 出库站) 分组; 理想状态:一组为一次出库任务 |
| | | for (LocDto locDto : locDtos) { |
| | | if (locDto.isLack()) { continue; } |
| | | if (locDto.isLack()) { |
| | | continue; |
| | | } |
| | | //AGV库 |
| | | if(!Cools.isEmpty(locDto.getAgvStaNos())){ |
| | | //平库 |
| | |
| | | for (LocDto locDto : locDtos) { |
| | | if (!isJSON(locDto.getOrderNo())) { |
| | | //if (!Cools.isEmpty(locDto.getOrderNo())) { |
| | | if (Cools.isEmpty(locDto.getOrderNo())) { continue; } |
| | | if (Cools.isEmpty(locDto.getOrderNo())) { |
| | | continue; |
| | | } |
| | | OrderDto orderDto = new OrderDto(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch(), locDto.getAnfme()); |
| | | if (OrderDto.has(orderDtos, orderDto)) { |
| | | OrderDto dto = OrderDto.find(orderDtos, orderDto); |
| | |
| | | "FROM\n" + |
| | | "\tagv_bas_devp\n" + |
| | | "\tLEFT JOIN agv_wrk_mast ON agv_bas_devp.dev_no = agv_wrk_mast.source_loc_no \n" + |
| | | "or agv_bas_devp.dev_no = agv_wrk_mast.loc_no \n" + |
| | | "WHERE\n" + |
| | | "\tagv_wrk_mast.loc_no IS NULL \n" + |
| | | "\tAND agv_bas_devp.loc_type1 = #{locType} \n" + |
| | |
| | | Double selectSumAnfmeByMatnrProcessed2(@Param("matnr") String matnr,@Param("threeCode") String threeCode); |
| | | |
| | | |
| | | @Select("select sum(a.anfme) as sum from agv_loc_detl a left join agv_loc_mast b on a.loc_no = b.loc_no where (b.loc_sts = 'F' or b.loc_sts = 'R') and b.floor = #{floor} and a.matnr = #{matnr} AND a.three_code = #{threeCode} AND a.process_sts != 1") |
| | | @Select("select sum(a.anfme) as sum from agv_loc_detl a left join agv_loc_mast b on a.loc_no = b.loc_no where b.floor = 1 AND a.matnr = #{matnr} AND a.three_code = #{threeCode} AND a.process_sts != 1 AND (b.loc_sts = 'F' or b.loc_sts = 'R')") |
| | | Double selectSumAnfmeByMatnr2(@Param("matnr") String matnr,@Param("threeCode") String threeCode,@Param("floor") Integer floor); |
| | | |
| | | @Select("select sum(a.anfme) as sum from agv_loc_detl a left join agv_loc_mast b on a.loc_no = b.loc_no where (b.loc_sts = 'F' or b.loc_sts = 'R') AND b.floor != 2 AND a.matnr = #{matnr} AND a.three_code = #{threeCode} AND a.process_sts != 1") |
| | | Double selectSumAnfmeByMatnr3(@Param("matnr") String matnr,@Param("threeCode") String threeCode,@Param("floor") Integer floor); |
| | | |
| | | |
| | | @Select("select sum(a.anfme) as sum from agv_loc_detl a left join agv_loc_mast b on a.loc_no = b.loc_no where (b.loc_sts = 'F' or b.loc_sts = 'R') and b.floor != #{floor} and a.matnr = #{matnr} AND a.three_code = #{threeCode} AND a.process_sts != 1") |
| | | Double getSumAnfmeback(@Param("matnr") String matnr,@Param("threeCode") String threeCode,@Param("floor") Integer floor); |
| | | |
| | |
| | | |
| | | Double getSumAnfmeProcessed2(String matnr, String threeCode); |
| | | |
| | | |
| | | Double getSumAnfmeDb(String matnr, String threeCode, Integer floor); |
| | | |
| | | |
| | | Double getSumAnfmeDb2(String matnr, String threeCode, Integer floor); |
| | | |
| | | Double getSumAnfmeback(String matnr, String threeCode, Integer floor); |
| | | |
| | | Integer sum(); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Double getSumAnfmeDb2(String matnr, String threeCode, Integer floor) { |
| | | return this.baseMapper.selectSumAnfmeByMatnr3(matnr, threeCode, floor); |
| | | } |
| | | |
| | | @Override |
| | | public Double getSumAnfmeback(String matnr, String threeCode, Integer floor) { |
| | | return this.baseMapper.getSumAnfmeback(matnr, threeCode, floor); |
| | | } |
| | |
| | | //货架编码 |
| | | mast.setBarcode(agvLocMast.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setWhsType(Integer.parseInt(agvLocMast.getBarcode().substring(0,2))); |
| | | |
| | | mast.setAppeUser(userId); |
| | | mast.setAppeTime(now); |
| | |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, false); |
| | | } |
| | | } else { |
| | | if (station.endsWith("F4") && locType == 3) { |
| | | agvLocMast = agvCommonService.getLocNo(locType, 1, false, false); |
| | | } else { |
| | | List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().like("loc_no", "02F1").like("source_loc_no", "F1")); |
| | | if (Integer.parseInt(config.getValue()) <= agvWrkMasts.size()) { |
| | | agvLocMast = agvCommonService.getLocNo(locType, agvBasDevp.getFloor(), false, true); |
| | |
| | | //agvLocMast = agvCommonService.getLocNo(locType,agvBasDevp.getFloor(),false,false); |
| | | } |
| | | } |
| | | } |
| | | |
| | | String devNo = agvBasDevp.getDevNo(); |
| | | String locNo = agvLocMast.getLocNo(); |
| | |
| | | */ |
| | | @Scheduled(cron = "0/30 * * * * ? ") |
| | | private void autoEmptyBack4() { |
| | | // 查询 不为1楼的空货架 |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList(new EntityWrapper<AgvLocMast>() |
| | | // TODO 四期 |
| | | .eq("loc_sts", "D").eq("loc_type1", 3).andNew().ne("floor", 1).or().ne("lev1", 1)); |
| | | if (agvLocMasts.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | |
| | | for (AgvLocMast agvLocMast : agvLocMasts) { |
| | | if (agvLocMast.getLocNo().contains("F4")) { |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "RETURN_3_TIME")); |
| | | boolean flag = false; |
| | | if (config != null && !Cools.isEmpty(config.getValue())) { |
| | | try { |
| | | // 判断是否在执行时间内 |
| | | ProcesTimeData procesTimeData = JSONObject.parseObject(config.getValue(), ProcesTimeData.class); |
| | | if (procesTimeData != null && config.getStatus() == 1 && TimeUtils.between(procesTimeData)) { |
| | | flag = true; |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("6类型空货架返回的执行时间点解析异常:===》异常原因:" + e.getMessage()); |
| | | flag = true; |
| | | } |
| | | } |
| | | if (flag) { |
| | | try { |
| | | autoMoveHandler.autoEmptyBack4(agvLocMast); |
| | | } catch (Exception e) { |
| | | log.error("库位号" + agvLocMast.getLocNo() + "空板自动回库 库位-接驳点 库位-吸塑车间,处理失败:===》异常原因:" + e.getMessage()); |
| | | } |
| | | } |
| | | } else { |
| | | try { |
| | | autoMoveHandler.autoEmptyBack4(agvLocMast); |
| | | } catch (Exception e) { |
| | | log.error("库位号" + agvLocMast.getLocNo() + "空板自动回库 库位-接驳点 库位-吸塑车间,处理失败:===》异常原因:" + e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.AgvLocDetl; |
| | | import com.zy.asrs.entity.DocType; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.mapper.OrderDetlMapper; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | |
| | | List<Order> orders = orderService.selectComplete(); |
| | | for (Order order : orders) { |
| | | //如果是调拨单则进行判断 |
| | | // if (order.getDocType() == 33) { |
| | | // //查询库存中是否存在该订单的物料信息,存在则不处理该订单 |
| | | // List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); |
| | | // Boolean flag = false; |
| | | // for (OrderDetl orderDetl : orderDetlList) { |
| | | // List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("matnr", orderDetl.getMatnr()).eq("three_code", orderDetl.getThreeCode())); |
| | | // if (!Cools.isEmpty(agvLocDetls)) { |
| | | // //只要有一项订单明细存在,则标识为true,跳过该订单 |
| | | // flag = true; |
| | | // } |
| | | // } |
| | | // if (flag) { |
| | | // continue; |
| | | // } |
| | | // } |
| | | if (order.getDocType() == 33) { |
| | | //查询库存中是否存在该订单的物料信息,存在则不处理该订单 |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); |
| | | Boolean flag = false; |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("matnr", orderDetl.getMatnr()).eq("three_code", orderDetl.getThreeCode())); |
| | | if (!Cools.isEmpty(agvLocDetls)) { |
| | | //只要有一项订单明细存在,则标识为true,跳过该订单 |
| | | flag = true; |
| | | } |
| | | } |
| | | if (flag) { |
| | | continue; |
| | | } |
| | | } |
| | | ReturnT<String> result = orderSyncHandler.start(order); |
| | | if (!result.isSuccess()) { |
| | | //log.error("单据[orderNo={}]上报erp失败", order.getOrderNo()); |
| | |
| | | //货架编码 |
| | | mast.setBarcode(agvLocMast.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setWhsType(Integer.parseInt(agvLocMast.getBarcode().substring(0,2))); |
| | | |
| | | // 目标楼层 |
| | | mast.setPauseMk(agvLocMast.getLocType3().toString()); |
| | | |
| | |
| | | updateAgvBasDevp(devpNo, "S", null, agvLocMast.getBarcode()); |
| | | return SUCCESS; |
| | | } |
| | | |
| | | |
| | | private ReturnT<String> doAutoMove2(AgvWrkMast agvWrkMast) { |
| | | Date now = new Date(); |
| | |
| | | //货架编码 |
| | | mast.setBarcode(agvLocMast.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setWhsType(Integer.parseInt(agvLocMast.getBarcode().substring(0,2))); |
| | | |
| | | |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | |
| | | //货架编码 |
| | | mast.setBarcode(agvLocMast.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setWhsType(Integer.parseInt(agvLocMast.getBarcode().substring(0,2))); |
| | | |
| | | |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | |
| | | //货架编码 |
| | | mast.setBarcode(agvLocMast.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setWhsType(Integer.parseInt(agvLocMast.getBarcode().substring(0,2))); |
| | | |
| | | |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | |
| | | //货架编码 |
| | | mast.setBarcode(agvBasDevp.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setWhsType(Integer.parseInt(agvBasDevp.getBarcode().substring(0,2))); |
| | | |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | | mast.setModiUser(9527L); |
| | |
| | | //货架编码 |
| | | mast.setBarcode(agvBasDevp.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setWhsType(Integer.parseInt(agvBasDevp.getBarcode().substring(0,2))); |
| | | |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | | mast.setModiUser(9527L); |
| | |
| | | //货架编码 |
| | | mast.setBarcode(agvLocMast.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setWhsType(Integer.parseInt(agvLocMast.getBarcode().substring(0,2))); |
| | | |
| | | |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | |
| | | //货架编码 |
| | | mast.setBarcode(agvLocMast.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setWhsType(Integer.parseInt(agvLocMast.getBarcode().substring(0,2))); |
| | | |
| | | |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | |
| | | // } |
| | | } |
| | | |
| | | Page<Role> page = roleService.selectPage(new Page<>(0, 10), wrapper); |
| | | Page<Role> page = roleService.selectPage(new Page<>(0, 1000), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (Role role : page.getRecords()){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | |
| | | datasource: |
| | | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| | | #url: jdbc:sqlserver://127.0.0.1:1433;databasename=phyzasrs |
| | | url: jdbc:sqlserver://192.168.108.248:1433;databasename=phyzasrs |
| | | url: jdbc:sqlserver://192.168.108:248;databasename=phyzasrs |
| | | username: sa |
| | | password: sa@123 |
| | | mvc: |