diff --git a/pom.xml b/pom.xml
index 092fa33..f5523fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -38,7 +38,7 @@
com.baomidou
- dynamic-datasource-spring-boot-starter
+ dynamic-datasource-spring-boot3-starter
4.3.0
@@ -88,22 +88,15 @@
4.5.13
-
-
- com.google.guava
- guava
- 32.0.0-android
-
-
com.github.pagehelper
pagehelper
- 5.3.1
+ 6.1.0
com.github.jsqlparser
jsqlparser
- 4.4
+ 4.9
@@ -116,7 +109,7 @@
org.apache.poi
poi-ooxml
- 5.2.3
+ 5.2.5
org.apache.poi
@@ -132,7 +125,7 @@
org.apache.oltu.oauth2
org.apache.oltu.oauth2.client
- 1.0.1
+ 1.0.2
@@ -144,12 +137,18 @@
io.springfox
springfox-swagger2
- 2.9.2
+ 3.0.0
io.springfox
springfox-swagger-ui
- 2.9.2
+ 3.0.0
+
+
+
+ com.google.guava
+ guava
+ 32.0.0-android
diff --git a/src/main/java/com/wms/WmsApplication.java b/src/main/java/com/wms/WmsApplication.java
index f650d98..0370a6e 100644
--- a/src/main/java/com/wms/WmsApplication.java
+++ b/src/main/java/com/wms/WmsApplication.java
@@ -1,6 +1,5 @@
package com.wms;
-import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -9,10 +8,9 @@ import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement;
-@SpringBootApplication
+@SpringBootApplication()
@EnableScheduling
@EnableTransactionManagement
-@MapperScan("com.wms.mapper")
@EnableAsync
public class WmsApplication {
/**
diff --git a/src/main/java/com/wms/config/MybatisPlusConfig.java b/src/main/java/com/wms/config/MybatisPlusConfig.java
index 518335d..f655d99 100644
--- a/src/main/java/com/wms/config/MybatisPlusConfig.java
+++ b/src/main/java/com/wms/config/MybatisPlusConfig.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
/**
* mp配置类
diff --git a/src/main/java/com/wms/controller/GoodsController.java b/src/main/java/com/wms/controller/GoodsController.java
index 27f3f16..3d7e34b 100644
--- a/src/main/java/com/wms/controller/GoodsController.java
+++ b/src/main/java/com/wms/controller/GoodsController.java
@@ -5,8 +5,6 @@ import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
import com.wms.annotation.MyLog;
import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity;
@@ -14,8 +12,6 @@ import com.wms.entity.app.dto.GoodsDto;
import com.wms.entity.app.dto.PageDto;
import com.wms.entity.app.request.GoodsQuery;
import com.wms.entity.app.vo.GoodsVo;
-import com.wms.entity.page.PageDomain;
-import com.wms.entity.page.TableResponse;
import com.wms.entity.table.Goods;
import com.wms.service.GoodsService;
import com.wms.utils.HttpUtils;
@@ -111,9 +107,11 @@ public class GoodsController {
if (goodsService.update(BeanUtil.copyProperties(goods, Goods.class),
new LambdaUpdateWrapper().eq(Goods::getGoodsId, goods.getGoodsId()))) {
// 返回成功
+ logger.info("更新物料信息成功");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("更新物料信息成功");
} else {
+ logger.error("更新物料信息失败");
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新物料信息失败");
}
@@ -121,10 +119,10 @@ public class GoodsController {
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- logger.error("查询物料发生异常:{}", convertJsonString(e));
+ logger.error("更新物料信息发生异常:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
- rsp.setMessage("查询物料发生异常");
+ rsp.setMessage("更新物料信息发生异常");
return convertJsonString(rsp);
}
}
@@ -222,14 +220,13 @@ public class GoodsController {
logger.info("删除物料信息成功");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("删除物料信息成功");
- return convertJsonString(rsp);
} else {
// 返回其他异常
logger.error("删除物料信息成功");
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("删除物料信息失败");
- return convertJsonString(rsp);
}
+ return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
diff --git a/src/main/java/com/wms/controller/RecordController.java b/src/main/java/com/wms/controller/RecordController.java
index 06f4249..cba98fe 100644
--- a/src/main/java/com/wms/controller/RecordController.java
+++ b/src/main/java/com/wms/controller/RecordController.java
@@ -1,21 +1,13 @@
package com.wms.controller;
import cn.hutool.core.bean.BeanUtil;
-import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity;
import com.wms.entity.app.dto.PageDto;
-import com.wms.entity.app.request.GoodsQuery;
import com.wms.entity.app.request.TaskRecordQuery;
-import com.wms.entity.app.vo.GoodsVo;
import com.wms.entity.app.vo.TaskRecordVO;
-import com.wms.entity.page.PageDomain;
-import com.wms.entity.page.TableResponse;
-import com.wms.entity.table.Goods;
import com.wms.entity.table.TaskRecord;
import com.wms.service.TaskRecordService;
import com.wms.utils.HttpUtils;
@@ -32,15 +24,12 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
-import java.util.List;
-
import static com.wms.utils.StringUtils.convertJsonString;
/**
* WMS记录控制类
*
* @author 梁州
- * @date 2023/2/14
*/
@Controller
@CrossOrigin
diff --git a/src/main/java/com/wms/controller/StandController.java b/src/main/java/com/wms/controller/StandController.java
index 003cf8a..0f19e2c 100644
--- a/src/main/java/com/wms/controller/StandController.java
+++ b/src/main/java/com/wms/controller/StandController.java
@@ -1,24 +1,17 @@
package com.wms.controller;
import cn.hutool.core.bean.BeanUtil;
-import com.alibaba.fastjson2.JSON;
-import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
import com.wms.annotation.MyLog;
import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity;
-import com.wms.entity.app.dto.GoodsDto;
import com.wms.entity.app.dto.PageDto;
-import com.wms.entity.app.request.GoodsQuery;
+import com.wms.entity.app.dto.StandDto;
import com.wms.entity.app.request.StandQuery;
-import com.wms.entity.app.vo.GoodsVo;
-import com.wms.entity.page.PageDomain;
-import com.wms.entity.page.TableResponse;
-import com.wms.entity.table.Goods;
+import com.wms.entity.app.vo.StandVo;
+import com.wms.entity.table.Stand;
import com.wms.service.StandService;
import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils;
@@ -34,8 +27,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
-import java.util.List;
-
import static com.wms.utils.StringUtils.convertJsonString;
/**
@@ -63,67 +54,79 @@ public class StandController {
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
public String getStandsByPage(@RequestBody StandQuery standQuery){
- logger.info("接收到查询物料数据请求:{},请求ip:{}", convertJsonString(standQuery), HttpUtils.getIpAddr(servletRequest));
+ logger.info("接收到查询站台信息请求:{},请求ip:{}", convertJsonString(standQuery), HttpUtils.getIpAddr(servletRequest));
ResponseEntity response = new ResponseEntity();
try {
- Page page = goodsQuery.toMpPage();
- Page goodsPage = goodsService.page(page, new LambdaQueryWrapper()
- .like(StringUtils.isNotEmpty(goodsQuery.getGoodsId()), Goods::getGoodsId, goodsQuery.getGoodsId())
- .like(StringUtils.isNotEmpty(goodsQuery.getGoodsName()), Goods::getGoodsName, goodsQuery.getGoodsName()));
+ Page page = standQuery.toMpPage();
+ LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper()
+ .like(StringUtils.isNotEmpty(standQuery.getStandId()), Stand::getStandId, standQuery.getStandId())
+ .eq(standQuery.getStandStatus() != null, Stand::getStandStatus, standQuery.getStandStatus())
+ .eq(standQuery.getIsLock() != null, Stand::getIsLock, standQuery.getIsLock())
+ .eq(standQuery.getEquipmentType() != null, Stand::getStandType, standQuery.getEquipmentType());
+ if (standQuery.getStandType() != null) {
+ if (standQuery.getStandType() == 1) {// 入库
+ lambdaQueryWrapper.eq(Stand::getAllowIn, 1);// 入库
+ } else if (standQuery.getStandType() == 2) {// 出库
+ lambdaQueryWrapper.eq(Stand::getAllowOut, 1);// 出库
+ }
+ }
+ Page standPage = standService.page(page, lambdaQueryWrapper);
- PageDto pageDto = PageDto.of(goodsPage, goods -> BeanUtil.copyProperties(goods, GoodsVo.class));
+ PageDto pageDto = PageDto.of(standPage, stand -> BeanUtil.copyProperties(stand, StandVo.class));
response.setCode(ResponseCode.OK.getCode());
- response.setMessage("查询成功");
+ response.setMessage("查询站台成功");
response.setReturnData(pageDto);
return convertJsonString(response);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- logger.error("查询物料信息发生异常");
+ logger.error("查询站台发生异常:{}", convertJsonString(e));
response.setCode(ResponseCode.ERROR.getCode());
- response.setMessage("查询物料发生异常");
+ response.setMessage("查询站台发生异常");
return convertJsonString(response);
}
}
/**
- * 更新物料信息
+ * 更新站台信息
*
- * @param goods 物料信息
+ * @param stand 站台信息
* @return 结果
*/
- @PostMapping("/updateGoodsInfo")
+ @PostMapping("/updateStandInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
- @MyLog(logTitle = "更新物料信息", logMethod = "updateGoodsInfo")
- public String updateGoodsInfo(@RequestBody GoodsDto goods) {
- logger.info("接收到更新物料信息请求:{},请求ip:{}", convertJsonString(goods), HttpUtils.getIpAddr(servletRequest));
+ @MyLog(logTitle = "更新站台信息", logMethod = "updateStandInfo")
+ public String updateGoodsInfo(@RequestBody StandDto stand) {
+ logger.info("接收到更新站台信息请求:{},请求ip:{}", convertJsonString(stand), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
- if (StringUtils.isEmpty(goods.getGoodsId())) {// 物料编码为空,不执行
- logger.error("请求更新的物料编号为空");
+ if (StringUtils.isEmpty(stand.getStandId())) {// 站台id为空,不允许更新
+ logger.error("请求更新的站台id为空");
rsp.setCode(ResponseCode.ERROR.getCode());
- rsp.setMessage("请求更新的物料编号为空");
+ rsp.setMessage("请求更新的站台id为空");
return convertJsonString(rsp);
}
- if (goodsService.update(BeanUtil.copyProperties(goods, Goods.class),
- new LambdaUpdateWrapper().eq(Goods::getGoodsId, goods.getGoodsId()))) {
+ if (standService.update(BeanUtil.copyProperties(stand, Stand.class),
+ new LambdaUpdateWrapper().eq(Stand::getStandId, stand.getStandId()))) {
// 返回成功
+ logger.info("更新站台信息成功");
rsp.setCode(ResponseCode.OK.getCode());
- rsp.setMessage("更新物料信息成功");
+ rsp.setMessage("更新站台信息成功");
} else {
+ logger.error("更新站台信息失败");
rsp.setCode(ResponseCode.ERROR.getCode());
- rsp.setMessage("更新物料信息失败");
+ rsp.setMessage("更新站台信息失败");
}
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- logger.error("查询物料发生异常:{}", convertJsonString(e));
+ logger.error("更新站台信息发生异常:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
- rsp.setMessage("查询物料发生异常");
+ rsp.setMessage("更新站台信息发生异常");
return convertJsonString(rsp);
}
}
diff --git a/src/main/java/com/wms/controller/StockController.java b/src/main/java/com/wms/controller/StockController.java
index 6084672..4ed3e91 100644
--- a/src/main/java/com/wms/controller/StockController.java
+++ b/src/main/java/com/wms/controller/StockController.java
@@ -1,14 +1,17 @@
package com.wms.controller;
+import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.wms.annotation.MyLog;
import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity;
-import com.wms.entity.page.PageDomain;
-import com.wms.entity.page.TableRequest;
-import com.wms.entity.page.TableResponse;
-import com.wms.entity.table.StockDto;
+import com.wms.entity.app.dto.PageDto;
+import com.wms.entity.app.dto.StockDto;
+import com.wms.entity.app.request.StockQuery;
+import com.wms.entity.app.vo.StockVo;
+import com.wms.entity.table.Stock;
import com.wms.service.StockService;
import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils;
@@ -25,11 +28,13 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
-import java.util.Arrays;
-import java.util.List;
+import java.math.BigDecimal;
+
+import static com.wms.utils.StringUtils.convertJsonString;
/**
* WMS库存控制类
+ *
* @author 梁州
* @date 2023/2/14
*/
@@ -50,44 +55,39 @@ public class StockController {
private final HttpServletRequest servletRequest;
/**
- * 查找所有库存
+ * 查找所有物料
*/
@PostMapping("/getAllStocks")
@ResponseBody
- public String getAllStocks(@RequestBody TableRequest tableRequest){
- logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest));
- logger.info("接收到查询库存请求:{}", JSON.toJSONString(tableRequest));
- TableResponse tblResp = new TableResponse();
- // 解析请求数据
- if (tableRequest == null || tableRequest.getPage() == null) {
- tblResp.setCode(ResponseCode.ERROR.getCode());
- tblResp.setMessage("请求数据为空,无法处理!");
- logger.error("请求数据为空,无法处理!");
- return JSON.toJSONString(tblResp);
- }
- // 处理分页信息
- PageDomain pageRequest = tableRequest.getPage();
- String[] orderByArr = {"location_id", "vehicle_id", "goods_id", "batch_no", "remain_num", "expiration_date", "create_time"};
- String orderByStr;
+ @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
+ public String getAllStocks(@RequestBody StockQuery stockQuery) {
+ logger.info("接收到查询库存数据请求:{},请求ip:{}", convertJsonString(stockQuery), HttpUtils.getIpAddr(servletRequest));
+ ResponseEntity response = new ResponseEntity();
+ try {
+ Page page = stockQuery.toMpPage();
+ Page stockPage = stockService.page(page, new LambdaQueryWrapper()
+ .like(StringUtils.isNotEmpty(stockQuery.getVehicleId()), Stock::getVehicleId, stockQuery.getVehicleId())
+ .eq(StringUtils.isNotEmpty(stockQuery.getLocationId()), Stock::getLocationId, stockQuery.getLocationId())
+ .eq(stockQuery.getStockStatus() != null, Stock::getStockStatus, stockQuery.getStockStatus())
+ .apply(StringUtils.isNotEmpty(stockQuery.getGoodsId()), "goods_related ->> '$.goodsId' like concat('%', {0}, '%')", stockQuery.getGoodsId())
+ .apply(StringUtils.isNotEmpty(stockQuery.getGoodsName()), "goods_related ->> '$.goodsId' like concat('%', {0}, '%')", stockQuery.getGoodsName()));
- if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) {
- orderByStr = pageRequest.getOrderBy();
- } else {
- // 默认排序
- orderByStr = "expiration_date desc";
+ PageDto pageDto = PageDto.of(stockPage, stock -> BeanUtil.copyProperties(stock, StockVo.class));
+ response.setCode(ResponseCode.OK.getCode());
+ response.setMessage("查询库存成功");
+ response.setReturnData(pageDto);
+ return convertJsonString(response);
+ } catch (Exception e) {
+ // 回滚事务
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ logger.error("查询库存发生异常:{}", convertJsonString(e));
+ response.setCode(ResponseCode.ERROR.getCode());
+ response.setMessage("查询库存发生异常");
+ return convertJsonString(response);
}
-
- PageHelper.startPage(pageRequest.getPageNum(), pageRequest.getPageSize(), orderByStr);
- List stocks = stockService.selStocksFront(tableRequest.getParam());
- PageInfo stockPageInfo = new PageInfo<>(stocks);
- tblResp.setCode(ResponseCode.OK.getCode());
- tblResp.setMessage("查询库存成功!");
- tblResp.setRows(stockPageInfo.getList());
- tblResp.setTotal(stockPageInfo.getTotal());
- logger.info("查询库存成功,总数:{},当前页:{},当前页数量:{}", stockPageInfo.getTotal(), stockPageInfo.getPageNum(), stockPageInfo.getPageSize());
- return JSON.toJSONString(tblResp);
}
+
/**
* 更新库存信息
*
@@ -97,8 +97,9 @@ public class StockController {
@PostMapping("/updateStockInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
+ @MyLog(logTitle = "更新库存信息", logMethod = "updateStockInfo")
public String updateStockInfo(@RequestBody StockDto stock) {
- logger.info("接收到更新库存信息请求:{},ip地址:{}", JSON.toJSONString(stock), HttpUtils.getIpAddr(servletRequest));
+ logger.info("接收到更新库存信息请求:{},请求ip:{}", convertJsonString(stock), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
@@ -106,26 +107,45 @@ public class StockController {
logger.error("请求的库存编号为空,不允许修改");
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("请求的库存编号为空,不允许修改");
- return JSON.toJSONString(rsp);
+ return convertJsonString(rsp);
}
- if (stock.getRealNum() == 0) {
- stockService.deleteStock(stock.getStockId());
+ LambdaQueryWrapper stockLambdaQueryWrapper = new LambdaQueryWrapper().eq(Stock::getStockId, stock.getStockId());
+ if (stock.getGoodsRelated().getRemainNum().compareTo(BigDecimal.ZERO) <= 0) {
+ if (stockService.remove(stockLambdaQueryWrapper)) {
+ // 返回成功
+ logger.info("数量为0,删除库存成功");
+ rsp.setCode(ResponseCode.OK.getCode());
+ rsp.setMessage("数量为0,删除库存成功");
+ } else {
+ // 返回失败
+ logger.error("数量为0,删除库存失败");
+ rsp.setCode(ResponseCode.ERROR.getCode());
+ rsp.setMessage("数量为0,删除库存失败");
+ }
} else {
- stockService.modifyStock(stock);
+ if (stockService.update(BeanUtil.copyProperties(stock, Stock.class), stockLambdaQueryWrapper)) {
+ // 返回成功
+ logger.info("更新库存信息成功");
+ rsp.setCode(ResponseCode.OK.getCode());
+ rsp.setMessage("更新库存信息成功");
+ return JSON.toJSONString(rsp);
+ } else {
+ // 返回失败
+ logger.error("更新库存信息失败");
+ rsp.setCode(ResponseCode.ERROR.getCode());
+ rsp.setMessage("更新库存信息失败");
+ }
}
+ return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
- logger.info("发生异常:{}", e.getMessage());
+ logger.info("更新库存信息发生异常:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
- rsp.setMessage(e.getMessage());
- return JSON.toJSONString(rsp);
+ rsp.setMessage("更新库存信息发生异常");
+ return convertJsonString(rsp);
}
- // 返回成功
- rsp.setCode(ResponseCode.OK.getCode());
- rsp.setMessage("更新库存信息成功");
- return JSON.toJSONString(rsp);
}
/**
@@ -137,16 +157,26 @@ public class StockController {
@PostMapping("/addNewStock")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
+ @MyLog(logTitle = "添加库存信息", logMethod = "addNewStock")
public String addNewStock(@RequestBody StockDto stock) {
- logger.info("请求的ip地址:{}", HttpUtils.getIpAddr(servletRequest));
- logger.info("接收到人工添加库存:{}", JSON.toJSONString(stock));
+ logger.info("接收到添加信息请求:{},请求ip:{}", convertJsonString(stock), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
StockDto tempStock = new StockDto();
tempStock.setStockId(WmsUtils.generateId("ST"));
-
-
+ if (stockService.save(BeanUtil.copyProperties(stock, Stock.class))) {
+ // 返回成功
+ logger.info("添加库存信息成功");
+ rsp.setCode(ResponseCode.OK.getCode());
+ rsp.setMessage("添加库存信息成功");
+ } else {
+ // 返回失败
+ logger.error("添加库存信息失败");
+ rsp.setCode(ResponseCode.ERROR.getCode());
+ rsp.setMessage("添加库存信息失败");
+ }
+ return JSON.toJSONString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -156,9 +186,5 @@ public class StockController {
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 f4a8f2f..c05280e 100644
--- a/src/main/java/com/wms/controller/TaskController.java
+++ b/src/main/java/com/wms/controller/TaskController.java
@@ -10,7 +10,6 @@ import com.wms.entity.app.*;
import com.wms.entity.app.dto.TaskDto;
import com.wms.entity.app.dto.extend.StockDetailInfo;
import com.wms.entity.app.dto.extend.TaskDetailInfo;
-import com.wms.entity.app.dto.extend.VehicleDetailInfo;
import com.wms.entity.app.request.GoodsInRequest;
import com.wms.entity.app.request.TaskInRequest;
import com.wms.entity.app.request.TaskOutRequest;
@@ -19,12 +18,12 @@ import com.wms.entity.table.*;
import com.wms.service.*;
import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils;
-import com.wms.utils.WmsUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Isolation;
@@ -51,6 +50,7 @@ import static com.wms.utils.WmsUtils.generateId;
@CrossOrigin
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@RequestMapping(value = "/wms/task")
+@Api(value = "WMS任务控制类")
public class TaskController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
@@ -85,10 +85,6 @@ public class TaskController {
* 请求头部信息
*/
private final HttpServletRequest servletRequest;
- /**
- * 日志服务
- */
- private final LogService logService;
/**
* 接收入库任务请求
@@ -100,6 +96,7 @@ public class TaskController {
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "入库请求", logMethod = "requestIn")
+ @ApiOperation(value = "请求入库")
public String receiveTaskInRequest(@RequestBody TaskInRequest taskInRequest) {
logger.info("接收到入库请求:{},ip地址:{}", JSON.toJSONString(taskInRequest), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
@@ -142,7 +139,7 @@ public class TaskController {
return convertJsonString(response);
}
// 生成入库任务
- String saveTaskResult = "";
+ String saveTaskResult;
if (taskInRequest.getGoodsList().isEmpty()) {// 空托入库
saveTaskResult = genEmptyInTask(taskInRequest, nextLocationMap.get("nextLocationId"), nextLocationMap.get("preTaskId"));
} else {// 带料入库
@@ -274,10 +271,8 @@ public class TaskController {
}
// 验证载具号是否重复入库
if (vehicleService.exists(new LambdaQueryWrapper().eq(Vehicle::getVehicleId, taskInRequest.getVehicleId())
- .and(wrapper -> {
- wrapper.eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode())
- .or().eq(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode());
- }))) {
+ .and(wrapper -> wrapper.eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode())
+ .or().eq(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode())))) {
return TaskInValidationEnum.DUPLICATE_VEHICLE_ID.getErrorMessage();
}
// 验证当前载具是否已经有入库任务
@@ -337,6 +332,7 @@ public class TaskController {
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "出库请求", logMethod = "requestOut")
+ @ApiOperation(value = "请求入库")
public String receiveTaskOutRequest(@RequestBody TaskOutRequest taskOutRequest) {
logger.info("接收到出库请求:{},ip地址:{}", JSON.toJSONString(taskOutRequest), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
@@ -351,22 +347,17 @@ public class TaskController {
return convertJsonString(response);
}
// 没有物料,单纯载具或者库位出库
+ String genResult;
if (StringUtils.isEmpty(taskOutRequest.getGoodsId())) {
- String genResult = genVehicleLocationOutTask(taskOutRequest);
- if (!genResult.equals("")) {
- logger.error("出库错误!{}", genResult);
- response.setCode(ResponseCode.ERROR.getCode());
- response.setMessage("出库错误:" + genResult);
- return convertJsonString(response);
- }
+ genResult = genVehicleLocationOutTask(taskOutRequest);
} else {
- String genResult = genGoodsOutTask(taskOutRequest);
- if (!genResult.equals("")) {
- logger.error("出库错误!{}", genResult);
- response.setCode(ResponseCode.ERROR.getCode());
- response.setMessage("出库错误:" + genResult);
- return convertJsonString(response);
- }
+ genResult = genGoodsOutTask(taskOutRequest);
+ }
+ if (!genResult.equals("")) {
+ logger.error("出库错误!{}", genResult);
+ response.setCode(ResponseCode.ERROR.getCode());
+ response.setMessage("出库错误:" + genResult);
+ return convertJsonString(response);
}
logger.info("处理出库请求成功!");
@@ -880,8 +871,12 @@ public class TaskController {
taskService.remove(new LambdaQueryWrapper().eq(Task::getTaskId, moveTask.getTaskId()));
}
}
- } else if (taskStatus == WcsTaskStatus.RUN.getCode()) {// 任务完成
- // TODO
+ } else if (taskStatus == WcsTaskStatus.RUN.getCode()) {// 任务开始运行
+ // 更新任务状态为正在运行
+ for (Task task : feedBackTasks) {
+ task.setTaskStatus(WmsTaskStatus.RUN.getCode());
+ }
+ taskService.updateBatchById(feedBackTasks);
}
diff --git a/src/main/java/com/wms/entity/app/vo/LayerLocation.java b/src/main/java/com/wms/entity/app/vo/LayerLocation.java
index e37a602..ab711e4 100644
--- a/src/main/java/com/wms/entity/app/vo/LayerLocation.java
+++ b/src/main/java/com/wms/entity/app/vo/LayerLocation.java
@@ -1,6 +1,7 @@
package com.wms.entity.app.vo;
-import com.wms.entity.table.LocationDto;
+
+import com.wms.entity.app.dto.LocationDto;
import java.util.List;
diff --git a/src/main/java/com/wms/service/ConfigService.java b/src/main/java/com/wms/service/ConfigService.java
index b47f9e9..94f5989 100644
--- a/src/main/java/com/wms/service/ConfigService.java
+++ b/src/main/java/com/wms/service/ConfigService.java
@@ -1,10 +1,11 @@
package com.wms.service;
+import com.baomidou.mybatisplus.extension.service.IService;
import com.wms.entity.table.Config;
import java.util.List;
-public interface ConfigService {
+public interface ConfigService extends IService {
List selectConfigs(String configKey);
int updateConfig(Config config);
diff --git a/src/main/java/com/wms/service/LogService.java b/src/main/java/com/wms/service/LogService.java
index f6575ed..8bbf436 100644
--- a/src/main/java/com/wms/service/LogService.java
+++ b/src/main/java/com/wms/service/LogService.java
@@ -3,8 +3,6 @@ package com.wms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wms.entity.table.WmsLog;
-import java.util.List;
-
public interface LogService extends IService {
/**
* 定期删除日志记录(30天清一次)
diff --git a/src/main/java/com/wms/service/serviceImplements/ConfigServiceImplement.java b/src/main/java/com/wms/service/serviceImplements/ConfigServiceImplement.java
index 250a141..eb27e2b 100644
--- a/src/main/java/com/wms/service/serviceImplements/ConfigServiceImplement.java
+++ b/src/main/java/com/wms/service/serviceImplements/ConfigServiceImplement.java
@@ -1,6 +1,7 @@
package com.wms.service.serviceImplements;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wms.entity.table.Config;
import com.wms.mapper.ConfigMapper;
import com.wms.service.ConfigService;
@@ -13,7 +14,7 @@ import java.util.List;
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
-public class ConfigServiceImplement implements ConfigService {
+public class ConfigServiceImplement extends ServiceImpl implements ConfigService {
private final ConfigMapper configMapper;
@Override
diff --git a/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java b/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java
index 3e723af..f25b8b0 100644
--- a/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java
+++ b/src/main/java/com/wms/service/serviceImplements/LocationServiceImplements.java
@@ -8,10 +8,10 @@ import com.wms.entity.table.Stand;
import com.wms.entity.table.Stock;
import com.wms.entity.table.Task;
import com.wms.mapper.LocationMapper;
+import com.wms.mapper.StandMapper;
+import com.wms.mapper.StockMapper;
+import com.wms.mapper.TaskMapper;
import com.wms.service.LocationService;
-import com.wms.service.StandService;
-import com.wms.service.StockService;
-import com.wms.service.TaskService;
import com.wms.utils.StringUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
@@ -29,15 +29,15 @@ public class LocationServiceImplements extends ServiceImpl standQueryWrapper = new LambdaQueryWrapper()
.select(Stand::getStandId, Stand::getEquipmentId)
.eq(Stand::getStandId, inPoint);
- Stand queryStand = standService.getOne(standQueryWrapper);
+ Stand queryStand = standMapper.selectOne(standQueryWrapper);
if (queryStand != null && queryStand.getEquipmentId() != null) {
equipmentId = queryStand.getEquipmentId();
}
@@ -78,7 +78,7 @@ public class LocationServiceImplements extends ServiceImpl LRUStands = standService.list(LRUStandQueryWrapper);
+ List LRUStands = standMapper.selectList(LRUStandQueryWrapper);
if (LRUStands.isEmpty()) {
return resultMap;
} else {
@@ -129,7 +129,7 @@ public class LocationServiceImplements extends ServiceImpl taskQueryWrapper = new LambdaQueryWrapper()
.select(Task::getTaskId)
.eq(Task::getOrigin, havaTaskLocation.getLocationId());
- if (taskService.count(taskQueryWrapper) > 0) {
+ if (taskMapper.selectCount(taskQueryWrapper) > 0) {
hasTasksFlag = true;
break;
}
@@ -151,7 +151,7 @@ public class LocationServiceImplements extends ServiceImpl taskQueryWrapper = new LambdaQueryWrapper()
.select(Task::getTaskId)
.eq(Task::getDestination, plusOneDepthLocation.getLocationId());
- Task plusOneDepthTask = taskService.getOne(taskQueryWrapper);
+ Task plusOneDepthTask = taskMapper.selectOne(taskQueryWrapper);
if (plusOneDepthTask != null) {
resultMap.put("nextLocationId", oneAvailableLocation.getLocationId());
resultMap.put("preTaskId", plusOneDepthTask.getTaskId());
@@ -171,7 +171,7 @@ public class LocationServiceImplements extends ServiceImpl LRUStands, String goodsId) {
int equipmentId = -1;
List equipmentIds = new ArrayList<>();
- List tasks = taskService.list(new LambdaQueryWrapper()
+ List tasks = taskMapper.selectList(new LambdaQueryWrapper()
.select(Task::getDestination)
.apply("goods_related -> '$.goods_id' = {0}", goodsId)
.eq(Task::getTaskType, 1));
@@ -181,7 +181,7 @@ public class LocationServiceImplements extends ServiceImpl stocks = stockService.list(new LambdaQueryWrapper()
+ List stocks = stockMapper.selectList(new LambdaQueryWrapper()
.select(Stock::getLocationId)
.apply("goods_related -> '$.goods_id' = {0}", goodsId)
.eq(Stock::getStockStatus, StockStatus.OK.getCode()));
diff --git a/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java b/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java
index fd7f40b..7f49da0 100644
--- a/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java
+++ b/src/main/java/com/wms/service/serviceImplements/TaskServiceImplements.java
@@ -9,11 +9,11 @@ import com.wms.entity.table.Location;
import com.wms.entity.table.Stock;
import com.wms.entity.table.Task;
import com.wms.entity.table.Vehicle;
+import com.wms.mapper.LocationMapper;
+import com.wms.mapper.StockMapper;
import com.wms.mapper.TaskMapper;
-import com.wms.service.LocationService;
-import com.wms.service.StockService;
+import com.wms.mapper.VehicleMapper;
import com.wms.service.TaskService;
-import com.wms.service.VehicleService;
import com.wms.utils.StringUtils;
import com.wms.utils.WmsUtils;
import lombok.RequiredArgsConstructor;
@@ -37,26 +37,26 @@ public class TaskServiceImplements extends ServiceImpl impleme
/**
* 库位服务
*/
- private final LocationService locationService;
+ private final LocationMapper locationMapper;
/**
* 库存服务
*/
- private final StockService stockService;
+ private final StockMapper stockMapper;
/**
* 载具服务
*/
- private final VehicleService vehicleService;
+ private final VehicleMapper vehicleMapper;
@Override
public TaskDto genMoveTask(String locationId) {
- Location outLocation = locationService.getOne(new LambdaQueryWrapper().eq(Location::getLocationId, locationId));
+ Location outLocation = locationMapper.selectOne(new LambdaQueryWrapper().eq(Location::getLocationId, locationId));
if (outLocation != null) {
if (outLocation.getWDepth() == 1) {
return null;
} else {
// 生成当前深度-1的库位的移库任务
TaskDto depthMinus1MoveTask = new TaskDto();
- Location depthMinus1Location = locationService.getOne(new LambdaQueryWrapper().eq(Location::getLocationId, outLocation.getLocationId()));
+ Location depthMinus1Location = locationMapper.selectOne(new LambdaQueryWrapper().eq(Location::getLocationId, outLocation.getLocationId()));
if (depthMinus1Location.getIsLock() == 1) {// 外层库位锁定
depthMinus1MoveTask.setTaskId("LOCKED");
return depthMinus1MoveTask;
@@ -73,11 +73,11 @@ public class TaskServiceImplements extends ServiceImpl impleme
moveTask.setPreTask(depthMinusIn1Task.getTaskId());
taskMapper.insert(moveTask);
// 对应载具所有库存上锁
- stockService.update(new LambdaUpdateWrapper()
+ stockMapper.update(new LambdaUpdateWrapper()
.set(Stock::getStockStatus, StockStatus.MOVE.getCode())
.eq(Stock::getLocationId, depthMinus1Location.getLocationId()));
// 对应载具状态设置
- vehicleService.update(new LambdaUpdateWrapper()
+ vehicleMapper.update(new LambdaUpdateWrapper()
.set(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode())
.eq(Vehicle::getCurrentLocation, depthMinus1Location.getLocationId()));
depthMinus1MoveTask.setTaskId(moveTask.getTaskId());
@@ -100,11 +100,11 @@ public class TaskServiceImplements extends ServiceImpl impleme
moveTask.setPreTask(depthMinus2MoveTask.getTaskId());
taskMapper.insert(moveTask);
// 对应载具所有库存上锁
- stockService.update(new LambdaUpdateWrapper()
+ stockMapper.update(new LambdaUpdateWrapper()
.set(Stock::getStockStatus, StockStatus.MOVE.getCode())
.eq(Stock::getLocationId, depthMinus1Location.getLocationId()));
// 对应载具状态设置
- vehicleService.update(new LambdaUpdateWrapper()
+ vehicleMapper.update(new LambdaUpdateWrapper()
.set(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode())
.eq(Vehicle::getCurrentLocation, depthMinus1Location.getLocationId()));
depthMinus1MoveTask.setTaskId(moveTask.getTaskId());
@@ -130,7 +130,7 @@ public class TaskServiceImplements extends ServiceImpl impleme
Task moveTask = new Task();
// 先找一个新库位,同一个设备号,但是不同的排列层
Location newLocation = new Location();
- List availableLocations = locationService.list(new LambdaQueryWrapper()
+ List availableLocations = locationMapper.selectList(new LambdaQueryWrapper()
.eq(Location::getEquipmentId, originLocation.getEquipmentId())
.eq(Location::getLocationType, originLocation.getLocationType())
.eq(Location::getIsLock, 0)
@@ -144,7 +144,7 @@ public class TaskServiceImplements extends ServiceImpl impleme
.eq(Location::getWRow, oneAvailableLocation.getWRow())
.eq(Location::getWCol, oneAvailableLocation.getWCol())
.eq(Location::getWLayer, oneAvailableLocation.getWLayer());
- List haveTaskLocations = locationService.list(haveTaskQueryWrapper);
+ List haveTaskLocations = locationMapper.selectList(haveTaskQueryWrapper);
// 判断当前排列层的库位是否有出库或者移库任务
boolean hasTasksFlag = false;
for (Location havaTaskLocation : haveTaskLocations) {
@@ -166,7 +166,7 @@ public class TaskServiceImplements extends ServiceImpl impleme
.set(Location::getVehicleId, originLocation.getVehicleId())
.eq(Location::getLocationId, oneAvailableLocation.getLocationId())
.eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode());
- if (locationService.update(updateLocationWrapper)) {
+ if (locationMapper.update(updateLocationWrapper) > 0) {
newLocation = oneAvailableLocation;
break;
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 837bdad..a48975a 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -11,19 +11,23 @@ spring:
url: jdbc:mysql://112.4.208.194:3001/wms_miniload_bk7?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
username: coder
password: coder
+ driver-class-name: com.mysql.cj.jdbc.Driver
# 宝开服务器--内网
# url: jdbc:mysql://192.168.3.254:3306/wms_miniload_bk7?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
# username: coder
# password: coder
+# driver-class-name: com.mysql.jdbc.Driver
# 上线环境
# url: jdbc:mysql://localhost:3306/wms_xizhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
# username: developer
# password: developer
+# driver-class-name: com.mysql.jdbc.Driver
# 从库
slave_1:
url: jdbc:mysql://localhost:3306/wms_xizhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
username: developer
password: developer
+ driver-class-name: com.mysql.cj.jdbc.Driver
profiles:
active: online
server: