后台代码错误解决完成

This commit is contained in:
梁州 2024-07-01 10:50:52 +08:00
parent c110325a11
commit 409df1ac81
15 changed files with 204 additions and 191 deletions

27
pom.xml
View File

@ -38,7 +38,7 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.baomidou</groupId> <groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
<version>4.3.0</version> <version>4.3.0</version>
</dependency> </dependency>
<dependency> <dependency>
@ -88,22 +88,15 @@
<version>4.5.13</version> <version>4.5.13</version>
</dependency> </dependency>
<!-- MAP工具 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.0-android</version>
</dependency>
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId> <artifactId>pagehelper</artifactId>
<version>5.3.1</version> <version>6.1.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.jsqlparser</groupId> <groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId> <artifactId>jsqlparser</artifactId>
<version>4.4</version> <version>4.9</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime --> <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime -->
@ -116,7 +109,7 @@
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId> <artifactId>poi-ooxml</artifactId>
<version>5.2.3</version> <version>5.2.5</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.poi</groupId> <groupId>org.apache.poi</groupId>
@ -132,7 +125,7 @@
<dependency> <dependency>
<groupId>org.apache.oltu.oauth2</groupId> <groupId>org.apache.oltu.oauth2</groupId>
<artifactId>org.apache.oltu.oauth2.client</artifactId> <artifactId>org.apache.oltu.oauth2.client</artifactId>
<version>1.0.1</version> <version>1.0.2</version>
</dependency> </dependency>
<!-- https://mvnrepository.com/artifact/com.auth0/java-jwt --> <!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
<dependency> <dependency>
@ -144,12 +137,18 @@
<dependency> <dependency>
<groupId>io.springfox</groupId> <groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId> <artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version> <version>3.0.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.springfox</groupId> <groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId> <artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version> <version>3.0.0</version>
</dependency>
<!-- MAP工具 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.0-android</version>
</dependency> </dependency>
<!-- aop切面 --> <!-- aop切面 -->
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop --> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->

View File

@ -1,6 +1,5 @@
package com.wms; package com.wms;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; 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.scheduling.annotation.EnableScheduling;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication @SpringBootApplication()
@EnableScheduling @EnableScheduling
@EnableTransactionManagement @EnableTransactionManagement
@MapperScan("com.wms.mapper")
@EnableAsync @EnableAsync
public class WmsApplication { public class WmsApplication {
/** /**

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept
import org.mybatis.spring.annotation.MapperScan; import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/** /**
* mp配置类 * mp配置类

View File

@ -5,8 +5,6 @@ import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.annotation.MyLog;
import com.wms.constants.enums.ResponseCode; import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity; 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.dto.PageDto;
import com.wms.entity.app.request.GoodsQuery; import com.wms.entity.app.request.GoodsQuery;
import com.wms.entity.app.vo.GoodsVo; 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.table.Goods;
import com.wms.service.GoodsService; import com.wms.service.GoodsService;
import com.wms.utils.HttpUtils; import com.wms.utils.HttpUtils;
@ -111,9 +107,11 @@ public class GoodsController {
if (goodsService.update(BeanUtil.copyProperties(goods, Goods.class), if (goodsService.update(BeanUtil.copyProperties(goods, Goods.class),
new LambdaUpdateWrapper<Goods>().eq(Goods::getGoodsId, goods.getGoodsId()))) { new LambdaUpdateWrapper<Goods>().eq(Goods::getGoodsId, goods.getGoodsId()))) {
// 返回成功 // 返回成功
logger.info("更新物料信息成功");
rsp.setCode(ResponseCode.OK.getCode()); rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("更新物料信息成功"); rsp.setMessage("更新物料信息成功");
} else { } else {
logger.error("更新物料信息失败");
rsp.setCode(ResponseCode.ERROR.getCode()); rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新物料信息失败"); rsp.setMessage("更新物料信息失败");
} }
@ -121,10 +119,10 @@ public class GoodsController {
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("查询物料发生异常:{}", convertJsonString(e)); logger.error("更新物料信息发生异常:{}", convertJsonString(e));
// 返回其他异常 // 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode()); rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("查询物料发生异常"); rsp.setMessage("更新物料信息发生异常");
return convertJsonString(rsp); return convertJsonString(rsp);
} }
} }
@ -222,14 +220,13 @@ public class GoodsController {
logger.info("删除物料信息成功"); logger.info("删除物料信息成功");
rsp.setCode(ResponseCode.OK.getCode()); rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("删除物料信息成功"); rsp.setMessage("删除物料信息成功");
return convertJsonString(rsp);
} else { } else {
// 返回其他异常 // 返回其他异常
logger.error("删除物料信息成功"); logger.error("删除物料信息成功");
rsp.setCode(ResponseCode.ERROR.getCode()); rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("删除物料信息失败"); rsp.setMessage("删除物料信息失败");
return convertJsonString(rsp);
} }
return convertJsonString(rsp);
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

View File

@ -1,21 +1,13 @@
package com.wms.controller; package com.wms.controller;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity; import com.wms.entity.app.ResponseEntity;
import com.wms.entity.app.dto.PageDto; 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.request.TaskRecordQuery;
import com.wms.entity.app.vo.GoodsVo;
import com.wms.entity.app.vo.TaskRecordVO; 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.entity.table.TaskRecord;
import com.wms.service.TaskRecordService; import com.wms.service.TaskRecordService;
import com.wms.utils.HttpUtils; import com.wms.utils.HttpUtils;
@ -32,15 +24,12 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
import static com.wms.utils.StringUtils.convertJsonString; import static com.wms.utils.StringUtils.convertJsonString;
/** /**
* WMS记录控制类 * WMS记录控制类
* *
* @author 梁州 * @author 梁州
* @date 2023/2/14
*/ */
@Controller @Controller
@CrossOrigin @CrossOrigin

View File

@ -1,24 +1,17 @@
package com.wms.controller; package com.wms.controller;
import cn.hutool.core.bean.BeanUtil; 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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.annotation.MyLog;
import com.wms.constants.enums.ResponseCode; import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity; 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.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.request.StandQuery;
import com.wms.entity.app.vo.GoodsVo; import com.wms.entity.app.vo.StandVo;
import com.wms.entity.page.PageDomain; import com.wms.entity.table.Stand;
import com.wms.entity.page.TableResponse;
import com.wms.entity.table.Goods;
import com.wms.service.StandService; import com.wms.service.StandService;
import com.wms.utils.HttpUtils; import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils; import com.wms.utils.StringUtils;
@ -34,8 +27,6 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List;
import static com.wms.utils.StringUtils.convertJsonString; import static com.wms.utils.StringUtils.convertJsonString;
/** /**
@ -63,67 +54,79 @@ public class StandController {
@ResponseBody @ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
public String getStandsByPage(@RequestBody StandQuery standQuery){ 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(); ResponseEntity response = new ResponseEntity();
try { try {
Page<Goods> page = goodsQuery.toMpPage(); Page<Stand> page = standQuery.toMpPage();
Page<Goods> goodsPage = goodsService.page(page, new LambdaQueryWrapper<Goods>() LambdaQueryWrapper<Stand> lambdaQueryWrapper = new LambdaQueryWrapper<Stand>()
.like(StringUtils.isNotEmpty(goodsQuery.getGoodsId()), Goods::getGoodsId, goodsQuery.getGoodsId()) .like(StringUtils.isNotEmpty(standQuery.getStandId()), Stand::getStandId, standQuery.getStandId())
.like(StringUtils.isNotEmpty(goodsQuery.getGoodsName()), Goods::getGoodsName, goodsQuery.getGoodsName())); .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<Stand> standPage = standService.page(page, lambdaQueryWrapper);
PageDto<GoodsVo> pageDto = PageDto.of(goodsPage, goods -> BeanUtil.copyProperties(goods, GoodsVo.class)); PageDto<StandVo> pageDto = PageDto.of(standPage, stand -> BeanUtil.copyProperties(stand, StandVo.class));
response.setCode(ResponseCode.OK.getCode()); response.setCode(ResponseCode.OK.getCode());
response.setMessage("查询成功"); response.setMessage("查询站台成功");
response.setReturnData(pageDto); response.setReturnData(pageDto);
return convertJsonString(response); return convertJsonString(response);
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("查询物料信息发生异常"); logger.error("查询站台发生异常:{}", convertJsonString(e));
response.setCode(ResponseCode.ERROR.getCode()); response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("查询物料发生异常"); response.setMessage("查询站台发生异常");
return convertJsonString(response); return convertJsonString(response);
} }
} }
/** /**
* 更新物料信息 * 更新站台信息
* *
* @param goods 物料信息 * @param stand 站台信息
* @return 结果 * @return 结果
*/ */
@PostMapping("/updateGoodsInfo") @PostMapping("/updateStandInfo")
@ResponseBody @ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "更新物料信息", logMethod = "updateGoodsInfo") @MyLog(logTitle = "更新站台信息", logMethod = "updateStandInfo")
public String updateGoodsInfo(@RequestBody GoodsDto goods) { public String updateGoodsInfo(@RequestBody StandDto stand) {
logger.info("接收到更新物料信息请求:{}请求ip{}", convertJsonString(goods), HttpUtils.getIpAddr(servletRequest)); logger.info("接收到更新站台信息请求:{}请求ip{}", convertJsonString(stand), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息 // 创建响应信息
ResponseEntity rsp = new ResponseEntity(); ResponseEntity rsp = new ResponseEntity();
try { try {
if (StringUtils.isEmpty(goods.getGoodsId())) {// 物料编码为空不执行 if (StringUtils.isEmpty(stand.getStandId())) {// 站台id为空不允许更新
logger.error("请求更新的物料编号为空"); logger.error("请求更新的站台id为空");
rsp.setCode(ResponseCode.ERROR.getCode()); rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("请求更新的物料编号为空"); rsp.setMessage("请求更新的站台id为空");
return convertJsonString(rsp); return convertJsonString(rsp);
} }
if (goodsService.update(BeanUtil.copyProperties(goods, Goods.class), if (standService.update(BeanUtil.copyProperties(stand, Stand.class),
new LambdaUpdateWrapper<Goods>().eq(Goods::getGoodsId, goods.getGoodsId()))) { new LambdaUpdateWrapper<Stand>().eq(Stand::getStandId, stand.getStandId()))) {
// 返回成功 // 返回成功
logger.info("更新站台信息成功");
rsp.setCode(ResponseCode.OK.getCode()); rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("更新物料信息成功"); rsp.setMessage("更新站台信息成功");
} else { } else {
logger.error("更新站台信息失败");
rsp.setCode(ResponseCode.ERROR.getCode()); rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新物料信息失败"); rsp.setMessage("更新站台信息失败");
} }
return convertJsonString(rsp); return convertJsonString(rsp);
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("查询物料发生异常:{}", convertJsonString(e)); logger.error("更新站台信息发生异常:{}", convertJsonString(e));
// 返回其他异常 // 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode()); rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("查询物料发生异常"); rsp.setMessage("更新站台信息发生异常");
return convertJsonString(rsp); return convertJsonString(rsp);
} }
} }

View File

@ -1,14 +1,17 @@
package com.wms.controller; package com.wms.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSON;
import com.github.pagehelper.PageHelper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageInfo; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wms.annotation.MyLog;
import com.wms.constants.enums.ResponseCode; import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity; import com.wms.entity.app.ResponseEntity;
import com.wms.entity.page.PageDomain; import com.wms.entity.app.dto.PageDto;
import com.wms.entity.page.TableRequest; import com.wms.entity.app.dto.StockDto;
import com.wms.entity.page.TableResponse; import com.wms.entity.app.request.StockQuery;
import com.wms.entity.table.StockDto; import com.wms.entity.app.vo.StockVo;
import com.wms.entity.table.Stock;
import com.wms.service.StockService; import com.wms.service.StockService;
import com.wms.utils.HttpUtils; import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils; import com.wms.utils.StringUtils;
@ -25,11 +28,13 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Arrays; import java.math.BigDecimal;
import java.util.List;
import static com.wms.utils.StringUtils.convertJsonString;
/** /**
* WMS库存控制类 * WMS库存控制类
*
* @author 梁州 * @author 梁州
* &#064;date 2023/2/14 * &#064;date 2023/2/14
*/ */
@ -50,43 +55,38 @@ public class StockController {
private final HttpServletRequest servletRequest; private final HttpServletRequest servletRequest;
/** /**
* 查找所有库存 * 查找所有物料
*/ */
@PostMapping("/getAllStocks") @PostMapping("/getAllStocks")
@ResponseBody @ResponseBody
public String getAllStocks(@RequestBody TableRequest<String, String> tableRequest){ @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
logger.info("请求的ip地址{}", HttpUtils.getIpAddr(servletRequest)); public String getAllStocks(@RequestBody StockQuery stockQuery) {
logger.info("接收到查询库存请求:{}", JSON.toJSONString(tableRequest)); logger.info("接收到查询库存数据请求:{}请求ip{}", convertJsonString(stockQuery), HttpUtils.getIpAddr(servletRequest));
TableResponse tblResp = new TableResponse(); ResponseEntity response = new ResponseEntity();
// 解析请求数据 try {
if (tableRequest == null || tableRequest.getPage() == null) { Page<Stock> page = stockQuery.toMpPage();
tblResp.setCode(ResponseCode.ERROR.getCode()); Page<Stock> stockPage = stockService.page(page, new LambdaQueryWrapper<Stock>()
tblResp.setMessage("请求数据为空,无法处理!"); .like(StringUtils.isNotEmpty(stockQuery.getVehicleId()), Stock::getVehicleId, stockQuery.getVehicleId())
logger.error("请求数据为空,无法处理!"); .eq(StringUtils.isNotEmpty(stockQuery.getLocationId()), Stock::getLocationId, stockQuery.getLocationId())
return JSON.toJSONString(tblResp); .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()));
PageDomain pageRequest = tableRequest.getPage();
String[] orderByArr = {"location_id", "vehicle_id", "goods_id", "batch_no", "remain_num", "expiration_date", "create_time"};
String orderByStr;
if (StringUtils.isNotEmpty(pageRequest.getOrderByColumn()) && Arrays.asList(orderByArr).contains(StringUtils.toUnderScoreCase(pageRequest.getOrderByColumn()))) { PageDto<StockVo> pageDto = PageDto.of(stockPage, stock -> BeanUtil.copyProperties(stock, StockVo.class));
orderByStr = pageRequest.getOrderBy(); response.setCode(ResponseCode.OK.getCode());
} else { response.setMessage("查询库存成功");
// 默认排序 response.setReturnData(pageDto);
orderByStr = "expiration_date desc"; 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<StockDto> stocks = stockService.selStocksFront(tableRequest.getParam());
PageInfo<StockDto> 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") @PostMapping("/updateStockInfo")
@ResponseBody @ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "更新库存信息", logMethod = "updateStockInfo")
public String updateStockInfo(@RequestBody StockDto stock) { 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(); ResponseEntity rsp = new ResponseEntity();
try { try {
@ -106,26 +107,45 @@ public class StockController {
logger.error("请求的库存编号为空,不允许修改"); logger.error("请求的库存编号为空,不允许修改");
rsp.setCode(ResponseCode.ERROR.getCode()); rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("请求的库存编号为空,不允许修改"); rsp.setMessage("请求的库存编号为空,不允许修改");
return JSON.toJSONString(rsp); return convertJsonString(rsp);
}
if (stock.getRealNum() == 0) {
stockService.deleteStock(stock.getStockId());
} else {
stockService.modifyStock(stock);
}
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("发生异常:{}", e.getMessage());
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage(e.getMessage());
return JSON.toJSONString(rsp);
} }
LambdaQueryWrapper<Stock> stockLambdaQueryWrapper = new LambdaQueryWrapper<Stock>().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 {
if (stockService.update(BeanUtil.copyProperties(stock, Stock.class), stockLambdaQueryWrapper)) {
// 返回成功
logger.info("更新库存信息成功");
rsp.setCode(ResponseCode.OK.getCode()); rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("更新库存信息成功"); rsp.setMessage("更新库存信息成功");
return JSON.toJSONString(rsp); 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("更新库存信息发生异常:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新库存信息发生异常");
return convertJsonString(rsp);
}
} }
/** /**
@ -137,16 +157,26 @@ public class StockController {
@PostMapping("/addNewStock") @PostMapping("/addNewStock")
@ResponseBody @ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "添加库存信息", logMethod = "addNewStock")
public String addNewStock(@RequestBody StockDto stock) { public String addNewStock(@RequestBody StockDto stock) {
logger.info("请求的ip地址{}", HttpUtils.getIpAddr(servletRequest)); logger.info("接收到添加信息请求:{}请求ip{}", convertJsonString(stock), HttpUtils.getIpAddr(servletRequest));
logger.info("接收到人工添加库存:{}", JSON.toJSONString(stock));
// 创建响应信息 // 创建响应信息
ResponseEntity rsp = new ResponseEntity(); ResponseEntity rsp = new ResponseEntity();
try { try {
StockDto tempStock = new StockDto(); StockDto tempStock = new StockDto();
tempStock.setStockId(WmsUtils.generateId("ST")); 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) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@ -156,9 +186,5 @@ public class StockController {
rsp.setMessage(e.getMessage()); rsp.setMessage(e.getMessage());
return JSON.toJSONString(rsp); return JSON.toJSONString(rsp);
} }
// 返回成功
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("添加库存信息成功");
return JSON.toJSONString(rsp);
} }
} }

View File

@ -10,7 +10,6 @@ import com.wms.entity.app.*;
import com.wms.entity.app.dto.TaskDto; import com.wms.entity.app.dto.TaskDto;
import com.wms.entity.app.dto.extend.StockDetailInfo; import com.wms.entity.app.dto.extend.StockDetailInfo;
import com.wms.entity.app.dto.extend.TaskDetailInfo; 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.GoodsInRequest;
import com.wms.entity.app.request.TaskInRequest; import com.wms.entity.app.request.TaskInRequest;
import com.wms.entity.app.request.TaskOutRequest; import com.wms.entity.app.request.TaskOutRequest;
@ -19,12 +18,12 @@ import com.wms.entity.table.*;
import com.wms.service.*; import com.wms.service.*;
import com.wms.utils.HttpUtils; import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils; 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 jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Isolation;
@ -51,6 +50,7 @@ import static com.wms.utils.WmsUtils.generateId;
@CrossOrigin @CrossOrigin
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
@RequestMapping(value = "/wms/task") @RequestMapping(value = "/wms/task")
@Api(value = "WMS任务控制类")
public class TaskController { public class TaskController {
private final Logger logger = LoggerFactory.getLogger(this.getClass()); private final Logger logger = LoggerFactory.getLogger(this.getClass());
/** /**
@ -85,10 +85,6 @@ public class TaskController {
* 请求头部信息 * 请求头部信息
*/ */
private final HttpServletRequest servletRequest; private final HttpServletRequest servletRequest;
/**
* 日志服务
*/
private final LogService logService;
/** /**
* 接收入库任务请求 * 接收入库任务请求
@ -100,6 +96,7 @@ public class TaskController {
@ResponseBody @ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "入库请求", logMethod = "requestIn") @MyLog(logTitle = "入库请求", logMethod = "requestIn")
@ApiOperation(value = "请求入库")
public String receiveTaskInRequest(@RequestBody TaskInRequest taskInRequest) { public String receiveTaskInRequest(@RequestBody TaskInRequest taskInRequest) {
logger.info("接收到入库请求:{}ip地址{}", JSON.toJSONString(taskInRequest), HttpUtils.getIpAddr(servletRequest)); logger.info("接收到入库请求:{}ip地址{}", JSON.toJSONString(taskInRequest), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息 // 创建响应信息
@ -142,7 +139,7 @@ public class TaskController {
return convertJsonString(response); return convertJsonString(response);
} }
// 生成入库任务 // 生成入库任务
String saveTaskResult = ""; String saveTaskResult;
if (taskInRequest.getGoodsList().isEmpty()) {// 空托入库 if (taskInRequest.getGoodsList().isEmpty()) {// 空托入库
saveTaskResult = genEmptyInTask(taskInRequest, nextLocationMap.get("nextLocationId"), nextLocationMap.get("preTaskId")); saveTaskResult = genEmptyInTask(taskInRequest, nextLocationMap.get("nextLocationId"), nextLocationMap.get("preTaskId"));
} else {// 带料入库 } else {// 带料入库
@ -274,10 +271,8 @@ public class TaskController {
} }
// 验证载具号是否重复入库 // 验证载具号是否重复入库
if (vehicleService.exists(new LambdaQueryWrapper<Vehicle>().eq(Vehicle::getVehicleId, taskInRequest.getVehicleId()) if (vehicleService.exists(new LambdaQueryWrapper<Vehicle>().eq(Vehicle::getVehicleId, taskInRequest.getVehicleId())
.and(wrapper -> { .and(wrapper -> wrapper.eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode())
wrapper.eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode()) .or().eq(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode())))) {
.or().eq(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode());
}))) {
return TaskInValidationEnum.DUPLICATE_VEHICLE_ID.getErrorMessage(); return TaskInValidationEnum.DUPLICATE_VEHICLE_ID.getErrorMessage();
} }
// 验证当前载具是否已经有入库任务 // 验证当前载具是否已经有入库任务
@ -337,6 +332,7 @@ public class TaskController {
@ResponseBody @ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "出库请求", logMethod = "requestOut") @MyLog(logTitle = "出库请求", logMethod = "requestOut")
@ApiOperation(value = "请求入库")
public String receiveTaskOutRequest(@RequestBody TaskOutRequest taskOutRequest) { public String receiveTaskOutRequest(@RequestBody TaskOutRequest taskOutRequest) {
logger.info("接收到出库请求:{}ip地址{}", JSON.toJSONString(taskOutRequest), HttpUtils.getIpAddr(servletRequest)); logger.info("接收到出库请求:{}ip地址{}", JSON.toJSONString(taskOutRequest), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息 // 创建响应信息
@ -351,23 +347,18 @@ public class TaskController {
return convertJsonString(response); return convertJsonString(response);
} }
// 没有物料单纯载具或者库位出库 // 没有物料单纯载具或者库位出库
String genResult;
if (StringUtils.isEmpty(taskOutRequest.getGoodsId())) { if (StringUtils.isEmpty(taskOutRequest.getGoodsId())) {
String genResult = genVehicleLocationOutTask(taskOutRequest); genResult = genVehicleLocationOutTask(taskOutRequest);
if (!genResult.equals("")) {
logger.error("出库错误!{}", genResult);
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("出库错误:" + genResult);
return convertJsonString(response);
}
} else { } else {
String genResult = genGoodsOutTask(taskOutRequest); genResult = genGoodsOutTask(taskOutRequest);
}
if (!genResult.equals("")) { if (!genResult.equals("")) {
logger.error("出库错误!{}", genResult); logger.error("出库错误!{}", genResult);
response.setCode(ResponseCode.ERROR.getCode()); response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("出库错误:" + genResult); response.setMessage("出库错误:" + genResult);
return convertJsonString(response); return convertJsonString(response);
} }
}
logger.info("处理出库请求成功!"); logger.info("处理出库请求成功!");
response.setCode(ResponseCode.OK.getCode()); response.setCode(ResponseCode.OK.getCode());
@ -880,8 +871,12 @@ public class TaskController {
taskService.remove(new LambdaQueryWrapper<Task>().eq(Task::getTaskId, moveTask.getTaskId())); taskService.remove(new LambdaQueryWrapper<Task>().eq(Task::getTaskId, moveTask.getTaskId()));
} }
} }
} else if (taskStatus == WcsTaskStatus.RUN.getCode()) {// 任务完成 } else if (taskStatus == WcsTaskStatus.RUN.getCode()) {// 任务开始运行
// TODO // 更新任务状态为正在运行
for (Task task : feedBackTasks) {
task.setTaskStatus(WmsTaskStatus.RUN.getCode());
}
taskService.updateBatchById(feedBackTasks);
} }

View File

@ -1,6 +1,7 @@
package com.wms.entity.app.vo; package com.wms.entity.app.vo;
import com.wms.entity.table.LocationDto;
import com.wms.entity.app.dto.LocationDto;
import java.util.List; import java.util.List;

View File

@ -1,10 +1,11 @@
package com.wms.service; package com.wms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wms.entity.table.Config; import com.wms.entity.table.Config;
import java.util.List; import java.util.List;
public interface ConfigService { public interface ConfigService extends IService<Config> {
List<Config> selectConfigs(String configKey); List<Config> selectConfigs(String configKey);
int updateConfig(Config config); int updateConfig(Config config);

View File

@ -3,8 +3,6 @@ package com.wms.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.wms.entity.table.WmsLog; import com.wms.entity.table.WmsLog;
import java.util.List;
public interface LogService extends IService<WmsLog> { public interface LogService extends IService<WmsLog> {
/** /**
* 定期删除日志记录30天清一次 * 定期删除日志记录30天清一次

View File

@ -1,6 +1,7 @@
package com.wms.service.serviceImplements; package com.wms.service.serviceImplements;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.entity.table.Config;
import com.wms.mapper.ConfigMapper; import com.wms.mapper.ConfigMapper;
import com.wms.service.ConfigService; import com.wms.service.ConfigService;
@ -13,7 +14,7 @@ import java.util.List;
@Service @Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ConfigServiceImplement implements ConfigService { public class ConfigServiceImplement extends ServiceImpl<ConfigMapper, Config> implements ConfigService {
private final ConfigMapper configMapper; private final ConfigMapper configMapper;
@Override @Override

View File

@ -8,10 +8,10 @@ import com.wms.entity.table.Stand;
import com.wms.entity.table.Stock; import com.wms.entity.table.Stock;
import com.wms.entity.table.Task; import com.wms.entity.table.Task;
import com.wms.mapper.LocationMapper; 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.LocationService;
import com.wms.service.StandService;
import com.wms.service.StockService;
import com.wms.service.TaskService;
import com.wms.utils.StringUtils; import com.wms.utils.StringUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -29,15 +29,15 @@ public class LocationServiceImplements extends ServiceImpl<LocationMapper, Locat
/** /**
* 任务 * 任务
*/ */
private final TaskService taskService; private final TaskMapper taskMapper;
/** /**
* 站台 * 站台
*/ */
private final StandService standService; private final StandMapper standMapper;
/** /**
* 库存 * 库存
*/ */
private final StockService stockService; private final StockMapper stockMapper;
/** /**
* 查找一个可用库位 * 查找一个可用库位
@ -62,7 +62,7 @@ public class LocationServiceImplements extends ServiceImpl<LocationMapper, Locat
LambdaQueryWrapper<Stand> standQueryWrapper = new LambdaQueryWrapper<Stand>() LambdaQueryWrapper<Stand> standQueryWrapper = new LambdaQueryWrapper<Stand>()
.select(Stand::getStandId, Stand::getEquipmentId) .select(Stand::getStandId, Stand::getEquipmentId)
.eq(Stand::getStandId, inPoint); .eq(Stand::getStandId, inPoint);
Stand queryStand = standService.getOne(standQueryWrapper); Stand queryStand = standMapper.selectOne(standQueryWrapper);
if (queryStand != null && queryStand.getEquipmentId() != null) { if (queryStand != null && queryStand.getEquipmentId() != null) {
equipmentId = queryStand.getEquipmentId(); equipmentId = queryStand.getEquipmentId();
} }
@ -78,7 +78,7 @@ public class LocationServiceImplements extends ServiceImpl<LocationMapper, Locat
.eq(Stand::getIsLock, 0) .eq(Stand::getIsLock, 0)
.eq(Stand::getStandType, 3) .eq(Stand::getStandType, 3)
.orderByAsc(Stand::getLastUseTime); .orderByAsc(Stand::getLastUseTime);
List<Stand> LRUStands = standService.list(LRUStandQueryWrapper); List<Stand> LRUStands = standMapper.selectList(LRUStandQueryWrapper);
if (LRUStands.isEmpty()) { if (LRUStands.isEmpty()) {
return resultMap; return resultMap;
} else { } else {
@ -129,7 +129,7 @@ public class LocationServiceImplements extends ServiceImpl<LocationMapper, Locat
LambdaQueryWrapper<Task> taskQueryWrapper = new LambdaQueryWrapper<Task>() LambdaQueryWrapper<Task> taskQueryWrapper = new LambdaQueryWrapper<Task>()
.select(Task::getTaskId) .select(Task::getTaskId)
.eq(Task::getOrigin, havaTaskLocation.getLocationId()); .eq(Task::getOrigin, havaTaskLocation.getLocationId());
if (taskService.count(taskQueryWrapper) > 0) { if (taskMapper.selectCount(taskQueryWrapper) > 0) {
hasTasksFlag = true; hasTasksFlag = true;
break; break;
} }
@ -151,7 +151,7 @@ public class LocationServiceImplements extends ServiceImpl<LocationMapper, Locat
LambdaQueryWrapper<Task> taskQueryWrapper = new LambdaQueryWrapper<Task>() LambdaQueryWrapper<Task> taskQueryWrapper = new LambdaQueryWrapper<Task>()
.select(Task::getTaskId) .select(Task::getTaskId)
.eq(Task::getDestination, plusOneDepthLocation.getLocationId()); .eq(Task::getDestination, plusOneDepthLocation.getLocationId());
Task plusOneDepthTask = taskService.getOne(taskQueryWrapper); Task plusOneDepthTask = taskMapper.selectOne(taskQueryWrapper);
if (plusOneDepthTask != null) { if (plusOneDepthTask != null) {
resultMap.put("nextLocationId", oneAvailableLocation.getLocationId()); resultMap.put("nextLocationId", oneAvailableLocation.getLocationId());
resultMap.put("preTaskId", plusOneDepthTask.getTaskId()); resultMap.put("preTaskId", plusOneDepthTask.getTaskId());
@ -171,7 +171,7 @@ public class LocationServiceImplements extends ServiceImpl<LocationMapper, Locat
private int selectEquipmentByLRUAndGoods(List<Stand> LRUStands, String goodsId) { private int selectEquipmentByLRUAndGoods(List<Stand> LRUStands, String goodsId) {
int equipmentId = -1; int equipmentId = -1;
List<Integer> equipmentIds = new ArrayList<>(); List<Integer> equipmentIds = new ArrayList<>();
List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() List<Task> tasks = taskMapper.selectList(new LambdaQueryWrapper<Task>()
.select(Task::getDestination) .select(Task::getDestination)
.apply("goods_related -> '$.goods_id' = {0}", goodsId) .apply("goods_related -> '$.goods_id' = {0}", goodsId)
.eq(Task::getTaskType, 1)); .eq(Task::getTaskType, 1));
@ -181,7 +181,7 @@ public class LocationServiceImplements extends ServiceImpl<LocationMapper, Locat
equipmentIds.add(tempLocation.getEquipmentId()); equipmentIds.add(tempLocation.getEquipmentId());
} }
} }
List<Stock> stocks = stockService.list(new LambdaQueryWrapper<Stock>() List<Stock> stocks = stockMapper.selectList(new LambdaQueryWrapper<Stock>()
.select(Stock::getLocationId) .select(Stock::getLocationId)
.apply("goods_related -> '$.goods_id' = {0}", goodsId) .apply("goods_related -> '$.goods_id' = {0}", goodsId)
.eq(Stock::getStockStatus, StockStatus.OK.getCode())); .eq(Stock::getStockStatus, StockStatus.OK.getCode()));

View File

@ -9,11 +9,11 @@ import com.wms.entity.table.Location;
import com.wms.entity.table.Stock; import com.wms.entity.table.Stock;
import com.wms.entity.table.Task; import com.wms.entity.table.Task;
import com.wms.entity.table.Vehicle; import com.wms.entity.table.Vehicle;
import com.wms.mapper.LocationMapper;
import com.wms.mapper.StockMapper;
import com.wms.mapper.TaskMapper; import com.wms.mapper.TaskMapper;
import com.wms.service.LocationService; import com.wms.mapper.VehicleMapper;
import com.wms.service.StockService;
import com.wms.service.TaskService; import com.wms.service.TaskService;
import com.wms.service.VehicleService;
import com.wms.utils.StringUtils; import com.wms.utils.StringUtils;
import com.wms.utils.WmsUtils; import com.wms.utils.WmsUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@ -37,26 +37,26 @@ public class TaskServiceImplements extends ServiceImpl<TaskMapper, Task> 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 @Override
public TaskDto genMoveTask(String locationId) { public TaskDto genMoveTask(String locationId) {
Location outLocation = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, locationId)); Location outLocation = locationMapper.selectOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, locationId));
if (outLocation != null) { if (outLocation != null) {
if (outLocation.getWDepth() == 1) { if (outLocation.getWDepth() == 1) {
return null; return null;
} else { } else {
// 生成当前深度-1的库位的移库任务 // 生成当前深度-1的库位的移库任务
TaskDto depthMinus1MoveTask = new TaskDto(); TaskDto depthMinus1MoveTask = new TaskDto();
Location depthMinus1Location = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, outLocation.getLocationId())); Location depthMinus1Location = locationMapper.selectOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, outLocation.getLocationId()));
if (depthMinus1Location.getIsLock() == 1) {// 外层库位锁定 if (depthMinus1Location.getIsLock() == 1) {// 外层库位锁定
depthMinus1MoveTask.setTaskId("LOCKED"); depthMinus1MoveTask.setTaskId("LOCKED");
return depthMinus1MoveTask; return depthMinus1MoveTask;
@ -73,11 +73,11 @@ public class TaskServiceImplements extends ServiceImpl<TaskMapper, Task> impleme
moveTask.setPreTask(depthMinusIn1Task.getTaskId()); moveTask.setPreTask(depthMinusIn1Task.getTaskId());
taskMapper.insert(moveTask); taskMapper.insert(moveTask);
// 对应载具所有库存上锁 // 对应载具所有库存上锁
stockService.update(new LambdaUpdateWrapper<Stock>() stockMapper.update(new LambdaUpdateWrapper<Stock>()
.set(Stock::getStockStatus, StockStatus.MOVE.getCode()) .set(Stock::getStockStatus, StockStatus.MOVE.getCode())
.eq(Stock::getLocationId, depthMinus1Location.getLocationId())); .eq(Stock::getLocationId, depthMinus1Location.getLocationId()));
// 对应载具状态设置 // 对应载具状态设置
vehicleService.update(new LambdaUpdateWrapper<Vehicle>() vehicleMapper.update(new LambdaUpdateWrapper<Vehicle>()
.set(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode()) .set(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode())
.eq(Vehicle::getCurrentLocation, depthMinus1Location.getLocationId())); .eq(Vehicle::getCurrentLocation, depthMinus1Location.getLocationId()));
depthMinus1MoveTask.setTaskId(moveTask.getTaskId()); depthMinus1MoveTask.setTaskId(moveTask.getTaskId());
@ -100,11 +100,11 @@ public class TaskServiceImplements extends ServiceImpl<TaskMapper, Task> impleme
moveTask.setPreTask(depthMinus2MoveTask.getTaskId()); moveTask.setPreTask(depthMinus2MoveTask.getTaskId());
taskMapper.insert(moveTask); taskMapper.insert(moveTask);
// 对应载具所有库存上锁 // 对应载具所有库存上锁
stockService.update(new LambdaUpdateWrapper<Stock>() stockMapper.update(new LambdaUpdateWrapper<Stock>()
.set(Stock::getStockStatus, StockStatus.MOVE.getCode()) .set(Stock::getStockStatus, StockStatus.MOVE.getCode())
.eq(Stock::getLocationId, depthMinus1Location.getLocationId())); .eq(Stock::getLocationId, depthMinus1Location.getLocationId()));
// 对应载具状态设置 // 对应载具状态设置
vehicleService.update(new LambdaUpdateWrapper<Vehicle>() vehicleMapper.update(new LambdaUpdateWrapper<Vehicle>()
.set(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode()) .set(Vehicle::getVehicleStatus, VehicleStatus.MOVE.getCode())
.eq(Vehicle::getCurrentLocation, depthMinus1Location.getLocationId())); .eq(Vehicle::getCurrentLocation, depthMinus1Location.getLocationId()));
depthMinus1MoveTask.setTaskId(moveTask.getTaskId()); depthMinus1MoveTask.setTaskId(moveTask.getTaskId());
@ -130,7 +130,7 @@ public class TaskServiceImplements extends ServiceImpl<TaskMapper, Task> impleme
Task moveTask = new Task(); Task moveTask = new Task();
// 先找一个新库位同一个设备号但是不同的排列层 // 先找一个新库位同一个设备号但是不同的排列层
Location newLocation = new Location(); Location newLocation = new Location();
List<Location> availableLocations = locationService.list(new LambdaQueryWrapper<Location>() List<Location> availableLocations = locationMapper.selectList(new LambdaQueryWrapper<Location>()
.eq(Location::getEquipmentId, originLocation.getEquipmentId()) .eq(Location::getEquipmentId, originLocation.getEquipmentId())
.eq(Location::getLocationType, originLocation.getLocationType()) .eq(Location::getLocationType, originLocation.getLocationType())
.eq(Location::getIsLock, 0) .eq(Location::getIsLock, 0)
@ -144,7 +144,7 @@ public class TaskServiceImplements extends ServiceImpl<TaskMapper, Task> impleme
.eq(Location::getWRow, oneAvailableLocation.getWRow()) .eq(Location::getWRow, oneAvailableLocation.getWRow())
.eq(Location::getWCol, oneAvailableLocation.getWCol()) .eq(Location::getWCol, oneAvailableLocation.getWCol())
.eq(Location::getWLayer, oneAvailableLocation.getWLayer()); .eq(Location::getWLayer, oneAvailableLocation.getWLayer());
List<Location> haveTaskLocations = locationService.list(haveTaskQueryWrapper); List<Location> haveTaskLocations = locationMapper.selectList(haveTaskQueryWrapper);
// 判断当前排列层的库位是否有出库或者移库任务 // 判断当前排列层的库位是否有出库或者移库任务
boolean hasTasksFlag = false; boolean hasTasksFlag = false;
for (Location havaTaskLocation : haveTaskLocations) { for (Location havaTaskLocation : haveTaskLocations) {
@ -166,7 +166,7 @@ public class TaskServiceImplements extends ServiceImpl<TaskMapper, Task> impleme
.set(Location::getVehicleId, originLocation.getVehicleId()) .set(Location::getVehicleId, originLocation.getVehicleId())
.eq(Location::getLocationId, oneAvailableLocation.getLocationId()) .eq(Location::getLocationId, oneAvailableLocation.getLocationId())
.eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode()); .eq(Location::getLocationStatus, LocationStatus.EMPTY.getCode());
if (locationService.update(updateLocationWrapper)) { if (locationMapper.update(updateLocationWrapper) > 0) {
newLocation = oneAvailableLocation; newLocation = oneAvailableLocation;
break; break;
} }

View File

@ -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 url: jdbc:mysql://112.4.208.194:3001/wms_miniload_bk7?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
username: coder username: coder
password: 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 # url: jdbc:mysql://192.168.3.254:3306/wms_miniload_bk7?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
# username: coder # username: coder
# password: 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 # url: jdbc:mysql://localhost:3306/wms_xizhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
# username: developer # username: developer
# password: developer # password: developer
# driver-class-name: com.mysql.jdbc.Driver
# 从库 # 从库
slave_1: slave_1:
url: jdbc:mysql://localhost:3306/wms_xizhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true url: jdbc:mysql://localhost:3306/wms_xizhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
username: developer username: developer
password: developer password: developer
driver-class-name: com.mysql.cj.jdbc.Driver
profiles: profiles:
active: online active: online
server: server: