From f1e1c1525e7f16c81dd7caf3a18d7917b5d84e43 Mon Sep 17 00:00:00 2001 From: Huluwa22 <2667400744@qq.com> Date: Sat, 1 Mar 2025 23:47:04 +0800 Subject: [PATCH] =?UTF-8?q?feat(task):=20=E6=B7=BB=E5=8A=A0=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=AE=B0=E5=BD=95=E4=BB=A5=E5=8F=8A=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E6=A3=80=E6=B5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/wms/bussiness/JobComponent.java | 55 ++- .../java/com/wms/bussiness/TaskOperation.java | 74 ++-- .../java/com/wms/common/DeleteRequest.java | 19 + src/main/java/com/wms/common/PageRequest.java | 30 ++ src/main/java/com/wms/common/ResultUtils.java | 52 +++ .../com/wms/controller/ExcelController.java | 14 +- .../com/wms/controller/GoodsController.java | 283 +++++++------- .../wms/controller/LocationController.java | 97 +++++ .../com/wms/controller/StockController.java | 118 +++++- .../com/wms/controller/TaskController.java | 2 +- .../wms/controller/TaskDealController.java | 56 ++- .../java/com/wms/entity/excel/StockExcel.java | 132 +++++++ src/main/java/com/wms/entity/table/Goods.java | 145 ++------ .../java/com/wms/entity/table/Location.java | 13 + src/main/java/com/wms/entity/table/Stock.java | 14 + src/main/java/com/wms/entity/table/Task.java | 2 + .../java/com/wms/entity/table/TaskBak.java | 346 ++++++++++++++++++ .../java/com/wms/exception/ErrorCode.java | 29 ++ src/main/java/com/wms/mapper/GoodsMapper.java | 3 + .../java/com/wms/mapper/LocationMapper.java | 5 +- src/main/java/com/wms/mapper/TaskMapper.java | 7 +- .../java/com/wms/service/GoodsService.java | 3 + .../java/com/wms/service/LocationService.java | 4 +- .../java/com/wms/service/TaskService.java | 2 + .../GoodsServiceImplements.java | 5 + .../LocationServiceImplements.java | 5 + .../serviceImplements/OrderInImplement.java | 12 +- .../serviceImplements/OrderOutImplements.java | 5 +- .../TaskServiceImplements.java | 5 + .../parent/ContainerImplement.java | 225 +++++++----- .../com/wms/utils/storage/LocationUtils.java | 62 ++-- src/main/resources/application.yml | 2 + src/main/resources/logback-spring.xml | 2 +- src/main/resources/mapper/GoodsMapper.xml | 63 +--- src/main/resources/mapper/LocationMapper.xml | 54 ++- src/main/resources/mapper/StockMapper.xml | 16 +- src/main/resources/mapper/TaskMapper.xml | 33 +- 37 files changed, 1504 insertions(+), 490 deletions(-) create mode 100644 src/main/java/com/wms/common/DeleteRequest.java create mode 100644 src/main/java/com/wms/common/PageRequest.java create mode 100644 src/main/java/com/wms/common/ResultUtils.java create mode 100644 src/main/java/com/wms/entity/excel/StockExcel.java create mode 100644 src/main/java/com/wms/entity/table/TaskBak.java create mode 100644 src/main/java/com/wms/exception/ErrorCode.java diff --git a/src/main/java/com/wms/bussiness/JobComponent.java b/src/main/java/com/wms/bussiness/JobComponent.java index 73d85b9..fffc342 100644 --- a/src/main/java/com/wms/bussiness/JobComponent.java +++ b/src/main/java/com/wms/bussiness/JobComponent.java @@ -22,6 +22,9 @@ import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Isolation; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import java.util.*; @@ -111,7 +114,8 @@ public class JobComponent extends BaseController { * 发送入库任务给WCS * @param task 任务 */ - private void sendTasksInToWcs(Task task) { + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public void sendTasksInToWcs(Task task) { try { List thisLocations = locationService.selLocations(new Location(task.getDestination())); if(thisLocations == null) { @@ -190,7 +194,8 @@ public class JobComponent extends BaseController { * 发送出库任务给WCS * @param task 任务 */ - private void sendTasksOutToWcs(Task task) { + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public void sendTasksOutToWcs(Task task) { /* 检查该库位前一个深度是否存在库存,若存在库存则生成一个移库任务,此任务暂不下发 */ List thisLocations = locationService.selLocations(new Location(task.getOrigin())); if(thisLocations == null) { @@ -239,7 +244,7 @@ public class JobComponent extends BaseController { } if(!notCompleteTasks.isEmpty()) { logger.info("存在未完成的任务,退出函数"); - return; // 存在未完成的任务,退出函数 + return; } // 检查是否有库存,因为存在空框所以不在库存表中检验 Vehicle nextVehicle = new Vehicle(); @@ -258,7 +263,12 @@ public class JobComponent extends BaseController { Location emptyLocation = new Location(); emptyLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); emptyLocation.setAreaId(beforLocation.getAreaId()); - List emptyLocations = locationMapper.selLocations(emptyLocation); + + // 查找同一巷道的用于移库交换区域 + emptyLocation.setTunnelId(Integer.parseInt(String.valueOf(thisLocation.getTunnelId()).substring(0,1))); + emptyLocation.setLayer(thisLocation.getLayer()); + emptyLocation.setIsChangeArea(1); + List emptyLocations = locationMapper.findNearLocations(emptyLocation); if(emptyLocations == null) { logger.info("emptyLocations == null"); return; @@ -294,18 +304,19 @@ public class JobComponent extends BaseController { moveTask.setVehicleNo(beforVehicleCheckIfEmpty.get(0).getVehicleId()); moveTask.setCreateTime(new Date()); moveTask.setUserName("WMS"); - if(depth == 2){ - moveTask.setTaskPriority(8); - } else if (depth == 1) { - moveTask.setTaskPriority(9); - } + moveTask.setTaskPriority(thisLocation.getDepth() - depth); +// if(depth == 2){ +// moveTask.setTaskPriority(8); +// } else if (depth == 1) { +// moveTask.setTaskPriority(9); +// } if (beforVehicleCheckIfEmpty.get(0).getIsEmpty() == 1){ moveTask.setRemark1("空框"); }else { moveTask.setRemark1("带料"); } int a = taskService.addTask(moveTask); - if (a == 1 && depth == 2){ + if (a == 1 && depth > 1){ logger.info("生成移库任务成功,任务号:{}", moveTask.getTaskId()); continue; } else if (a == 1 && depth == 1) { @@ -369,7 +380,9 @@ public class JobComponent extends BaseController { * 发送移库任务给WCS * @param task 任务 */ - private void sendTasksMoveToWcs(Task task){ + + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public void sendTasksMoveToWcs(Task task){ /* 检查该库位前一个深度是否存在库存,若存在库存则生成一个移库任务,此任务暂不下发 */ List thisLocations = locationService.selLocations(new Location(task.getOrigin())); if(thisLocations == null) { @@ -391,10 +404,9 @@ public class JobComponent extends BaseController { depth--; /* 检查该库位有没有任务,若有则退出函数,若没有则检查有没有库存,若没有库存则继续,若有库存则生成一个移库任务,生成之后退出函数 */ Location beforLocationsQuery = new Location(); - // logger.info("{},{},{},{},{}",thisLocation.getAreaId(),thisLocation.getQueue(),thisLocation.getLine(),thisLocation.getLayer(),depth); beforLocationsQuery.setAreaId(thisLocation.getAreaId()); - //beforLocationsQuery.setQueue(thisLocation.getQueue()); - beforLocationsQuery.setLine(thisLocation.getLine()); + beforLocationsQuery.setTunnelId(thisLocation.getTunnelId()); + beforLocationsQuery.setQueue(thisLocation.getQueue()); beforLocationsQuery.setLayer(thisLocation.getLayer()); beforLocationsQuery.setLocationType(1); beforLocationsQuery.setDepth(depth); @@ -404,18 +416,19 @@ public class JobComponent extends BaseController { return; } if (beforLocations.isEmpty()) { - logger.info(".isEmpty()"); + logger.info("前一个库位信息为空"); return; } Location beforLocation = beforLocations.get(0); // 前一个库位 List notCompleteTasks = taskMapper.haveNotCompleteTask(beforLocation.getLocationId()); if (notCompleteTasks == null) { - logger.info("eteTasks为null"); + logger.info("查询任务异常"); return; } - if (!notCompleteTasks.isEmpty()) { - return; // 存在未完成的任务,退出函数 - } +// if (!notCompleteTasks.isEmpty()) { +// logger.info("存在未完成的任务,退出函数"); +// return; +// } } logger.info("开始发送移库任务给WCS,任务号:{}", task.getTaskId()); String uuid = UUID.randomUUID().toString(); @@ -432,6 +445,7 @@ public class JobComponent extends BaseController { ContainerApiLocalResponse result = JSON.parseObject(responseString, ContainerApiLocalResponse.class); if(result != null && result.getCode().equals("200")) { logger.info("下发四向车移库任务成功,任务ID:{}", task.getTaskId()); + logger.info("移库目标位置为:{}",task.getDestination()); Task taskForUpdate = new Task(); taskForUpdate.setTaskId(task.getTaskId()); taskForUpdate.setTaskStatus(WmsTaskStatus.WAIT.getCode()); @@ -441,7 +455,8 @@ public class JobComponent extends BaseController { logger.info("下发四向车移库任务失败,任务ID:{},信息:{}", task.getTaskId(), JSON.toJSONString(result)); } - private void sendTasksMoveToWcs1(Task task) { + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public void sendTasksMoveToWcs1(Task task) { /* 检查该库位前一个深度是否存在库存,若存在库存则生成一个移库任务,此任务暂不下发 */ List thisLocations = locationService.selLocations(new Location(task.getOrigin())); if(thisLocations == null) { diff --git a/src/main/java/com/wms/bussiness/TaskOperation.java b/src/main/java/com/wms/bussiness/TaskOperation.java index 98075b8..b582e64 100644 --- a/src/main/java/com/wms/bussiness/TaskOperation.java +++ b/src/main/java/com/wms/bussiness/TaskOperation.java @@ -9,19 +9,14 @@ import com.wms.entity.common.WmsApiResponse; import com.wms.entity.table.*; import com.wms.mapper.*; import com.wms.service.PartInfoService; -import com.wms.utils.HttpUtils; import com.wms.utils.WmsUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.ss.formula.functions.Now; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.springframework.web.bind.annotation.RequestBody; -import javax.swing.plaf.synth.Region; import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; @@ -44,6 +39,10 @@ public class TaskOperation { */ private final TaskMapper taskMapper; + /** + * 任务记录操作类 + */ + private final TaskRecordMapper taskRecordMapper; /** * 库位表操作类 */ @@ -113,7 +112,7 @@ public class TaskOperation { return false; } AppOrderIn appOrderInForCheck = appOrderIns.get(0); - if ("00000".equals(appOrderInForCheck.getGoodsId())){ + if (appOrderInForCheck.getGoodsId() == null){ //表示这个为空托盘入库,没有零件号,不记录到库存表中,更新到料箱监控表中。 Vehicle a = new Vehicle(); a.setVehicleId(appOrderInForCheck.getVehicleNo()); @@ -198,6 +197,7 @@ public class TaskOperation { }else{ log.info("四向车入库完成更新料箱监控成功,任务:{}", task.toLoggerString()); } + taskRecordMapper.addTask(task); } return true; } @@ -278,6 +278,7 @@ public class TaskOperation { log.error("拉取库存失败,任务:{},原因:没有找到库存数据", task.toLoggerString()); return false; } + int totalNum = stocks.size(); if (totalNum > 1){ for (Stock stock : stocks){ @@ -292,9 +293,9 @@ public class TaskOperation { appOrderIn.setGoodsNum(BigDecimal.valueOf(stock.getAvailableNum())); appOrderIn.setWareHouse("A"); if (stock.getVehicleId() != null && !stock.getVehicleId().isEmpty()){ - appOrderIn.setOrderStatus(2); + appOrderIn.setOrderStatus(OrderInStatusEnum.BINDING.getCode()); }else { - appOrderIn.setOrderStatus(0); + appOrderIn.setOrderStatus(OrderInStatusEnum.CREATE.getCode()); } //appOrderIn.setOrderStatus(2); appOrderIn.setCreateTime(LocalDateTime.now()); @@ -310,7 +311,7 @@ public class TaskOperation { } } } else{ - for (Stock stock : stocks){ + for (Stock stock : stocks){ if (stock.getAvailableNum() > 0){ AppOrderIn appOrderIn = new AppOrderIn(); appOrderIn.setRowId(WmsUtils.generateUUIDString()); @@ -339,27 +340,26 @@ public class TaskOperation { } }else{ log.error("库存数量为零,即将生成空托盘回库任务"); - AppOrderIn appOrderIn = new AppOrderIn(); - appOrderIn.setRowId(UUID.randomUUID().toString()); - appOrderIn.setGuid(UUID.randomUUID().toString()); - appOrderIn.setInType(1); - appOrderIn.setBatchNo(null); - appOrderIn.setVehicleNo(task.getVehicleNo()); - appOrderIn.setGoodsId(null); - appOrderIn.setGoodsNum(null); - appOrderIn.setWareHouse("A"); - appOrderIn.setOrderStatus(0); - appOrderIn.setCreateTime(LocalDateTime.now()); - appOrderIn.setCreatePerson("WMS"); - appOrderIn.setUpdateTime(LocalDateTime.now()); - appOrderIn.setRemark("空托盘入库"); - //appOrderIn.setProductionDate(request.abcSelect); - int a = appOrderInMapper.insert(appOrderIn); - if (a > 0){ - log.info("空托盘回库任务生成成功,任务:{}", task.toLoggerString()); - }else{ - log.error("空托盘回库任务生成失败,任务:{}", task.toLoggerString()); - } +// AppOrderIn appOrderIn = new AppOrderIn(); +// appOrderIn.setRowId(UUID.randomUUID().toString()); +// appOrderIn.setGuid(UUID.randomUUID().toString()); +// appOrderIn.setInType(1); +// appOrderIn.setBatchNo(null); +// appOrderIn.setVehicleNo(task.getVehicleNo()); +// appOrderIn.setGoodsId(null); +// appOrderIn.setGoodsNum(null); +// appOrderIn.setWareHouse("D"); +// appOrderIn.setOrderStatus(0); +// appOrderIn.setCreateTime(LocalDateTime.now()); +// appOrderIn.setCreatePerson("WMS"); +// appOrderIn.setUpdateTime(LocalDateTime.now()); +// appOrderIn.setRemark("空托盘入库"); +// int a = appOrderInMapper.insert(appOrderIn); +// if (a > 0){ +// log.info("空托盘回库任务生成成功,任务:{}", task.toLoggerString()); +// }else{ +// log.error("空托盘回库任务生成失败,任务:{}", task.toLoggerString()); +// } } } } @@ -395,6 +395,7 @@ public class TaskOperation { int updateStock = stockMapper.deleteStockWithLocationId(task.getOrigin()); if(updateStock > 0){ log.info("出库完成删除库存成功,任务:{}", task.toLoggerString()); + taskRecordMapper.addTask(task); return true; }else{ log.error("出库完成删除库存失败,任务:{}", task.toLoggerString()); @@ -416,6 +417,7 @@ public class TaskOperation { int bd = vehicleMapper.deleteVehicle(ab); if (bd == 0){ log.error("四向车空托出库完成更新料箱监控失败,任务:{},原因:更新载具为空状态失败", task.toLoggerString()); + taskRecordMapper.addTask(task); return false; }else{ log.info("四向车空托出库完成更新料箱监控成功,任务:{}", task.toLoggerString()); @@ -543,6 +545,7 @@ public class TaskOperation { log.info("盘点出库完成删除库存成功,任务:{}", task.toLoggerString()); return true; } + return false; } @@ -598,12 +601,19 @@ public class TaskOperation { updateLocation.setLocationId(task.getOrigin()); updateLocation.setLocationStatus(LocationStatus.EMPTY.getCode()); updateLocation.setVehicleId(""); + // 更新移动交换区域 + updateLocation.setIsChangeArea(1); locationMapper.modifyLocation(updateLocation); // 更新库位为空 + + + // 占掉新库位,生成的时候会占,这里重复操作保护 Location occupyLocation = new Location(); occupyLocation.setLocationId(task.getDestination()); occupyLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); occupyLocation.setVehicleId(task.getVehicleNo()); + // 更新移动交换区域 + occupyLocation.setIsChangeArea(0); locationMapper.modifyLocation(occupyLocation); // 更新库位 String checkUse = task.getRemark1(); // if (Objects.equals(checkUse, "空框")){ @@ -623,12 +633,14 @@ public class TaskOperation { int updatedLocation = stockMapper.updateLocationAndStatus(task.getOrigin(), task.getDestination(), StockStatus.OK.getCode()); if(updatedLocation > 0){ log.info("移库库位更新成功,任务:{}", task.toLoggerString()); + taskRecordMapper.addTask(task); return true; }else { log.info("移库库位更新失败,任务:{}", task.toLoggerString()); } } else if (Objects.equals(checkUse, "空框")) { log.info("空框移库库位更新成功"); + taskRecordMapper.addTask(task); return true; } // 更新库位 diff --git a/src/main/java/com/wms/common/DeleteRequest.java b/src/main/java/com/wms/common/DeleteRequest.java new file mode 100644 index 0000000..e5cfb6a --- /dev/null +++ b/src/main/java/com/wms/common/DeleteRequest.java @@ -0,0 +1,19 @@ +package com.wms.common; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 通用的删除请求类 + */ +@Data +public class DeleteRequest implements Serializable { + + /** + * id + */ + private Long id; + + private static final long serialVersionUID = 1L; +} \ No newline at end of file diff --git a/src/main/java/com/wms/common/PageRequest.java b/src/main/java/com/wms/common/PageRequest.java new file mode 100644 index 0000000..2fdb0fd --- /dev/null +++ b/src/main/java/com/wms/common/PageRequest.java @@ -0,0 +1,30 @@ +package com.wms.common; + +import lombok.Data; + +/** + * 通用的分页请求类 + */ +@Data +public class PageRequest { + + /** + * 当前页号 + */ + private int current = 1; + + /** + * 页面大小 + */ + private int pageSize = 10; + + /** + * 排序字段 + */ + private String sortField; + + /** + * 排序顺序(默认升序) + */ + private String sortOrder = "descend"; +} \ No newline at end of file diff --git a/src/main/java/com/wms/common/ResultUtils.java b/src/main/java/com/wms/common/ResultUtils.java new file mode 100644 index 0000000..a927ff0 --- /dev/null +++ b/src/main/java/com/wms/common/ResultUtils.java @@ -0,0 +1,52 @@ +package com.wms.common; + + +import com.wms.exception.ErrorCode; + +/** + * 响应工具类 + */ +public class ResultUtils { + + /** + * 成功 + * + * @param data 数据 + * @param 数据类型 + * @return 响应 + */ + public static BaseResponse success(T data) { + return new BaseResponse<>(0, data, "ok"); + } + + /** + * 失败 + * + * @param errorCode 错误码 + * @return 响应 + */ + public static BaseResponse error(ErrorCode errorCode) { + return new BaseResponse<>(errorCode); + } + + /** + * 失败 + * + * @param code 错误码 + * @param message 错误信息 + * @return 响应 + */ + public static BaseResponse error(int code, String message) { + return new BaseResponse<>(code, null, message); + } + + /** + * 失败 + * + * @param errorCode 错误码 + * @return 响应 + */ + public static BaseResponse error(ErrorCode errorCode, String message) { + return new BaseResponse<>(errorCode.getCode(), null, message); + } +} \ No newline at end of file diff --git a/src/main/java/com/wms/controller/ExcelController.java b/src/main/java/com/wms/controller/ExcelController.java index a98df05..2ca6c60 100644 --- a/src/main/java/com/wms/controller/ExcelController.java +++ b/src/main/java/com/wms/controller/ExcelController.java @@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSON; import com.wms.constants.enums.KateTaskStatus; import com.wms.constants.enums.ResponseCode; import com.wms.entity.app.ResponseEntity; +import com.wms.entity.excel.StockExcel; import com.wms.entity.table.*; import com.wms.service.*; import com.wms.utils.HttpUtils; @@ -12,6 +13,7 @@ import com.wms.utils.excel.ExcelUtils; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Isolation; @@ -53,9 +55,7 @@ public class ExcelController extends BaseController { List files = ExcelUtils.readMultipartFile(file, Goods.class); // 添加进物料表 for (Goods goods : files) { - Goods query = new Goods(); - query.setGoodsName(goods.getGoodsName()); - if (!CollectionUtils.isEmpty(goodsService.selGoods(query))) { + if (goodsService.selGoodsByGoodsId(goods.getGoodsId()) != null) { goodsService.modifyGoods(goods); }else { goodsService.addGoods(goods); @@ -82,7 +82,13 @@ public class ExcelController extends BaseController { @ResponseBody public void downloadStockExcel(HttpServletResponse response) { List stocks = stockService.selStocks(new Stock()); - ExcelUtils.export(response, "库存报表", stocks, Stock.class); + List stockExcelList = new ArrayList<>(); + for (Stock stock : stocks) { + StockExcel stockExcel = new StockExcel(); + BeanUtils.copyProperties(stock,stockExcel); + stockExcelList.add(stockExcel); + } + ExcelUtils.export(response, "库存报表", stockExcelList,StockExcel.class); } /** diff --git a/src/main/java/com/wms/controller/GoodsController.java b/src/main/java/com/wms/controller/GoodsController.java index 5ed9315..953ae92 100644 --- a/src/main/java/com/wms/controller/GoodsController.java +++ b/src/main/java/com/wms/controller/GoodsController.java @@ -41,10 +41,7 @@ public class GoodsController extends BaseController{ * 物料服务 */ private final GoodsService goodsService; - /** - * 零件服务 - */ - private final PartInfoService partInfoService; + /** * 请求头部信息 */ @@ -55,9 +52,9 @@ public class GoodsController extends BaseController{ */ @PostMapping("/getPartInfo") @ResponseBody - public String getPartInfo(@RequestBody TableRequest tableRequest){ + public String getPartInfo(@RequestBody TableRequest tableRequest){ logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); - logger.info("接收到查询零件数据请求:{}", JSON.toJSONString(tableRequest)); + logger.info("接收到查询物料数据请求:{}", JSON.toJSONString(tableRequest)); TableResponse tblResp = new TableResponse(); // 解析请求数据 if (tableRequest == null || tableRequest.getPage() == null) { @@ -68,21 +65,16 @@ public class GoodsController extends BaseController{ } // 处理分页信息 PageDomain pageRequest = tableRequest.getPage(); -// String[] orderByArr = {"location_id", "vehicle_id", "goods_id", "batch_no", "remain_num", "expiration_date", "create_time"}; - String orderByStr = "material asc"; + String orderByStr = "create_time asc"; -// if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) { -// orderByStr = pageRequest.getOrderBy(); -// } else { -// // 默认排序 -// orderByStr = "expiration_date desc"; -// } PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); - List parts = partInfoService.selParts(tableRequest.getParam()); - PageInfo partPageInfo = new PageInfo<>(parts); + + + List parts = goodsService.selGoods(tableRequest.getParam()); + PageInfo partPageInfo = new PageInfo<>(parts); tblResp.setCode(ResponseCode.OK.getCode()); - tblResp.setMessage("查询零件信息成功!"); + tblResp.setMessage("查询物料信息成功!"); tblResp.setRows(partPageInfo.getList()); tblResp.setTotal(partPageInfo.getTotal()); return JSON.toJSONString(tblResp); @@ -94,37 +86,37 @@ public class GoodsController extends BaseController{ * @param partInfo 零件信息 * @return 结果 */ - @PostMapping("/updatePartInfo") - @ResponseBody - @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) - public String updatePartInfo(@RequestBody PartInfo partInfo) { - logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); - logger.info("接收到更新零件信息请求:{}", JSON.toJSONString(partInfo)); - // 创建响应信息 - ResponseEntity rsp = new ResponseEntity(); - try { - if (StringUtils.isEmpty(partInfo.getMaterial())) {// 箱号为空,不执行 - logger.error("请求零件号为空"); - rsp.setCode(ResponseCode.ERROR.getCode()); - rsp.setMessage("请求零件号为空"); - return JSON.toJSONString(rsp); - } - partInfoService.modifyPart(partInfo); - } catch (Exception e) { - // 回滚事务 - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - logger.info("发生异常:{}", e.getMessage()); - // 返回其他异常 - rsp.setCode(ResponseCode.ERROR.getCode()); - rsp.setMessage(e.getMessage()); - return JSON.toJSONString(rsp); - } - // 返回成功 - rsp.setCode(ResponseCode.OK.getCode()); - rsp.setMessage("更新零件信息成功"); - return JSON.toJSONString(rsp); - } - +// @PostMapping("/updatePartInfo") +// @ResponseBody +// @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) +// public String updatePartInfo(@RequestBody PartInfo partInfo) { +// logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); +// logger.info("接收到更新零件信息请求:{}", JSON.toJSONString(partInfo)); +// // 创建响应信息 +// ResponseEntity rsp = new ResponseEntity(); +// try { +// if (StringUtils.isEmpty(partInfo.getMaterial())) {// 箱号为空,不执行 +// logger.error("请求零件号为空"); +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("请求零件号为空"); +// return JSON.toJSONString(rsp); +// } +// partInfoService.modifyPart(partInfo); +// } catch (Exception e) { +// // 回滚事务 +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// logger.info("发生异常:{}", e.getMessage()); +// // 返回其他异常 +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage(e.getMessage()); +// return JSON.toJSONString(rsp); +// } +// // 返回成功 +// rsp.setCode(ResponseCode.OK.getCode()); +// rsp.setMessage("更新零件信息成功"); +// return JSON.toJSONString(rsp); +// } +// /** * 更新物料信息 * @@ -154,109 +146,108 @@ public class GoodsController extends BaseController{ rsp.setMessage("更新物料信息成功"); return JSON.toJSONString(rsp); } - - @PostMapping("/queryPartInfoByPartNo") - @ResponseBody - @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) - public String queryPartInfoByPartNo(@RequestBody PartInfo partInfo) { - logger.info("前台查询零件数据"); - ResponseEntity rsp = new ResponseEntity(); - if (partInfo == null || StringUtils.isEmpty(partInfo.getMaterial())) { - logger.info("请求查询的参数为空"); - // 返回其他异常 - rsp.setCode(ResponseCode.ERROR.getCode()); - rsp.setMessage("请求查询的参数为空"); - return JSON.toJSONString(rsp); - } - try { - PartInfo partInfoNeed = partInfoService.selPartByPartNo(partInfo.getMaterial()); - if (partInfoNeed == null) { - logger.info("查询零件信息发生错误,零件号:{}", partInfo.getMaterial()); - // 返回其他异常 - rsp.setCode(ResponseCode.ERROR.getCode()); - rsp.setMessage("查询的零件信息为空"); - return JSON.toJSONString(rsp); - } - rsp.setReturnData(partInfoNeed); - } catch (Exception e) { - // 回滚事务 - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - logger.info("查询零件信息发生错误:{}", e.getMessage()); - // 返回其他异常 - rsp.setCode(ResponseCode.ERROR.getCode()); - rsp.setMessage(e.getMessage()); - return JSON.toJSONString(rsp); - } - logger.info("查询零件信息成功"); - // 返回成功 - rsp.setCode(ResponseCode.OK.getCode()); - rsp.setMessage("查询零件信息成功"); - return JSON.toJSONString(rsp); - } - - @PostMapping("/queryPartNo") - @ResponseBody - @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) - public String queryPartNo(@RequestBody PartInfo partInfo) { - logger.info("前台查询零件数据"); - ResponseEntity rsp = new ResponseEntity(); - if (partInfo == null || StringUtils.isEmpty(partInfo.getMaterial())) { - logger.info("请求查询的参数为空"); - // 返回其他异常 - rsp.setCode(ResponseCode.ERROR.getCode()); - rsp.setMessage("请求查询的参数为空"); - return JSON.toJSONString(rsp); - } - try { - PartInfo query = new PartInfo(); - query.setMaterial(partInfo.getMaterial()); - List partInfoNeed = partInfoService.selParts(query); - if (partInfoNeed.size() == 0) { - logger.info("查询零件信息发生错误,零件号:{}", partInfo.getMaterial()); - // 返回其他异常 - rsp.setCode(ResponseCode.ERROR.getCode()); - rsp.setMessage("查询的零件信息为空"); - return JSON.toJSONString(rsp); - } - rsp.setReturnData(partInfoNeed); - } catch (Exception e) { - // 回滚事务 - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - logger.info("查询零件信息发生错误:{}", e.getMessage()); - // 返回其他异常 - rsp.setCode(ResponseCode.ERROR.getCode()); - rsp.setMessage(e.getMessage()); - return JSON.toJSONString(rsp); - } - logger.info("查询零件信息成功"); - // 返回成功 - rsp.setCode(ResponseCode.OK.getCode()); - rsp.setMessage("查询零件信息成功"); - return JSON.toJSONString(rsp); - } - +// +// @PostMapping("/queryPartInfoByPartNo") +// @ResponseBody +// @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) +// public String queryPartInfoByPartNo(@RequestBody PartInfo partInfo) { +// logger.info("前台查询零件数据"); +// ResponseEntity rsp = new ResponseEntity(); +// if (partInfo == null || StringUtils.isEmpty(partInfo.getMaterial())) { +// logger.info("请求查询的参数为空"); +// // 返回其他异常 +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("请求查询的参数为空"); +// return JSON.toJSONString(rsp); +// } +// try { +// PartInfo partInfoNeed = partInfoService.selPartByPartNo(partInfo.getMaterial()); +// if (partInfoNeed == null) { +// logger.info("查询零件信息发生错误,零件号:{}", partInfo.getMaterial()); +// // 返回其他异常 +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("查询的零件信息为空"); +// return JSON.toJSONString(rsp); +// } +// rsp.setReturnData(partInfoNeed); +// } catch (Exception e) { +// // 回滚事务 +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// logger.info("查询零件信息发生错误:{}", e.getMessage()); +// // 返回其他异常 +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage(e.getMessage()); +// return JSON.toJSONString(rsp); +// } +// logger.info("查询零件信息成功"); +// // 返回成功 +// rsp.setCode(ResponseCode.OK.getCode()); +// rsp.setMessage("查询零件信息成功"); +// return JSON.toJSONString(rsp); +// } +// +// @PostMapping("/queryPartNo") +// @ResponseBody +// @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) +// public String queryPartNo(@RequestBody PartInfo partInfo) { +// logger.info("前台查询零件数据"); +// ResponseEntity rsp = new ResponseEntity(); +// if (partInfo == null || StringUtils.isEmpty(partInfo.getMaterial())) { +// logger.info("请求查询的参数为空"); +// // 返回其他异常 +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("请求查询的参数为空"); +// return JSON.toJSONString(rsp); +// } +// try { +// PartInfo query = new PartInfo(); +// query.setMaterial(partInfo.getMaterial()); +// List partInfoNeed = partInfoService.selParts(query); +// if (partInfoNeed.size() == 0) { +// logger.info("查询零件信息发生错误,零件号:{}", partInfo.getMaterial()); +// // 返回其他异常 +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage("查询的零件信息为空"); +// return JSON.toJSONString(rsp); +// } +// rsp.setReturnData(partInfoNeed); +// } catch (Exception e) { +// // 回滚事务 +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// logger.info("查询零件信息发生错误:{}", e.getMessage()); +// // 返回其他异常 +// rsp.setCode(ResponseCode.ERROR.getCode()); +// rsp.setMessage(e.getMessage()); +// return JSON.toJSONString(rsp); +// } +// logger.info("查询零件信息成功"); +// // 返回成功 +// rsp.setCode(ResponseCode.OK.getCode()); +// rsp.setMessage("查询零件信息成功"); +// return JSON.toJSONString(rsp); +// } +// /** * 删除当前零件信息 * - * @param partInfo 零件 * @return 结果 */ - @PostMapping("/deletePartInfo") + @PostMapping("/deleteGoodInfo") @ResponseBody @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) - public String deleteVehicle(@RequestBody PartInfo partInfo) { + public String deleteVehicle(@RequestBody Goods good) { logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); - logger.info("接收到更新料箱信息请求:{}", JSON.toJSONString(partInfo)); + logger.info("接收到更新料箱信息请求:{}", JSON.toJSONString(good)); // 创建响应信息 ResponseEntity rsp = new ResponseEntity(); try { - if (StringUtils.isEmpty(partInfo.getMaterial())) {// 零件号为空,不做处理 + if (StringUtils.isEmpty(good.getGoodsId())) {// 零件号为空,不做处理 logger.error("请求删除的零件号为空"); rsp.setCode(ResponseCode.ERROR.getCode()); rsp.setMessage("请求删除的零件号为空"); return JSON.toJSONString(rsp); } - partInfoService.deletePartByPartNo(partInfo.getMaterial()); + goodsService.deleteGoods(good.getGoodsId()); } catch (Exception e) { // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -271,4 +262,26 @@ public class GoodsController extends BaseController{ rsp.setMessage("删除零件信息成功"); return JSON.toJSONString(rsp); } + + + /* + * 清空当前零件信息 + * + * @param partInfo 零件 + * @return 结果 + */ + @GetMapping("/clearGoodsInfo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String deleteVehicle() { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到清空零件信息请求"); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + goodsService.clearGoodsInfo(); + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("清空零件信息成功"); + return JSON.toJSONString(rsp); + } } diff --git a/src/main/java/com/wms/controller/LocationController.java b/src/main/java/com/wms/controller/LocationController.java index 6af4406..e05136e 100644 --- a/src/main/java/com/wms/controller/LocationController.java +++ b/src/main/java/com/wms/controller/LocationController.java @@ -276,6 +276,43 @@ public class LocationController extends BaseController { return JSON.toJSONString(rsp); } + + /** + * 查询料箱信息 + * @param location + * @return 结果 + */ + @PostMapping("/getVehiclesByLocation") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String getVehicleByLocation(@RequestBody Location location) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到查询料箱请求:{}", JSON.toJSONString(location)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + // 解析请求数据 + if (StringUtils.isEmpty(location.getLocationId())) { + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请求数据为空,无法处理!"); + logger.error("请求数据为空,无法处理!"); + return JSON.toJSONString(rsp); + } + Vehicle vehicle = new Vehicle(); + vehicle.setCurrentLocation(location.getLocationId()); + List vehicles = vehicleService.selVehicles(vehicle); + if (vehicles.size() == 0) { + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setReturnData(new Vehicle()); + rsp.setMessage("无此位置托盘"); + return JSON.toJSONString(rsp); + } + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setReturnData(vehicles.get(0)); + rsp.setMessage("查询托盘成功"); + return JSON.toJSONString(rsp); + } + + /** * 查询料箱信息 * @param tableRequest 请求 @@ -319,6 +356,27 @@ public class LocationController extends BaseController { return JSON.toJSONString(tblResp); } + + /** + * 查询料箱信息 + * @param + * @return 结果 + */ + @GetMapping("/getVehicleList") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String getVehicleList() { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到查询所有托盘信息请求"); + List vehicles = vehicleService.selVehicles(new Vehicle()); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + rsp.setMessage("查询所有托盘信息成功"); + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setReturnData(vehicles); + return JSON.toJSONString(rsp); + } + /** * 更新料箱信息 * @@ -455,4 +513,43 @@ public class LocationController extends BaseController { rsp.setMessage("更新库位状态成功"); return JSON.toJSONString(rsp); } + + + /** + * 寻找库位关联信息 + * + * @param location + * @return 结果 + */ + @PostMapping("/findLocationInfo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String findLocationInfo(@RequestBody Location location) { + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + if (location.getLocationId() == null) {// 载具号不为空 + // 判断是不是需要往载具表里面添加数据 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("参数填写错误"); + return JSON.toJSONString(rsp); + } + List locationInfo = locationService.findLocationInfo(location); + rsp.setReturnData(locationInfo); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("更新库位状态发生错误:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("更新库位状态成功"); + return JSON.toJSONString(rsp); + } + } \ No newline at end of file diff --git a/src/main/java/com/wms/controller/StockController.java b/src/main/java/com/wms/controller/StockController.java index be4a877..8990579 100644 --- a/src/main/java/com/wms/controller/StockController.java +++ b/src/main/java/com/wms/controller/StockController.java @@ -3,13 +3,19 @@ package com.wms.controller; import com.alibaba.fastjson2.JSON; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; +import com.wms.constants.enums.LocationStatus; import com.wms.constants.enums.ResponseCode; import com.wms.entity.app.ResponseEntity; import com.wms.entity.dto.stock.StockQueryReuqest; import com.wms.entity.page.PageDomain; import com.wms.entity.page.TableRequest; import com.wms.entity.page.TableResponse; +import com.wms.entity.table.Goods; +import com.wms.entity.table.Location; +import com.wms.entity.table.PartInfo; import com.wms.entity.table.Stock; +import com.wms.mapper.LocationMapper; +import com.wms.mapper.StockMapper; import com.wms.service.StockService; import com.wms.utils.HttpUtils; import com.wms.utils.StringUtils; @@ -27,6 +33,7 @@ import org.springframework.web.bind.annotation.*; import java.util.Arrays; import java.util.Collections; +import java.util.Date; import java.util.List; /** @@ -44,13 +51,15 @@ public class StockController extends BaseController { */ private final StockService stockService; + + private final LocationMapper locationMapper; /** * 请求头部信息 */ private final HttpServletRequest servletRequest; /** - * 查找所有库存 + * 分页查找所有库存 */ @PostMapping("/getAllStocks") @ResponseBody @@ -74,7 +83,7 @@ public class StockController extends BaseController { orderByStr = pageRequest.getOrderBy(); } else { // 默认排序 - orderByStr = "expiration_date desc"; + orderByStr = "create_time desc"; } PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); @@ -89,6 +98,24 @@ public class StockController extends BaseController { } + /** + * 查找所有库存 + */ + @GetMapping("/getStockList") + @ResponseBody + public String getStockList(){ + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("获取所有库存列表"); + List stocks = stockService.selStocks(new Stock()); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + rsp.setMessage("查询所有库存信息成功"); + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setReturnData(stocks); + return JSON.toJSONString(rsp); + } + + /** * 根据库位号查询库存 */ @@ -216,9 +243,55 @@ public class StockController extends BaseController { // 创建响应信息 ResponseEntity rsp = new ResponseEntity(); try { - Stock tempStock = new Stock(); - tempStock.setStockId(WmsUtils.generateId("ST")); + Stock queryStock = new Stock(); + queryStock.setVehicleId(stock.getVehicleId()); + List queryStockList = stockService.selStocks(stock); + if(!CollectionUtils.isEmpty(queryStockList)) { + rsp.setMessage("输入托盘已被使用"); + rsp.setCode(ResponseCode.ERROR.getCode()); + return JSON.toJSONString(rsp); + } + //将批次号一部分裁下来做生产日期 + Stock addStock = new Stock(); + addStock.setStockId(WmsUtils.generateUUIDString()); + addStock.setWarehouseName("四向车立体库"); + addStock.setLocationId(stock.getLocationId()); + //addStock.setLocationId(appOrderIn.getVehicleNo()); + addStock.setVehicleId(stock.getVehicleId()); + addStock.setGoodsId(stock.getGoodsId()); + addStock.setGoodsName(""); + addStock.setBatchNo(""); + addStock.setAvailableNum(stock.getAvailableNum()); + addStock.setRealNum(stock.getAvailableNum()); + addStock.setProviderId(""); + addStock.setProviderName(""); + //addStock.setProductionDate(null); + addStock.setExpirationDate(null); + addStock.setStockStatus(0); + addStock.setGoodsStatus(null); + addStock.setCreateTime(new Date()); + addStock.setLastUpdateTime(null); + addStock.setLastUpdateUser(null); + addStock.setProductionDate(null); + int i = stockService.addStock(addStock); + if (i <=0 ) { + logger.info("添加库存失败"); + rsp.setMessage("添加失败"); + rsp.setCode(ResponseCode.ERROR.getCode()); + return JSON.toJSONString(rsp); + } + // 更新库位状态 + Location location = new Location(); + location.setLocationId(stock.getLocationId()); + location.setLocationStatus(LocationStatus.OCCUPY.getCode()); + int i1 = locationMapper.modifyLocation(location); + if (i1 <= 0) { + logger.info("更新库位状态失败"); + rsp.setMessage("更新库位状态失败"); + rsp.setCode(ResponseCode.ERROR.getCode()); + return JSON.toJSONString(rsp); + } } catch (Exception e) { // 回滚事务 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); @@ -233,4 +306,41 @@ public class StockController extends BaseController { rsp.setMessage("添加库存信息成功"); return JSON.toJSONString(rsp); } + + /** + * 删除当前库存信息 + * + * @param stock 零件 + * @return 结果 + */ + @PostMapping("/deleteStockInfo") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String deleteVehicle(@RequestBody Stock stock) { + logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest)); + logger.info("接收到删除库存信息请求:{}", JSON.toJSONString(stock)); + // 创建响应信息 + ResponseEntity rsp = new ResponseEntity(); + try { + if (StringUtils.isEmpty(stock.getStockId())){// 零件号为空,不做处理 + logger.error("请求删除的库存号为空"); + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage("请求删除的库存为空"); + return JSON.toJSONString(rsp); + } + stockService.deleteStock(stock.getStockId()); + } catch (Exception e) { + // 回滚事务 + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + logger.info("发生异常:{}", e.getMessage()); + // 返回其他异常 + rsp.setCode(ResponseCode.ERROR.getCode()); + rsp.setMessage(e.getMessage()); + return JSON.toJSONString(rsp); + } + // 返回成功 + rsp.setCode(ResponseCode.OK.getCode()); + rsp.setMessage("删除库存信息成功"); + return JSON.toJSONString(rsp); + } } \ No newline at end of file diff --git a/src/main/java/com/wms/controller/TaskController.java b/src/main/java/com/wms/controller/TaskController.java index db8ee14..88a8578 100644 --- a/src/main/java/com/wms/controller/TaskController.java +++ b/src/main/java/com/wms/controller/TaskController.java @@ -1288,7 +1288,7 @@ public class TaskController extends BaseController { taskQuery.setPickStand(stands.get(0).getStandId()); } PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr); - List tasks = taskService.selTasks(taskQuery); + List tasks = taskService.selTaskByCreateTime(taskQuery); PageInfo taskPageInfo = new PageInfo<>(tasks); tblResp.setCode(ResponseCode.OK.getCode()); tblResp.setMessage("查询任务成功!"); diff --git a/src/main/java/com/wms/controller/TaskDealController.java b/src/main/java/com/wms/controller/TaskDealController.java index 0310e86..7819728 100644 --- a/src/main/java/com/wms/controller/TaskDealController.java +++ b/src/main/java/com/wms/controller/TaskDealController.java @@ -20,8 +20,10 @@ import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; +import java.util.Collections; import java.util.List; import java.util.Objects; @@ -32,7 +34,7 @@ import java.util.Objects; @CrossOrigin @RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequestMapping(value = "/wms/taskDeal") -public class TaskDealController extends BaseController{ +public class TaskDealController extends BaseController { private final TaskService taskService; private final HttpServletRequest servletRequest; private final TaskController taskController; @@ -143,13 +145,19 @@ public class TaskDealController extends BaseController{ sendToWcsRequest.setDestination(newDestination); } ResponseEntity response1; - for (int i = 0; i < 5; i++) { - response1 = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_CHANGE_TASK.getValue(), JSON.toJSONString(sendToWcsRequest)), ResponseEntity.class); - logger.info("向WCS反馈任务状态变更"); - if (Objects.equals(response1.getCode(), 0)) {// 发送成功,则不再发送;不成功,一共尝试发送5次 - break; - } - } +// for (int i = 0; i < 5; i++) { +// response1 = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(UrlEnums.URL_WMS_TO_WCS_CHANGE_TASK.getValue(), JSON.toJSONString(sendToWcsRequest)), ResponseEntity.class); +// logger.info("向WCS反馈任务状态变更"); +// if (response1 == null || response1.getCode() != 0) { +// logger.error("向WCS反馈任务状态变更失败"); +// response.setCode(ResponseCode.ERROR.getCode()); +// response.setMessage("向WCS反馈任务状态变更失败"); +// return JSON.toJSONString(response); +// } +// if (Objects.equals(response1.getCode(), 0)) {// 发送成功,则不再发送;不成功,一共尝试发送5次 +// break; +// } +// } logger.info("更新任务状态成功"); response.setCode(ResponseCode.OK.getCode()); response.setMessage("更新任务状态成功"); @@ -164,6 +172,38 @@ public class TaskDealController extends BaseController{ } } + /** + * 更改任务状态 + * + * @param request 请求参数 + * @return 结果 + */ + @PostMapping("/updateTaskStatus") + @ResponseBody + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) + public String updateTaskStatus(@RequestBody Task request) { + logger.info("用户请求更改任务状态,用户名:{},ip地址:{}", request.getUserName(), HttpUtils.getIpAddr(servletRequest)); + logger.info("请求详细:{}", JSON.toJSONString(request)); + logger.info("更新任务状态成功"); + ResponseEntity response = new ResponseEntity(); + if (StringUtils.isEmpty(request.getTaskId())) { + response.setCode(ResponseCode.OK.getCode()); + } + Task task = new Task(); + task.setTaskId(request.getTaskId()); + task.setTaskStatus(request.getTaskStatus()); + int i = taskService.executeTask(task); + if(i <= 0){ + logger.info("任务id{},无此任务",request.getTaskId()); + response.setCode(ResponseCode.ERROR.getCode()); + response.setMessage("无此任务"); + } + response.setCode(ResponseCode.OK.getCode()); + response.setMessage("更新任务状态成功"); + return JSON.toJSONString(response); + + } + /** * 删除kate清单数据 * diff --git a/src/main/java/com/wms/entity/excel/StockExcel.java b/src/main/java/com/wms/entity/excel/StockExcel.java new file mode 100644 index 0000000..eb5ba49 --- /dev/null +++ b/src/main/java/com/wms/entity/excel/StockExcel.java @@ -0,0 +1,132 @@ +package com.wms.entity.excel; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.wms.utils.excel.ExcelExport; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @Classname StockExcel + * @Date 2025-02-27 14:06 + * @Created by luyifan + */ + +@Data +public class StockExcel { + /** + * 库存编号 + */ + @ExcelExport("库存编号") + private String stockId; + + /** + * 库区编号 + */ + @ExcelExport("库区编号") + private String warehouseName; + + + + /** + * 库位ID + */ + @ExcelExport("存放库位") + private String locationId; + + /** + * 托盘号 + */ + @ExcelExport("托盘号") + private String vehicleId; + + /** + * 物料编号 + */ + @ExcelExport("物料号") + private String goodsId; + +// /** +// * 物料名称 +// */ +// @ExcelExport("零件名称") +// private String goodsName; + +// /** +// * 批次号 +// */ +// @ExcelExport("批次号") +// private String batchNo; + + /** + * 可用数量 + */ + @ExcelExport("可用数量") + private Integer availableNum; + +// /** +// * 剩余数量 +// */ +// @ExcelExport("剩余数量") +// private Integer remainNum; + +// /** +// * 实际数量 +// */ +// @ExcelExport("实际数量") +// private Integer realNum; + + + /** + * 生产日期 + */ + @ExcelExport("生产日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date productionDate; + /** + * 过期日期 + */ + @ExcelExport("过期日期") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date expirationDate; + /** + * 库存状态 + * 正常、出库中、锁定 等 + */ + @ExcelExport("库存状态") + private Integer stockStatus; + + /** + * 创建时间 + */ + @ExcelExport("入库时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + /** + * 最后更新时间 + */ + @ExcelExport("最后更新时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date lastUpdateTime; + /** + * 最后更新用户 + */ + @ExcelExport("上架人") + private String lastUpdateUser; + /** + * 备注 + */ + @ExcelExport("备注") + private String remark; + + + @ExcelExport("单重") + private Double singleWeight; + + +} diff --git a/src/main/java/com/wms/entity/table/Goods.java b/src/main/java/com/wms/entity/table/Goods.java index 4be40f5..f16074f 100644 --- a/src/main/java/com/wms/entity/table/Goods.java +++ b/src/main/java/com/wms/entity/table/Goods.java @@ -1,149 +1,70 @@ package com.wms.entity.table; +import com.alibaba.fastjson.annotation.JSONField; +import com.fasterxml.jackson.annotation.JsonFormat; import com.wms.entity.BaseEntity; +import com.wms.utils.excel.ExcelExport; +import com.wms.utils.excel.ExcelImport; +import lombok.Data; +import java.io.Serializable; import java.util.Date; /** * 物料 */ -public class Goods extends BaseEntity { +@Data +public class Goods extends BaseEntity implements Serializable { /** * 物料编号 */ + @ExcelImport("模具号") + @ExcelExport("模具号") private String goodsId; - /** - * 物料名称 - */ - private String goodsName; + /** * 单位 */ + @ExcelImport("规格型号") + @ExcelExport("规格型号") private String goodsUnit; - /** - * 物料ID - */ - private String itemId; - /** - * 用户物料类型 - */ - private String itemType; - /** - * 库存类别 - */ - private String invCategory; + /** * 存储天数 */ private Integer lifeDays; + /** - * 库存组织Id + * 创建日期 */ - private String organizationId; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + /** - * 库存组织代码 + * 单重 */ - private String organizationCode; + @ExcelImport("单重(kg)") + @ExcelExport("单重(kg)") + private String singleWeight; + + /** + * 冗余字段 + */ + @ExcelImport("描述") + @ExcelExport("描述") + private String remark; /** * 最后更新日期 */ - private Date lastUpdateTime; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; - /** - * 最后更新用户 - */ - private String lastUpdateUser; - public String getGoodsId() { - return goodsId; - } - public void setGoodsId(String goodsId) { - this.goodsId = goodsId; - } - - public String getGoodsName() { - return goodsName; - } - - public void setGoodsName(String goodsName) { - this.goodsName = goodsName; - } - - public String getGoodsUnit() { - return goodsUnit; - } - - public void setGoodsUnit(String goodsUnit) { - this.goodsUnit = goodsUnit; - } - - public String getItemId() { - return itemId; - } - - public void setItemId(String itemId) { - this.itemId = itemId; - } - - public String getItemType() { - return itemType; - } - - public void setItemType(String itemType) { - this.itemType = itemType; - } - - public String getInvCategory() { - return invCategory; - } - - public void setInvCategory(String invCategory) { - this.invCategory = invCategory; - } - - public Integer getLifeDays() { - return lifeDays; - } - - public void setLifeDays(Integer lifeDays) { - this.lifeDays = lifeDays; - } - - public String getOrganizationId() { - return organizationId; - } - - public void setOrganizationId(String organizationId) { - this.organizationId = organizationId; - } - - public String getOrganizationCode() { - return organizationCode; - } - - public void setOrganizationCode(String organizationCode) { - this.organizationCode = organizationCode; - } - - public Date getLastUpdateTime() { - return lastUpdateTime; - } - - public void setLastUpdateTime(Date lastUpdateTime) { - this.lastUpdateTime = lastUpdateTime; - } - - public String getLastUpdateUser() { - return lastUpdateUser; - } - - public void setLastUpdateUser(String lastUpdateUser) { - this.lastUpdateUser = lastUpdateUser; - } } diff --git a/src/main/java/com/wms/entity/table/Location.java b/src/main/java/com/wms/entity/table/Location.java index c7ee8a8..e4f15cb 100644 --- a/src/main/java/com/wms/entity/table/Location.java +++ b/src/main/java/com/wms/entity/table/Location.java @@ -78,6 +78,19 @@ public class Location extends BaseEntity { private String vehicleId; + /** + * 移库交换区域 + */ + private Integer isChangeArea; + + public Integer getIsChangeArea() { + return isChangeArea; + } + + public void setIsChangeArea(Integer isChangeArea) { + this.isChangeArea = isChangeArea; + } + /** * 是否为空托盘存放区域 0: 否, 1: 是 */ diff --git a/src/main/java/com/wms/entity/table/Stock.java b/src/main/java/com/wms/entity/table/Stock.java index d00b436..55c839c 100644 --- a/src/main/java/com/wms/entity/table/Stock.java +++ b/src/main/java/com/wms/entity/table/Stock.java @@ -160,6 +160,20 @@ public class Stock extends BaseEntity { @ExcelExport("单重") private Double singleWeight; + + /** + * 存放天数 + */ + private Integer storageDays; + + public Integer getStorageDays() { + return storageDays; + } + + public void setStorageDays(Integer storageDays) { + this.storageDays = storageDays; + } + public Double getSingleWeight() { return singleWeight; } diff --git a/src/main/java/com/wms/entity/table/Task.java b/src/main/java/com/wms/entity/table/Task.java index dfbc0aa..4e96924 100644 --- a/src/main/java/com/wms/entity/table/Task.java +++ b/src/main/java/com/wms/entity/table/Task.java @@ -160,6 +160,8 @@ public class Task extends BaseEntity { */ private String remark1; + + public String getTaskId() { return taskId; } diff --git a/src/main/java/com/wms/entity/table/TaskBak.java b/src/main/java/com/wms/entity/table/TaskBak.java new file mode 100644 index 0000000..3df6d5d --- /dev/null +++ b/src/main/java/com/wms/entity/table/TaskBak.java @@ -0,0 +1,346 @@ +package com.wms.entity.table; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.wms.entity.BaseEntity; +import com.wms.utils.excel.ExcelExport; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 完成任务记录 + */ +public class TaskBak extends BaseEntity { + + + /** + * 物料编号 + */ + @ExcelExport("零件号") + private String goodsId; + + /** + * 任务编号 + */ + @ExcelExport("箱号") + private String taskId; + + /** + * 物料名称 + */ + @ExcelExport("零件名称") + private String goodsName; + + + /** + * 任务类型 (1:入库;2:出库;9:移库) + */ + @ExcelExport("任务类型") + private Integer taskType; + + /** + * 任务组 + */ + @ExcelExport("任务组") + private String taskGroup; + + /** + * 起点 + */ + @ExcelExport("起点") + private String origin; + + /** + * 终点 + */ + @ExcelExport("终点") + private String destination; + + /** + * 拣选站台 + */ + @ExcelExport("拣选站台") + private String pickStand; + + /** + * 重量 + */ + @ExcelExport("重量") + private Double weight; + + /** + * 生产日期 + */ + @ExcelExport("生产日期") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date productionDate; + + /** + * 过期日期 + */ + @ExcelExport("有效日期") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date expirationDate; + + /** + * 本次操作数量 + */ + @ExcelExport("操作数量") + private Integer operateNum; + + /** + * 库存总数量 + */ + @ExcelExport("库存数量") + private Integer totalNum; + + /** + * 任务优先级 + */ + @ExcelExport("任务优先级") + private Integer taskPriority; + + /** + * 卡特任务的id + */ + @ExcelExport("配件任务号") + private String kateTaskId; + + /** + * 操作人员姓名 + */ + @ExcelExport("操作人员姓名") + private String userName; + + /** + * 创建时间 + */ + @ExcelExport("创建时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 完成时间 + */ + @ExcelExport("任务完成时间") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date finishTime; + + + /** + * 任务状态 + */ + @ExcelExport("任务状态") + private Integer taskStatus; + + /** + * 载具编号 + */ + + private String vehicleNo; + + /** + * 尺寸 + */ + private Integer vehicleSize; + + + /** + * 电子标签库位 + */ + private String etagLocation; + + /** + * 备用字段 + * 1. 原包装出库的货架号 + */ + private String remark1; + + public String getTaskId() { + return taskId; + } + + public void setTaskId(String taskId) { + this.taskId = taskId; + } + + public Integer getTaskType() { + return taskType; + } + + public void setTaskType(Integer taskType) { + this.taskType = taskType; + } + + public Integer getTaskStatus() { + return taskStatus; + } + + public void setTaskStatus(Integer taskStatus) { + this.taskStatus = taskStatus; + } + + public String getTaskGroup() { + return taskGroup; + } + + public void setTaskGroup(String taskGroup) { + this.taskGroup = taskGroup; + } + + public String getOrigin() { + return origin; + } + + public void setOrigin(String origin) { + this.origin = origin; + } + + public String getDestination() { + return destination; + } + + public void setDestination(String destination) { + this.destination = destination; + } + + public String getPickStand() { + return pickStand; + } + + public void setPickStand(String pickStand) { + this.pickStand = pickStand; + } + + public Double getWeight() { + return weight; + } + + public void setWeight(Double weight) { + this.weight = weight; + } + + public String getVehicleNo() { + return vehicleNo; + } + + public void setVehicleNo(String vehicleNo) { + this.vehicleNo = vehicleNo; + } + + public Integer getVehicleSize() { + return vehicleSize; + } + + public void setVehicleSize(Integer vehicleSize) { + this.vehicleSize = vehicleSize; + } + + public Date getCreateTime() { + return createTime; + } + + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getGoodsId() { + return goodsId; + } + + public void setGoodsId(String goodsId) { + this.goodsId = goodsId; + } + + public String getGoodsName() { + return goodsName; + } + + public void setGoodsName(String goodsName) { + this.goodsName = goodsName; + } + + public Date getProductionDate() { + return productionDate; + } + + public void setProductionDate(Date productionDate) { + this.productionDate = productionDate; + } + + public Date getExpirationDate() { + return expirationDate; + } + + public void setExpirationDate(Date expirationDate) { + this.expirationDate = expirationDate; + } + + public Integer getOperateNum() { + return operateNum; + } + + public void setOperateNum(Integer operateNum) { + this.operateNum = operateNum; + } + + public Integer getTotalNum() { + return totalNum; + } + + public void setTotalNum(Integer totalNum) { + this.totalNum = totalNum; + } + + public String getEtagLocation() { + return etagLocation; + } + + public void setEtagLocation(String etagLocation) { + this.etagLocation = etagLocation; + } + + public Integer getTaskPriority() { + return taskPriority; + } + + public void setTaskPriority(Integer taskPriority) { + this.taskPriority = taskPriority; + } + + public String getKateTaskId() { + return kateTaskId; + } + + public void setKateTaskId(String kateTaskId) { + this.kateTaskId = kateTaskId; + } + + public Date getFinishTime() { + return finishTime; + } + + public void setFinishTime(Date finishTime) { + this.finishTime = finishTime; + } + + public String getRemark1() { + return remark1; + } + + public void setRemark1(String remark1) { + this.remark1 = remark1; + } +} diff --git a/src/main/java/com/wms/exception/ErrorCode.java b/src/main/java/com/wms/exception/ErrorCode.java new file mode 100644 index 0000000..6e4b9db --- /dev/null +++ b/src/main/java/com/wms/exception/ErrorCode.java @@ -0,0 +1,29 @@ +package com.wms.exception; + +import lombok.Getter; + +@Getter +public enum ErrorCode { + + SUCCESS(0, "ok"), + PARAMS_ERROR(40000, "请求参数错误"), + NOT_FOUND_ERROR(40400, "请求数据不存在"), + FORBIDDEN_ERROR(40300, "禁止访问"), + SYSTEM_ERROR(50000, "系统内部异常"), + OPERATION_ERROR(50001, "操作失败"); + /** + * 状态码 + */ + private final int code; + + /** + * 信息 + */ + private final String message; + + ErrorCode(int code, String message) { + this.code = code; + this.message = message; + } + +} \ No newline at end of file diff --git a/src/main/java/com/wms/mapper/GoodsMapper.java b/src/main/java/com/wms/mapper/GoodsMapper.java index 424259c..f0eb812 100644 --- a/src/main/java/com/wms/mapper/GoodsMapper.java +++ b/src/main/java/com/wms/mapper/GoodsMapper.java @@ -42,4 +42,7 @@ public interface GoodsMapper { * @return */ int deleteGoods(String goodsId); + + + void clearGoodsInfo(); } diff --git a/src/main/java/com/wms/mapper/LocationMapper.java b/src/main/java/com/wms/mapper/LocationMapper.java index a345158..50cff60 100644 --- a/src/main/java/com/wms/mapper/LocationMapper.java +++ b/src/main/java/com/wms/mapper/LocationMapper.java @@ -19,6 +19,7 @@ public interface LocationMapper { List selLocations(Location location); + List findNearLocations(Location location); List selSmallDepthLocations(Location location); @@ -45,8 +46,10 @@ public interface LocationMapper { /** * 修改区域 - * @param location + * @param selectArean * @return */ int modifyArea(SelectArea selectArea); + + List findLocationInfo(Location location); } diff --git a/src/main/java/com/wms/mapper/TaskMapper.java b/src/main/java/com/wms/mapper/TaskMapper.java index e0cb70b..d84f796 100644 --- a/src/main/java/com/wms/mapper/TaskMapper.java +++ b/src/main/java/com/wms/mapper/TaskMapper.java @@ -15,7 +15,12 @@ public interface TaskMapper { */ List selTasks(Task task); - + /** + * 根据创建时间从高到低查找任务 + * @param task + * @return + */ + List selTaskByCreateTime(Task task); List selTasksByTaskId(Task task); /** diff --git a/src/main/java/com/wms/service/GoodsService.java b/src/main/java/com/wms/service/GoodsService.java index 3c645f4..c175681 100644 --- a/src/main/java/com/wms/service/GoodsService.java +++ b/src/main/java/com/wms/service/GoodsService.java @@ -40,4 +40,7 @@ public interface GoodsService { * @return 结果 */ int deleteGoods(String goodsId); + + + void clearGoodsInfo(); } diff --git a/src/main/java/com/wms/service/LocationService.java b/src/main/java/com/wms/service/LocationService.java index a630563..1bebf5a 100644 --- a/src/main/java/com/wms/service/LocationService.java +++ b/src/main/java/com/wms/service/LocationService.java @@ -37,8 +37,10 @@ public interface LocationService { /** * 区域划分 - * @param location 选择的区域 + * @param selectArea 选择的区域 * @return 结果 */ int modifyArea(SelectArea selectArea); + + List findLocationInfo(Location location); } diff --git a/src/main/java/com/wms/service/TaskService.java b/src/main/java/com/wms/service/TaskService.java index fed2bf2..630c3d7 100644 --- a/src/main/java/com/wms/service/TaskService.java +++ b/src/main/java/com/wms/service/TaskService.java @@ -35,4 +35,6 @@ public interface TaskService{ * @return 结果 */ int deleteTask(String taskId); + + List selTaskByCreateTime(Task taskQuery); } diff --git a/src/main/java/com/wms/service/serviceImplements/GoodsServiceImplements.java b/src/main/java/com/wms/service/serviceImplements/GoodsServiceImplements.java index ed7ce66..dbbf012 100644 --- a/src/main/java/com/wms/service/serviceImplements/GoodsServiceImplements.java +++ b/src/main/java/com/wms/service/serviceImplements/GoodsServiceImplements.java @@ -42,4 +42,9 @@ public class GoodsServiceImplements implements GoodsService { public int deleteGoods(String goodsId) { return this.goodsMapper.deleteGoods(goodsId); } + + @Override + public void clearGoodsInfo() { + this.goodsMapper.clearGoodsInfo(); + } } diff --git a/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java b/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java index 11e045b..ddcb72b 100644 --- a/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java +++ b/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java @@ -42,4 +42,9 @@ public class LocationServiceImplements implements LocationService { public int modifyArea(SelectArea selectArea) { return this.locationMapper.modifyArea(selectArea); } + + @Override + public List findLocationInfo(Location location) { + return locationMapper.findLocationInfo(location); + } } diff --git a/src/main/java/com/wms/service/serviceImplements/OrderInImplement.java b/src/main/java/com/wms/service/serviceImplements/OrderInImplement.java index d415834..7344826 100644 --- a/src/main/java/com/wms/service/serviceImplements/OrderInImplement.java +++ b/src/main/java/com/wms/service/serviceImplements/OrderInImplement.java @@ -1,5 +1,6 @@ package com.wms.service.serviceImplements; +import com.wms.constants.WmsConstants; import com.wms.constants.enums.OrderInStatusEnum; import com.wms.constants.enums.OrderOutStatusEnum; import com.wms.entity.common.WmsApiResponse; @@ -11,6 +12,7 @@ import com.wms.entity.table.AppOrderIn; import com.wms.entity.table.OrderOut; import com.wms.service.IOrderInService; import com.wms.utils.StringUtils; +import com.wms.utils.WmsUtils; import lombok.RequiredArgsConstructor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -54,7 +56,7 @@ public class OrderInImplement implements IOrderInService { * @return 返回结果 */ public WmsApiResponse addOrderIn(downOrderInRequest request){ - if ("00000".equals(request.getGoodsId())){ + if (WmsConstants.EMPTY_STOCK_BATCH_NO.equals(request.getVehicleNo())){ log.info("托盘{}为空托盘入库", request.vehicleNo); AppOrderIn appOrderIn = new AppOrderIn(); appOrderIn.setRowId(UUID.randomUUID().toString()); @@ -64,7 +66,7 @@ public class OrderInImplement implements IOrderInService { appOrderIn.setVehicleNo(request.vehicleNo); appOrderIn.setGoodsId(null); appOrderIn.setGoodsNum(null); - appOrderIn.setWareHouse("A"); + appOrderIn.setWareHouse(request.abcSelect); appOrderIn.setOrderStatus(0); appOrderIn.setCreateTime(LocalDateTime.now()); appOrderIn.setCreatePerson("WMS"); @@ -75,7 +77,7 @@ public class OrderInImplement implements IOrderInService { return new WmsApiResponse<>(0, "添加成功", appOrderIn); }else{ AppOrderIn selectOrderIn = new AppOrderIn(); - selectOrderIn.setRemark("空托盘入库"); + selectOrderIn.setRemark("带物料托盘入库"); selectOrderIn.setVehicleNo(request.vehicleNo); List selEmpty = appOrderInMapper.select(selectOrderIn); if (selEmpty == null || selEmpty.isEmpty()){ @@ -102,14 +104,12 @@ public class OrderInImplement implements IOrderInService { appOrderIn.setCreatePerson("WMS"); appOrderIn.setUpdateTime(LocalDateTime.now()); appOrderIn.setRemark(""); - //appOrderIn.setProductionDate(request.abcSelect); appOrderInMapper.insert(appOrderIn); return new WmsApiResponse<>(0, "添加成功", appOrderIn); }else { - return new WmsApiResponse<>(1, "必须先删除空托盘入库任务!", null); + return new WmsApiResponse<>(1, "必须先删除带物料托盘入库任务!", null); } } - } /** diff --git a/src/main/java/com/wms/service/serviceImplements/OrderOutImplements.java b/src/main/java/com/wms/service/serviceImplements/OrderOutImplements.java index d97f632..126fcbb 100644 --- a/src/main/java/com/wms/service/serviceImplements/OrderOutImplements.java +++ b/src/main/java/com/wms/service/serviceImplements/OrderOutImplements.java @@ -82,10 +82,10 @@ public class OrderOutImplements implements IOrderOutService { // 计算出库 List outTasks = new ArrayList<>(); // 出库任务列表 /* 查询库存 */ - // 拉出该物料的所有库存 + if(Objects.equals(orderOut.getRemark(), "手动出库")){ + // 拉出该物料的所有正常库存 Stock queryStock = new Stock(); - //queryStock.setGoodsId(orderOut.getGoodsId()); queryStock.setGoodsId(orderOut.getGoodsId() != null ? orderOut.getGoodsId().trim() : null); queryStock.setWarehouseName(orderOut.getWarehouseOrigin()); queryStock.setStockStatus(StockStatus.OK.getCode()); @@ -99,6 +99,7 @@ public class OrderOutImplements implements IOrderOutService { if(stockList.isEmpty()) { return new WmsApiResponse<>(1, String.format("该物料没有库存,物料号:%s,其他物料也一并拒绝出库", orderOut.getGoodsId()), null); } + Integer availableNum = com.wms.utils.storage.StockUtils.sumStcokAvailableNum(stockList); // 拥有的数量 int needNum = Integer.parseInt(orderOut.getGoodsNum()); // 需要的数量 if(availableNum.compareTo(needNum) < 0) { diff --git a/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java b/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java index e9b20b1..3f36383 100644 --- a/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java +++ b/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java @@ -42,4 +42,9 @@ public class TaskServiceImplements implements TaskService { public int deleteTask(String taskId) { return taskMapper.deleteTask(taskId); } + + @Override + public List selTaskByCreateTime(Task taskQuery) { + return taskMapper.selTaskByCreateTime(taskQuery); + } } diff --git a/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java b/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java index d265ee7..562cbb1 100644 --- a/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java +++ b/src/main/java/com/wms/service/serviceImplements/parent/ContainerImplement.java @@ -88,6 +88,7 @@ public class ContainerImplement implements ContainerService { */ @Override + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) public CreateInstoreTaskResponse createInstoreTask(CreateInstoreTaskRequest request) { //进行MD5加密的验证 String md5 = StringUtils.containerMd5(request.getRequestId()); @@ -96,88 +97,143 @@ public class ContainerImplement implements ContainerService { } CreateInstoreTaskResponse success = new CreateInstoreTaskResponse(); - // 查询待入库的批次号 - AppOrderIn waitInStockQuery = new AppOrderIn(); - waitInStockQuery.setVehicleNo(request.getPalletNo()); - //waitInStockQuery.setOrderStatus(OrderInStatusEnum.CREATE.getCode()); - List waitInStockList = appOrderInMapper.select(waitInStockQuery); // 查找待入库的批次号 - if(waitInStockList.isEmpty()) { - log.error("条码:{} 不存在待入库的任务", request.getPalletNo()); - return new CreateInstoreTaskResponse("400", String.format("条码:%s 不存在待入库的任务", request.getPalletNo())); - } - AppOrderIn appOrderIn = waitInStockList.get(0); - /* 查找可用库位 */ - List canUseLocations = locationUtils.getNewLocation(2,appOrderIn); - if(canUseLocations.isEmpty()){ - return new CreateInstoreTaskResponse("400", "没有可用库位"); - } - // 判断高度来决定物料去低层还是高层 - if (WmsConstants.LOW_FLOOR.equals(request.getHeight())) { - canUseLocations = canUseLocations.stream().filter(l -> l.getLayer() == 1).toList(); - } - - if (WmsConstants.HIGH_FLOOR.equals(request.getHeight())) { - canUseLocations = canUseLocations.stream().filter(l -> l.getLayer() != 1).toList(); - } - - Location useLocation = locationUtils.checkCanUse(canUseLocations); - if(useLocation == null) { - return new CreateInstoreTaskResponse("400", "暂没有可以直接使用的库位,因为存在互锁的库位,请等待当前任务都执行完成后再试"); - } - /* 找到可用的库位 */ /* 生成任务(生成的任务直接运行中,因为此处会把任务直接回回去),更新库存表内状态为入库中 */ - // 新建任务 插入任务表 - Task newInTask = new Task(); - newInTask.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); - newInTask.setTaskGroup(UUID.randomUUID().toString()); - newInTask.setTaskType(TaskType.IN.getCode()); - newInTask.setTaskStatus(WmsTaskStatus.WAIT.getCode()); // 因为任务是直接返回去的,所以直接是已下发状态 - newInTask.setOrigin(request.getFromCellNo()); - newInTask.setDestination(useLocation.getLocationId()); - //newInTask.setGoodsId(String.format("%s 等 %d 个物料", waitInStockList.get(0).getGoodsId(), waitInStockList.size())); - if (!waitInStockList.isEmpty() && waitInStockList.get(0) != null) { - newInTask.setGoodsId(waitInStockList.get(0).getGoodsId()); - } else { - newInTask.setGoodsId(null); // 或者你可以选择不设置 - } - newInTask.setWeight(Double.valueOf(request.getWeight())); - newInTask.setCreateTime(new java.util.Date()); - newInTask.setUserName("四向车API"); - newInTask.setVehicleSize(Integer.valueOf(request.getHeight())); + // 空托盘入库任务 if(WmsConstants.EMPTY_VEHICHLE_ID.equals(request.getPalletNo())){ - // 生成空托盘的虚拟id - newInTask.setVehicleNo(WmsUtils.generateUUIDString()); + // 生成虚拟托盘id + String virtualPalletId = "T0000001"; + // 生成空托盘的订单 + AppOrderIn appOrderIn = new AppOrderIn(); + appOrderIn.setRowId(UUID.randomUUID().toString()); + appOrderIn.setGuid(UUID.randomUUID().toString()); + appOrderIn.setInType(1); + appOrderIn.setBatchNo(null); + appOrderIn.setVehicleNo(virtualPalletId); + appOrderIn.setGoodsId(null); + appOrderIn.setGoodsNum(null); + // 空头托盘区域 + appOrderIn.setWareHouse("D"); + appOrderIn.setOrderStatus(OrderInStatusEnum.IN.getCode()); + appOrderIn.setCreateTime(LocalDateTime.now()); + appOrderIn.setCreatePerson("WMS"); + appOrderIn.setUpdateTime(LocalDateTime.now()); + appOrderIn.setRemark("空托盘入库"); + //appOrderIn.setProductionDate(request.abcSelect); + appOrderInMapper.insert(appOrderIn); + /* 查找可用库位 */ + List canUseLocations = locationUtils.getNewLocation(2,appOrderIn); + if(canUseLocations.isEmpty()){ + return new CreateInstoreTaskResponse("400", "没有可用库位"); + } + Location useLocation = locationUtils.checkCanUse(canUseLocations); + Task newInTask = new Task(); + newInTask.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); + newInTask.setTaskGroup(UUID.randomUUID().toString()); + newInTask.setTaskType(TaskType.IN.getCode()); + newInTask.setTaskStatus(WmsTaskStatus.WAIT.getCode()); // 因为任务是直接返回去的,所以直接是已下发状态 + newInTask.setOrigin(request.getFromCellNo()); + newInTask.setDestination(useLocation.getLocationId()); + newInTask.setGoodsId(null); + newInTask.setCreateTime(new java.util.Date()); + newInTask.setUserName("四向车API"); + newInTask.setWeight(Double.valueOf(request.getWeight())); + newInTask.setVehicleSize(Integer.valueOf(request.getHeight())); + newInTask.setVehicleNo(virtualPalletId); + newInTask.setTaskPriority(1); + newInTask.setProductionDate(null); + int insertTaskResult = taskMapper.addTask(newInTask); + if(insertTaskResult < 1) { + log.error("生成任务失败,无法插入新的入库任务"); + return new CreateInstoreTaskResponse("400", "生成任务失败,无法插入新的入库任务"); + } + // 占用库位 + Location location = new Location(); + location.setLocationId(useLocation.getLocationId()); + location.setLocationStatus(LocationStatus.OCCUPY.getCode()); + location.setVehicleId(virtualPalletId); + locationMapper.modifyLocation(location); + + success.setCode("200"); + success.setMessage("生成入库任务成功"); + success.setWmsTaskId(newInTask.getTaskId()); + success.setPalletNo(virtualPalletId); + success.setFromCellNo(request.getFromCellNo()); + success.setToCellNo(useLocation.getLocationId()); }else { + // 查询待入库的批次号 + AppOrderIn waitInStockQuery = new AppOrderIn(); + waitInStockQuery.setVehicleNo(request.getPalletNo()); + List waitInStockList = appOrderInMapper.select(waitInStockQuery); // 查找待入库的批次号 + if(waitInStockList.isEmpty()) { + log.error("条码:{} 不存在待入库的任务", request.getPalletNo()); + return new CreateInstoreTaskResponse("400", String.format("条码:%s 不存在待入库的任务", request.getPalletNo())); + } + AppOrderIn appOrderIn = waitInStockList.get(0); + /* 查找可用库位 */ + List canUseLocations = locationUtils.getNewLocation(2,appOrderIn); + if(canUseLocations.isEmpty()){ + return new CreateInstoreTaskResponse("400", "没有可用库位"); + } + // 判断高度来决定物料去低层还是高层 + if (WmsConstants.LOW_FLOOR.equals(request.getHeight())) { + canUseLocations = canUseLocations.stream().filter(l -> l.getLayer() == 1).toList(); + } + + if (WmsConstants.HIGH_FLOOR.equals(request.getHeight())) { + canUseLocations = canUseLocations.stream().filter(l -> l.getLayer() != 1).toList(); + } + + Location useLocation = locationUtils.checkCanUse(canUseLocations); + if(useLocation == null) { + return new CreateInstoreTaskResponse("400", "暂没有可以直接使用的库位,因为存在互锁的库位,请等待当前任务都执行完成后再试"); + } + /* 找到可用的库位 */ /* 生成任务(生成的任务直接运行中,因为此处会把任务直接回回去),更新库存表内状态为入库中 */ + // 新建任务 插入任务表 + Task newInTask = new Task(); + newInTask.setTaskId(String.valueOf(Calendar.getInstance().getTimeInMillis())); + newInTask.setTaskGroup(UUID.randomUUID().toString()); + newInTask.setTaskType(TaskType.IN.getCode()); + newInTask.setTaskStatus(WmsTaskStatus.WAIT.getCode()); // 因为任务是直接返回去的,所以直接是已下发状态 + newInTask.setOrigin(request.getFromCellNo()); + newInTask.setDestination(useLocation.getLocationId()); + if (!waitInStockList.isEmpty() && waitInStockList.get(0) != null) { + newInTask.setGoodsId(waitInStockList.get(0).getGoodsId()); + } else { + newInTask.setGoodsId(null); // 或者你可以选择不设置 + } + newInTask.setWeight(Double.valueOf(request.getWeight())); + newInTask.setCreateTime(new java.util.Date()); + newInTask.setUserName("四向车API"); + newInTask.setVehicleSize(Integer.valueOf(request.getHeight())); newInTask.setVehicleNo(request.getPalletNo()); - } - newInTask.setTaskPriority(1); - newInTask.setProductionDate(null); - int insertTaskResult = taskMapper.addTask(newInTask); // 添加入库任务 - if(insertTaskResult < 1) { - log.error("生成任务失败,无法插入新的入库任务"); - return new CreateInstoreTaskResponse("400", "生成任务失败,无法插入新的入库任务"); - } - // 更新库存中的待入库记录为入库中,并将库位更新进去 - for(AppOrderIn waitInStock : waitInStockList) { - AppOrderIn updateAppOrderIn = new AppOrderIn(); - updateAppOrderIn.setRowId(waitInStock.getRowId()); - updateAppOrderIn.setOrderStatus(OrderInStatusEnum.IN.getCode()); - updateAppOrderIn.setUpdateTime(LocalDateTime.now()); - appOrderInMapper.update(updateAppOrderIn); - } + newInTask.setTaskPriority(1); + newInTask.setProductionDate(null); + int insertTaskResult = taskMapper.addTask(newInTask); // 添加入库任务 + if(insertTaskResult < 1) { + log.error("生成任务失败,无法插入新的入库任务"); + return new CreateInstoreTaskResponse("400", "生成任务失败,无法插入新的入库任务"); + } + // 更新库存中的待入库记录为入库中,并将库位更新进去 + for(AppOrderIn waitInStock : waitInStockList) { + AppOrderIn updateAppOrderIn = new AppOrderIn(); + updateAppOrderIn.setRowId(waitInStock.getRowId()); + updateAppOrderIn.setOrderStatus(OrderInStatusEnum.IN.getCode()); + updateAppOrderIn.setUpdateTime(LocalDateTime.now()); + appOrderInMapper.update(updateAppOrderIn); + } - // 占用库位 - Location location = new Location(); - location.setLocationId(useLocation.getLocationId()); - location.setLocationStatus(LocationStatus.OCCUPY.getCode()); - location.setVehicleId(request.getPalletNo()); - locationMapper.modifyLocation(location); - - success.setCode("200"); - success.setMessage("生成入库任务成功"); - success.setWmsTaskId(newInTask.getTaskId()); - success.setPalletNo(request.getPalletNo()); - success.setFromCellNo(request.getFromCellNo()); - success.setToCellNo(useLocation.getLocationId()); + // 占用库位 + Location location = new Location(); + location.setLocationId(useLocation.getLocationId()); + location.setLocationStatus(LocationStatus.OCCUPY.getCode()); + location.setVehicleId(request.getPalletNo()); + locationMapper.modifyLocation(location); + success.setCode("200"); + success.setMessage("生成入库任务成功"); + success.setWmsTaskId(newInTask.getTaskId()); + success.setPalletNo(request.getPalletNo()); + success.setFromCellNo(request.getFromCellNo()); + success.setToCellNo(useLocation.getLocationId()); + } return success; } @@ -187,6 +243,7 @@ public class ContainerImplement implements ContainerService { * @return 响应信息 */ @Override + @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) public ContainerApiLocalResponse taskStateNotice(TaskStateNoticeRequest request) { String md5 = StringUtils.containerMd5(request.getRequestId()); if(!md5.equals(request.getKey())) { @@ -251,10 +308,14 @@ public class ContainerImplement implements ContainerService { List usefulLocation = new ArrayList<>(); for (Vehicle empty : emptyVehicle) { - // 根据空托盘位置信息查找对应载具信息 - Location location = locationMapper.selLocations(new Location(empty.getCurrentLocation())) - .stream().filter(l -> l.getLayer() == 1) - .findFirst().orElse(null); + // 根据空托盘位置信息查找对应库位信息 + + Location queryLocation = new Location(); + queryLocation.setLocationId(vehicle.getCurrentLocation()); + queryLocation.setWareArea("D"); + queryLocation.setLocationStatus(LocationStatus.OCCUPY.getCode()); + Location location = locationMapper.selLocations( queryLocation) + .stream().findFirst().orElse(null); if (location == null) { log.info("该空托盘无库位信息"); diff --git a/src/main/java/com/wms/utils/storage/LocationUtils.java b/src/main/java/com/wms/utils/storage/LocationUtils.java index 426cdc0..6d33803 100644 --- a/src/main/java/com/wms/utils/storage/LocationUtils.java +++ b/src/main/java/com/wms/utils/storage/LocationUtils.java @@ -55,21 +55,21 @@ public class LocationUtils { query.setWareArea("A"); query.setLocationStatus(LocationStatus.EMPTY.getCode()); List canUseLocations = locationMapper.selNextLocation(query); - if(canUseLocations.isEmpty()){ - log.info("A级优先级没有可用库位,开始寻找B级库位"); - query.setAreaId(areaId); - query.setWareArea("B"); - query.setLocationStatus(LocationStatus.EMPTY.getCode()); - List canUseLocations2 = locationMapper.selNextLocation(query); - if (canUseLocations2.isEmpty()){ - log.info("A,B级优先级没有可用库位,开始寻找C级库位"); - query.setAreaId(areaId); - query.setWareArea("C"); - query.setLocationStatus(LocationStatus.EMPTY.getCode()); - return locationMapper.selNextLocation(query); - } - return canUseLocations2; - } +// if(canUseLocations.isEmpty()){ +// log.info("A级优先级没有可用库位,开始寻找B级库位"); +// query.setAreaId(areaId); +// query.setWareArea("B"); +// query.setLocationStatus(LocationStatus.EMPTY.getCode()); +// List canUseLocations2 = locationMapper.selNextLocation(query); +// if (canUseLocations2.isEmpty()){ +// log.info("A,B级优先级没有可用库位,开始寻找C级库位"); +// query.setAreaId(areaId); +// query.setWareArea("C"); +// query.setLocationStatus(LocationStatus.EMPTY.getCode()); +// return locationMapper.selNextLocation(query); +// } +// return canUseLocations2; +// } return canUseLocations; } else if (Objects.equals(appOrderIn.getWareHouse(), "B")) { Location query = new Location(); @@ -77,13 +77,13 @@ public class LocationUtils { query.setWareArea("B"); query.setLocationStatus(LocationStatus.EMPTY.getCode()); List canUseLocations = locationMapper.selNextLocation(query); - if(canUseLocations.isEmpty()){ - log.info("B级优先级没有可用库位,开始寻找C级库位"); - query.setAreaId(areaId); - query.setWareArea("C"); - query.setLocationStatus(LocationStatus.EMPTY.getCode()); - return locationMapper.selNextLocation(query); - } +// if(canUseLocations.isEmpty()){ +// log.info("B级优先级没有可用库位,开始寻找C级库位"); +// query.setAreaId(areaId); +// query.setWareArea("C"); +// query.setLocationStatus(LocationStatus.EMPTY.getCode()); +// return locationMapper.selNextLocation(query); +// } return canUseLocations; } else if (Objects.equals(appOrderIn.getWareHouse(), "C")) { Location query = new Location(); @@ -91,6 +91,12 @@ public class LocationUtils { query.setWareArea(appOrderIn.getWareHouse()); query.setLocationStatus(LocationStatus.EMPTY.getCode()); return locationMapper.selNextLocation(query); + }else if (Objects.equals(appOrderIn.getWareHouse(), "D")) { + Location query = new Location(); + query.setAreaId(areaId); + query.setWareArea(appOrderIn.getWareHouse()); + query.setLocationStatus(LocationStatus.EMPTY.getCode()); + return locationMapper.selNextLocation(query); }else{ return null; } @@ -106,6 +112,7 @@ public class LocationUtils { if(canUseLocations == null || canUseLocations.isEmpty()) { return null; } + boolean canUse = true; for (Location location : canUseLocations) { if(location.getDepth() == 1) { return location; // 1 深度的不需要检验 @@ -122,15 +129,14 @@ public class LocationUtils { // 找出此位置不同深度的库位 Location queryDifferentDepthLocation = new Location(); queryDifferentDepthLocation.setAreaId(location.getAreaId()); - queryDifferentDepthLocation.setEquipmentId(location.getEquipmentId()); queryDifferentDepthLocation.setQueue(location.getQueue()); - queryDifferentDepthLocation.setLine(location.getLine()); + queryDifferentDepthLocation.setTunnelId(location.getTunnelId()); queryDifferentDepthLocation.setLayer(location.getLayer()); List differentDepthLocations = locationMapper.selLocations(queryDifferentDepthLocation); if(differentDepthLocations == null) { continue; // 数据库查询失败 } - boolean canUse = false; // 指示当前库位是否可用,若可用会置成 true +// boolean canUse = false; // 指示当前库位是否可用,若可用会置成 true if(!differentDepthLocations.isEmpty()) { // 存在干涉库位,检验其是否有未完成的任务 for (Location differentDepthLocation : differentDepthLocations) { @@ -139,13 +145,15 @@ public class LocationUtils { queryLocationTask.setLocationId(differentDepthLocation.getLocationId()); List locationTasks = taskMapper.haveNotCompleteTask(differentDepthLocation.getLocationId()); if(locationTasks == null) { - continue; // 数据库查询失败 + log.info("检查存在干涉库位失败,数据库异常"); + canUse = false; + break; // 数据库查询失败 } if(!locationTasks.isEmpty()) { + canUse = false; break; // 有任务这个库位不行 } } - canUse = true; } if(canUse) { return location; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 118665c..5c94b77 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -29,6 +29,8 @@ mybatis: config-location: classpath:mybatis-config.xml mapper-locations: classpath:mapper/*.xml type-aliases-package: com.wms.entity.table +# configuration: +# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl logging: config: classpath:logback-spring.xml diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 005203d..7081fd9 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -120,5 +120,5 @@ - + diff --git a/src/main/resources/mapper/GoodsMapper.xml b/src/main/resources/mapper/GoodsMapper.xml index 550f8cd..ccfd4c8 100644 --- a/src/main/resources/mapper/GoodsMapper.xml +++ b/src/main/resources/mapper/GoodsMapper.xml @@ -4,21 +4,16 @@ - - - - - - - - + + + + - select goods_id, goods_name, goods_unit, item_id, item_type, inv_category, life_days, organization_id, - organization_code, last_update_time, last_update_user + select goods_id, goods_unit, life_days, remark, single_weight,create_time, update_time from tbl_app_goods @@ -26,18 +21,14 @@ and goods_id = #{goodsId} - and goods_name = #{goodsName} and goods_unit = #{goodsUnit} - and item_id = #{itemId} - and item_type = #{itemType} - and inv_category = #{invCategory} and life_days = #{lifeDays} - and organization_id = #{organizationId} - and organization_code = #{organizationCode} - and last_update_time = #{lastUpdateTime} - and last_update_user = #{lastUpdateUser} + and remark = #{remark} + and single_weight = #{single_weight} + and update_time = #{updateTime} + and create_time = #{create_time} - order by last_update_time desc + order by create_time desc + + + and location_id = #{locationId} + and area_id = #{areaId} + and left(tunnel_id,1) = #{tunnelId} + and equipment_id = #{equipmentId} + and location_type = #{locationType} + and queue = #{queue} + and line = #{line} + and layer = #{layer} + and depth = #{depth} + and is_lock = #{isLock} + and location_status = #{locationStatus} + and vehicle_id = #{vehicleId} + and ware_area = #{wareArea} + and is_change_area = #{isChangeArea} + + order by tunnel_id asc,depth desc, layer asc, line desc + + + @@ -67,13 +91,13 @@ and equipment_id = #{equipmentId} and location_type = #{locationType} and ware_area = #{wareArea} - and is_lock = 0 and location_status = 0 + and is_lock = 0 and location_status = 0 and is_change_area = 0 order by tunnel_id asc,depth desc, layer asc, line desc for update @@ -92,6 +116,7 @@ is_lock, location_status, vehicle_id, + is_change_area, #{locationId}, @@ -106,6 +131,7 @@ #{isLock}, #{locationStatus}, #{vehicleId}, + #{isChangeArea}, @@ -116,6 +142,7 @@ location_status = #{locationStatus}, vehicle_id = #{vehicleId}, ware_area = #{wareArea}, + is_change_area = #{isChangeArea}, where location_id = #{locationId} @@ -128,4 +155,25 @@ where queue >= #{startQueue} and queue <= #{endQueue} and line >= #{startLine} and line <= #{endLine} and layer >= #{startLayer} and layer <= #{endLayer} + + \ No newline at end of file diff --git a/src/main/resources/mapper/StockMapper.xml b/src/main/resources/mapper/StockMapper.xml index e9bcfaf..262db35 100644 --- a/src/main/resources/mapper/StockMapper.xml +++ b/src/main/resources/mapper/StockMapper.xml @@ -28,19 +28,20 @@ + select stock_id, warehouse_name, location_id, vehicle_id, goods_id, goods_name, batch_no, available_num, remain_num, real_num, provider_id, provider_name, production_date, expiration_date, stock_status, goods_status, create_time, last_update_time, last_update_user, remark, - is_inventory, inventory_task_id, current_location, shelf_life,single_weight + is_inventory, inventory_task_id, current_location, shelf_life,single_weight,storage_days from tbl_app_stock @@ -59,10 +60,7 @@ @@ -147,6 +146,7 @@ current_location, shelf_life, single_weight + storage_days #{stockId}, @@ -174,6 +174,7 @@ #{currentLocation}, #{shelfLife}, #{singleWeight} + #{storageDays} @@ -203,6 +204,7 @@ current_location = #{currentLocation}, shelf_life = #{shelfLife}, single_weight = #{singleWeight}, + storage_days = #{storageDays}, where stock_id = #{stockId} diff --git a/src/main/resources/mapper/TaskMapper.xml b/src/main/resources/mapper/TaskMapper.xml index 195e679..d953c83 100644 --- a/src/main/resources/mapper/TaskMapper.xml +++ b/src/main/resources/mapper/TaskMapper.xml @@ -60,9 +60,40 @@ and kate_task_id = #{kateTaskId} and remark1 = #{remark1} - order by create_time desc, task_priority desc, task_status desc + order by task_priority desc, task_status desc,create_time desc + + + +