| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.validation.constraints.Size; |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RestController |
| | | public class LocMastController extends BaseController { |
| | |
| | | locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); |
| | | } |
| | | } |
| | | locMast.setBarcode(""); |
| | | locMast.setModiUser(getUserId()); |
| | | locMast.setModiTime(new Date()); |
| | | locMastService.updateById(locMast); |
| | |
| | | @ManagerAuth(memo = "初始化库位") |
| | | // @Transactional |
| | | public R init(LocMastInitParam param) { |
| | | List<LocMast> list = new ArrayList<>(); |
| | | List<LocMast> list = new ArrayList<>(); |
| | | for (int r=param.getStartRow(); r<=param.getEndRow(); r++){ |
| | | for (int b=param.getStartBay(); b<=param.getEndBay(); b++) { |
| | | for (int l=param.getStartLev(); l<=param.getEndLev(); l++) { |
| | |
| | | String locNo = String.format("%02d", r) + String.format("%03d", b) + String.format("%02d", l); |
| | | // 获取堆垛机号 |
| | | int crnNo = 0; |
| | | Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getCrnAmount()); |
| | | Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getCrnAmount(),param.getStartRow()); |
| | | for (List<Integer> node : shelves.nodes){ |
| | | |
| | | if (node.contains(r)) { |
| | | crnNo = shelves.nodes.indexOf(node) + 1; |
| | | if (!Cools.isEmpty(param.getStaCrn()) && param.getStaCrn() > 0){ |
| | | crnNo = shelves.nodes.indexOf(node) + param.getStaCrn(); |
| | | }else { |
| | | crnNo = shelves.nodes.indexOf(node) + 1; |
| | | } |
| | | |
| | | break; |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | locMastService.delete(new EntityWrapper<>()); |
| | | locDetlService.delete(new EntityWrapper<>()); |
| | | if (!Cools.isEmpty(param.getEnable()) && param.getEnable() == 1){ |
| | | locMastService.delete(new EntityWrapper<>()); |
| | | } |
| | | locMastService.insertBatch(list); |
| | | return R.ok("初始化成功"); |
| | | } |
| | | |
| | | @RequestMapping(value = "/locMast/convert/size/auth") |
| | | @ManagerAuth(memo = "大小库位转换") |
| | | @Transactional |
| | | public R convertSize(@RequestParam String param) { |
| | | List<LocMast> list = JSONArray.parseArray(param, LocMast.class); |
| | | if (Cools.isEmpty(list)){ |
| | | return R.error(); |
| | | } |
| | | for (LocMast entity : list){ |
| | | if (!entity.getCrnNo().equals(1) && !entity.getCrnNo().equals(4)){ |
| | | return R.error("请选择1号、4号堆垛机的货位!!!不符合条件库位:"+entity.getLocNo()); |
| | | } |
| | | if (!entity.getLocSts().equals("O") && !entity.getLocSts().equals("Y")){ |
| | | return R.error("请选择空闲、被合并的货位!!!不符合条件库位:"+entity.getLocNo()); |
| | | @RequestMapping(value = "/locMast/list/auth/lev") |
| | | @ManagerAuth |
| | | public R listLev(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam(required = false)String orderByField, |
| | | @RequestParam(required = false)String orderByType, |
| | | @RequestParam Map<String, Object> param){ |
| | | excludeTrash(param); |
| | | EntityWrapper<LocMast> wrapper = new EntityWrapper<>(); |
| | | convertLev(param, wrapper); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/locMast/list/auth/lev/clamp") |
| | | @ManagerAuth |
| | | public R listLevClamp(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam(required = false)String orderByField, |
| | | @RequestParam(required = false)String orderByType, |
| | | @RequestParam Map<String, Object> param){ |
| | | excludeTrash(param); |
| | | EntityWrapper<LocMast> wrapper = new EntityWrapper<>(); |
| | | convertLev(param, wrapper); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | Page<LocMast> pageResult = locMastService.selectPage(new Page<>(curr, limit), wrapper); |
| | | if (pageResult != null && pageResult.getRecords() != null && !pageResult.getRecords().isEmpty()) { |
| | | // 获取所有loc_no |
| | | List<String> locNos = pageResult.getRecords().stream() |
| | | .map(LocMast::getLocNo) // 假设有getLocNo方法 |
| | | .filter(Objects::nonNull) |
| | | .distinct() |
| | | .collect(Collectors.toList()); |
| | | if (!Cools.isEmpty(locNos)) { |
| | | Map<String, Double> anfmeMap = locDetlService.getAnfmeByLocNos(locNos); |
| | | // 更新sc_weight字段 |
| | | for (LocMast locMast : pageResult.getRecords()) { |
| | | if (locMast.getLocNo() != null && anfmeMap.containsKey(locMast.getLocNo())) { |
| | | locMast.setScWeight(anfmeMap.get(locMast.getLocNo())); // 假设有setScWeight方法 |
| | | } else { |
| | | locMast.setScWeight(0.0); // 如果没有对应数据,设为0或null |
| | | } |
| | | } |
| | | } |
| | | } |
| | | List<String> innermostSideLoc = Utils.getInnermostSideLoc(list); |
| | | StringBuilder msg=new StringBuilder(); |
| | | for (String locNo : innermostSideLoc){ |
| | | String innermostSideLocLBR = Utils.getInnermostSideLocLBR(locNo); |
| | | LocMast locMast1 = locMastService.selectById(innermostSideLocLBR);//浅 |
| | | if (Cools.isEmpty(locMast1)){ |
| | | msg.append("请选择浅库位存在的货位!!!不符合条件库位:").append(innermostSideLocLBR).append("/n"); |
| | | continue; |
| | | return R.ok(pageResult); |
| | | } |
| | | |
| | | private <T> void convertLev(Map<String, Object> map, EntityWrapper<T> wrapper){ |
| | | String sizeValue = null; |
| | | |
| | | // 第一步:先处理size参数 |
| | | if (map.containsKey("size")) { |
| | | sizeValue = String.valueOf(map.get("size")); |
| | | map.remove("size"); // 从map中移除,避免后面重复处理 |
| | | |
| | | if (sizeValue.equals("2000*1500*170")){ |
| | | wrapper.in("lev1", Arrays.asList(4, 5)).andNew().eq("crn_no", 1); |
| | | }else if (sizeValue.equals("1500*1500*170")){ |
| | | wrapper.in("lev1", Arrays.asList(1, 2, 3)).andNew().eq("crn_no", 1); |
| | | }else if (sizeValue.equals("2600*1500*160")){ |
| | | wrapper.in("lev1", Arrays.asList(1, 2)).andNew().eq("crn_no", 2); |
| | | }else if (sizeValue.equals("1300*1500*160")){ |
| | | wrapper.in("lev1", Arrays.asList(3, 4, 5, 6)).andNew().eq("crn_no", 2); |
| | | } |
| | | if (!locMast1.getLocSts().equals("O")){ |
| | | msg.append("请选择浅库位空闲的货位!!!不符合条件库位:").append(locMast1.getLocNo()).append("/n"); |
| | | continue; |
| | | } |
| | | LocMast locMast = locMastService.selectById(locNo);//深 |
| | | if (Cools.isEmpty(locMast)){ |
| | | msg.append("请选择深库位存在的货位!!!不符合条件库位:").append(locNo).append("/n"); |
| | | continue; |
| | | } |
| | | if (!Cools.isEmpty(locMast) && locMast.getLocSts().equals("O")){ |
| | | locMast1.setLocType1((short)2); |
| | | locMast.setLocType1((short)2); |
| | | locMast.setLocSts("Y"); |
| | | }else if (!Cools.isEmpty(locMast) && locMast.getLocSts().equals("Y")){ |
| | | locMast1.setLocType1((short)1); |
| | | locMast.setLocType1((short)1); |
| | | locMast.setLocSts("O"); |
| | | }else { |
| | | msg.append("请选择深库位库位空闲、被合并的货位!!!不符合条件库位:").append(locMast.getLocNo()).append("/n"); |
| | | continue; |
| | | } |
| | | locMastService.updateById(locMast1); |
| | | locMastService.updateById(locMast); |
| | | } |
| | | return R.ok(msg); |
| | | |
| | | // 第二步:处理其他参数 |
| | | for (Map.Entry<String, Object> entry : map.entrySet()){ |
| | | String key = entry.getKey(); |
| | | String val = String.valueOf(entry.getValue()); |
| | | |
| | | if (val.contains(RANGE_TIME_LINK)){ |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge(key, DateUtils.convert(dates[0])); |
| | | wrapper.le(key, DateUtils.convert(dates[1])); |
| | | } else if (key.equals("loc_no")){ |
| | | wrapper.like(key, val); |
| | | } else { |
| | | wrapper.eq(key, val); |
| | | } |
| | | } |
| | | |
| | | // 第三步:如果没有size参数,则添加默认条件 |
| | | if (sizeValue == null) { |
| | | wrapper.eq("loc_sts", map.get("loc_sts")); |
| | | } else { |
| | | // 如果有size参数,添加loc_sts != 'Y'的条件 |
| | | wrapper.and().ne("loc_sts", "Y"); |
| | | } |
| | | } |
| | | } |