代码更新:
1.增加DBS和工单界面 2.修正工作流程中的问题
This commit is contained in:
parent
eff71a19c2
commit
36fcf6e326
|
|
@ -5,15 +5,18 @@ import com.alibaba.excel.EasyExcel;
|
|||
import com.alibaba.excel.support.ExcelTypeEnum;
|
||||
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
|
||||
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.*;
|
||||
import com.wms.entity.app.ResponseEntity;
|
||||
import com.wms.entity.app.request.LocationQuery;
|
||||
import com.wms.entity.app.request.StockQuery;
|
||||
import com.wms.entity.app.request.TaskRecordQuery;
|
||||
import com.wms.entity.app.request.VehicleQuery;
|
||||
import com.wms.entity.app.dto.PageDto;
|
||||
import com.wms.entity.app.request.*;
|
||||
import com.wms.entity.app.vo.FileVo;
|
||||
import com.wms.entity.app.vo.LocationVo;
|
||||
import com.wms.entity.app.vo.UploadRecordVo;
|
||||
import com.wms.entity.table.*;
|
||||
import com.wms.service.*;
|
||||
import com.wms.utils.HttpUtils;
|
||||
import com.wms.utils.StringUtils;
|
||||
import com.wms.utils.excel.listener.*;
|
||||
import com.wms.utils.excel.style.ExcelContentStyle;
|
||||
|
|
@ -62,6 +65,40 @@ public class ExcelController {
|
|||
private final GoodsService goodsService;// 物料服务
|
||||
private final WorkStationConfigService workStationConfigService;// 工站配置服务
|
||||
|
||||
/**
|
||||
* 查询上传记录
|
||||
* @param uploadRecordQuery 查询参数
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/queryUploadRecord")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@MyLog(logTitle = "查询上传记录", logMethod = "queryUploadRecord")
|
||||
public String queryUploadRecord(@RequestBody UploadRecordQuery uploadRecordQuery) {
|
||||
logger.info("接收到查询上传记录请求:{},请求ip:{}", convertJsonString(uploadRecordQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
ResponseEntity response = new ResponseEntity();
|
||||
try {
|
||||
Page<UploadRecord> page = uploadRecordQuery.toMpPage();
|
||||
Page<UploadRecord> recordPage = uploadRecordService.page(page, new LambdaQueryWrapper<UploadRecord>()
|
||||
.like(StringUtils.isNotEmpty(uploadRecordQuery.getFileType()), UploadRecord::getFileType, uploadRecordQuery.getFileType())
|
||||
.like(StringUtils.isNotEmpty(uploadRecordQuery.getFileDescription()), UploadRecord::getFileDescription, uploadRecordQuery.getFileDescription())
|
||||
.like(StringUtils.isNotEmpty(uploadRecordQuery.getFileName()), UploadRecord::getFileName, uploadRecordQuery.getFileName()));
|
||||
|
||||
PageDto<UploadRecordVo> pageDto = PageDto.of(recordPage, record -> BeanUtil.copyProperties(record, UploadRecordVo.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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入库存信息
|
||||
*
|
||||
|
|
|
|||
|
|
@ -49,7 +49,6 @@ public class JobComponent {
|
|||
* 向Wcs下发任务
|
||||
* 每2秒执行一次
|
||||
*/
|
||||
@Async
|
||||
@Scheduled(fixedDelay = 2000)
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
public void executeTasks() {
|
||||
|
|
@ -83,7 +82,6 @@ public class JobComponent {
|
|||
/**
|
||||
* 检测工作
|
||||
*/
|
||||
@Async
|
||||
@Scheduled(fixedDelay = 2000)
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
public void detectWork() {
|
||||
|
|
|
|||
330
src/main/java/com/wms/controller/KateWorkQueryController.java
Normal file
330
src/main/java/com/wms/controller/KateWorkQueryController.java
Normal file
|
|
@ -0,0 +1,330 @@
|
|||
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.core.conditions.update.LambdaUpdateWrapper;
|
||||
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.app.dto.PageDto;
|
||||
import com.wms.entity.app.dto.StockDto;
|
||||
import com.wms.entity.app.request.DbsQuery;
|
||||
import com.wms.entity.app.request.KateOrdersQuery;
|
||||
import com.wms.entity.app.request.StockQuery;
|
||||
import com.wms.entity.app.vo.DbsVo;
|
||||
import com.wms.entity.app.vo.KateOrdersVo;
|
||||
import com.wms.entity.app.vo.LocationVo;
|
||||
import com.wms.entity.app.vo.StockVo;
|
||||
import com.wms.entity.table.KateDBS;
|
||||
import com.wms.entity.table.KateOrders;
|
||||
import com.wms.entity.table.Stock;
|
||||
import com.wms.service.KateDBSService;
|
||||
import com.wms.service.KateOrdersService;
|
||||
import com.wms.service.StockService;
|
||||
import com.wms.service.WorkStationConfigService;
|
||||
import com.wms.utils.HttpUtils;
|
||||
import com.wms.utils.StringUtils;
|
||||
import com.wms.utils.WmsUtils;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
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.web.bind.annotation.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
|
||||
import static com.wms.utils.StringUtils.convertJsonString;
|
||||
|
||||
/**
|
||||
* WMS库存控制类
|
||||
*
|
||||
* @author 梁州
|
||||
* @date 2023/2/14
|
||||
*/
|
||||
@Controller
|
||||
@CrossOrigin
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
@RequestMapping(value = "/wms/kateWork")
|
||||
public class KateWorkQueryController {
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
/**
|
||||
* DBS服务
|
||||
*/
|
||||
private final KateDBSService kateDBSService;
|
||||
/**
|
||||
* 工单服务
|
||||
*/
|
||||
private final KateOrdersService kateOrderService;
|
||||
/**
|
||||
* 站台配置服务
|
||||
*/
|
||||
private final WorkStationConfigService workStationConfigService;
|
||||
|
||||
/**
|
||||
* 请求头部信息
|
||||
*/
|
||||
private final HttpServletRequest servletRequest;
|
||||
|
||||
/**
|
||||
* 查询DBS
|
||||
*/
|
||||
@PostMapping("/getDbs")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
public String getDbs(@RequestBody DbsQuery dbsQuery) {
|
||||
logger.info("接收到查询Dbs请求:{},请求ip:{}", convertJsonString(dbsQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
ResponseEntity response = new ResponseEntity();
|
||||
try {
|
||||
Page<KateDBS> page = dbsQuery.toMpPage();
|
||||
Page<KateDBS> dbsPage = kateDBSService.page(page, new LambdaQueryWrapper<KateDBS>()
|
||||
.like(StringUtils.isNotEmpty(dbsQuery.getWorkOrder()), KateDBS::getWorkOrder, dbsQuery.getWorkOrder()));
|
||||
|
||||
PageDto<DbsVo> pageDto = PageDto.of(dbsPage, dbs -> BeanUtil.copyProperties(dbs, DbsVo.class));
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("查询DBS成功");
|
||||
response.setReturnData(pageDto);
|
||||
return convertJsonString(response);
|
||||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.error("查询DBS发生异常:{}", convertJsonString(e));
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("查询DBS发生异常");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新DBS
|
||||
*
|
||||
* @param dbsQuery 修改参数
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/updateDbs")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@MyLog(logTitle = "更新DBS", logMethod = "updateDbs")
|
||||
public String updateDbs(@RequestBody DbsQuery dbsQuery) {
|
||||
logger.info("接收到更新DBS请求:{},请求ip:{}", convertJsonString(dbsQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
// 创建响应信息
|
||||
ResponseEntity rsp = new ResponseEntity();
|
||||
try {
|
||||
if (StringUtils.isEmpty(dbsQuery.getDbsId())) {// id为空,不允许执行
|
||||
logger.error("请求的id为空,不允许修改。");
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("请求的id为空,不允许修改。");
|
||||
return convertJsonString(rsp);
|
||||
}
|
||||
boolean updateResult = kateDBSService.update(new LambdaUpdateWrapper<KateDBS>()
|
||||
.set(dbsQuery.getWorkSequence() != null, KateDBS::getWorkSequence, dbsQuery.getWorkSequence())
|
||||
.set(dbsQuery.getDbsStatus() != null, KateDBS::getDbsStatus, dbsQuery.getDbsStatus())
|
||||
.set(StringUtils.isNotEmpty(dbsQuery.getMachineNo()), KateDBS::getMachineNo, dbsQuery.getMachineNo())
|
||||
.set(dbsQuery.getPlanStartDate() != null, KateDBS::getPlanStartDate, dbsQuery.getPlanStartDate())
|
||||
.set(KateDBS::getLastUpdateTime, LocalDateTime.now())
|
||||
.set(KateDBS::getLastUpdateUser, dbsQuery.getUserName())
|
||||
.eq(KateDBS::getDbsId, dbsQuery.getDbsId()));
|
||||
if (updateResult) {
|
||||
logger.info("更新Dbs成功。");
|
||||
rsp.setCode(ResponseCode.OK.getCode());
|
||||
rsp.setMessage("更新Dbs成功。");
|
||||
} else {
|
||||
logger.error("更新Dbs失败。");
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("更新Dbs失败。");
|
||||
}
|
||||
return convertJsonString(rsp);
|
||||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.info("更新Dbs发生异常:{}", convertJsonString(e));
|
||||
// 返回其他异常
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("更新Dbs发生异常");
|
||||
return convertJsonString(rsp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除Dbs
|
||||
*
|
||||
* @param dbsQuery dbs查询参数
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/deleteDbs")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@MyLog(logTitle = "删除dbs", logMethod = "deleteDbs")
|
||||
public String deleteDbs(@RequestBody DbsQuery dbsQuery) {
|
||||
logger.info("接收到删除dbs请求:{},请求ip:{}", convertJsonString(dbsQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
// 创建响应信息
|
||||
ResponseEntity rsp = new ResponseEntity();
|
||||
try {
|
||||
if (StringUtils.isEmpty(dbsQuery.getDbsId())) {// id为空,不允许执行
|
||||
logger.error("请求的id为空,不允许修改。");
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("请求的id为空,不允许修改。");
|
||||
return convertJsonString(rsp);
|
||||
}
|
||||
// 删除数据
|
||||
if (kateDBSService.remove(new LambdaQueryWrapper<KateDBS>().eq(KateDBS::getDbsId, dbsQuery.getDbsId()))) {
|
||||
// 返回成功
|
||||
logger.info("删除dbs成功");
|
||||
rsp.setCode(ResponseCode.OK.getCode());
|
||||
rsp.setMessage("删除dbs成功");
|
||||
} else {
|
||||
// 返回失败
|
||||
logger.error("删除dbs失败");
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("删除dbs失败");
|
||||
}
|
||||
return convertJsonString(rsp);
|
||||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||
logger.info("删除dbs发生异常:{}", convertJsonString(e));
|
||||
// 返回其他异常
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("删除dbs发生异常");
|
||||
return convertJsonString(rsp);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询工单
|
||||
*/
|
||||
@PostMapping("/getOrders")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
public String getOrders(@RequestBody KateOrdersQuery kateOrdersQuery) {
|
||||
logger.info("接收到查询工单请求:{},请求ip:{}", convertJsonString(kateOrdersQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
ResponseEntity response = new ResponseEntity();
|
||||
try {
|
||||
Page<KateOrders> page = kateOrdersQuery.toMpPage();
|
||||
Page<KateOrders> ordersPage = kateOrderService.page(page, new LambdaQueryWrapper<KateOrders>()
|
||||
.like(StringUtils.isNotEmpty(kateOrdersQuery.getWorkOrder()), KateOrders::getWorkOrder, kateOrdersQuery.getWorkOrder())
|
||||
.like(StringUtils.isNotEmpty(kateOrdersQuery.getGoodsId()), KateOrders::getGoodsId, kateOrdersQuery.getGoodsId())
|
||||
.like(StringUtils.isNotEmpty(kateOrdersQuery.getSupplyArea()), KateOrders::getSupplyArea, kateOrdersQuery.getSupplyArea()));
|
||||
|
||||
PageDto<KateOrdersVo> pageDto = PageDto.of(ordersPage, orders -> BeanUtil.copyProperties(orders, KateOrdersVo.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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 更新工单
|
||||
*
|
||||
* @param kateOrdersQuery 修改参数
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/updateOrders")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@MyLog(logTitle = "更新工单", logMethod = "updateOrders")
|
||||
public String updateOrders(@RequestBody KateOrdersQuery kateOrdersQuery) {
|
||||
logger.info("接收到更新工单请求:{},请求ip:{}", convertJsonString(kateOrdersQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
// 创建响应信息
|
||||
ResponseEntity rsp = new ResponseEntity();
|
||||
try {
|
||||
if (StringUtils.isEmpty(kateOrdersQuery.getOrderId())) {// id为空,不允许执行
|
||||
logger.error("请求的id为空,不允许修改。");
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("请求的id为空,不允许修改。");
|
||||
return convertJsonString(rsp);
|
||||
}
|
||||
boolean updateResult = kateOrderService.update(new LambdaUpdateWrapper<KateOrders>()
|
||||
.set(kateOrdersQuery.getOrderStatus() != null, KateOrders::getOrderStatus, kateOrdersQuery.getOrderStatus())
|
||||
.set(kateOrdersQuery.getLackQuantity() != null, KateOrders::getLackQuantity, kateOrdersQuery.getLackQuantity())
|
||||
.set(kateOrdersQuery.getPickedQuantity() != null, KateOrders::getPickedQuantity, kateOrdersQuery.getPickedQuantity())
|
||||
.set(kateOrdersQuery.getRequirementQuantity() != null, KateOrders::getRequirementQuantity, kateOrdersQuery.getRequirementQuantity())
|
||||
.set(kateOrdersQuery.getOrderStatus() == 4, KateOrders::getFinishTime, LocalDateTime.now())
|
||||
.set(kateOrdersQuery.getOrderStatus() == 4, KateOrders::getUserName, kateOrdersQuery.getUserName())
|
||||
.eq(KateOrders::getOrderId, kateOrdersQuery.getOrderId()));
|
||||
if (updateResult) {
|
||||
logger.info("更新工单成功。");
|
||||
rsp.setCode(ResponseCode.OK.getCode());
|
||||
rsp.setMessage("更新工单成功。");
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除工单
|
||||
*
|
||||
* @param kateOrdersQuery 查询参数
|
||||
* @return 结果
|
||||
*/
|
||||
@PostMapping("/deleteOrders")
|
||||
@ResponseBody
|
||||
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
|
||||
@MyLog(logTitle = "删除工单", logMethod = "deleteOrders")
|
||||
public String deleteOrders(@RequestBody KateOrdersQuery kateOrdersQuery) {
|
||||
logger.info("接收到删除工单请求:{},请求ip:{}", convertJsonString(kateOrdersQuery), HttpUtils.getIpAddr(servletRequest));
|
||||
// 创建响应信息
|
||||
ResponseEntity rsp = new ResponseEntity();
|
||||
try {
|
||||
if (StringUtils.isEmpty(kateOrdersQuery.getOrderId())) {// id为空,不允许执行
|
||||
logger.error("请求的id为空,不允许修改。");
|
||||
rsp.setCode(ResponseCode.ERROR.getCode());
|
||||
rsp.setMessage("请求的id为空,不允许修改。");
|
||||
return convertJsonString(rsp);
|
||||
}
|
||||
// 删除数据
|
||||
if (kateOrderService.remove(new LambdaQueryWrapper<KateOrders>().eq(KateOrders::getOrderId, kateOrdersQuery.getOrderId()))) {
|
||||
// 返回成功
|
||||
logger.info("删除工单成功");
|
||||
rsp.setCode(ResponseCode.OK.getCode());
|
||||
rsp.setMessage("删除工单成功");
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -10,7 +10,6 @@ import com.wms.constants.enums.*;
|
|||
import com.wms.entity.app.*;
|
||||
import com.wms.entity.app.dto.PageDto;
|
||||
import com.wms.entity.app.dto.extend.StockDetailInfo;
|
||||
import com.wms.entity.app.dto.extend.TaskDetailInfo;
|
||||
import com.wms.entity.app.request.*;
|
||||
import com.wms.entity.app.vo.BoxPrintData;
|
||||
import com.wms.entity.app.vo.StandPickFinishVo;
|
||||
|
|
@ -363,7 +362,7 @@ public class TaskController {
|
|||
stockService.update(stock, new LambdaUpdateWrapper<Stock>().eq(Stock::getStockId, stock.getStockId()));
|
||||
});
|
||||
// 当前载具
|
||||
Vehicle currentVehicle = vehicleService.getOne(new LambdaQueryWrapper<Vehicle>().eq(Vehicle::getVehicleId, inTask.getVehicleId()));
|
||||
Vehicle currentVehicle = vehicleService.getOne(new LambdaQueryWrapper<Vehicle>().eq(Vehicle::getVehicleId, inTask.getVehicleId()).last("limit 1"));
|
||||
if (currentVehicle == null) {
|
||||
// 添加载具
|
||||
Vehicle newVehicle = new Vehicle();
|
||||
|
|
@ -448,6 +447,7 @@ public class TaskController {
|
|||
// 释放原来的库位
|
||||
locationService.update(new LambdaUpdateWrapper<Location>()
|
||||
.set(Location::getLocationStatus, LocationStatus.EMPTY.getCode())
|
||||
.set(Location::getVehicleId, "")
|
||||
.eq(Location::getLocationId, outTask.getOrigin()));
|
||||
}
|
||||
}
|
||||
|
|
@ -547,7 +547,7 @@ public class TaskController {
|
|||
response.setMessage("暂无可用库位!");
|
||||
return convertJsonString(response);
|
||||
} else {
|
||||
Location nextLocation = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, resultMap.get("nextLocationId")));
|
||||
Location nextLocation = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, resultMap.get("nextLocationId")).last("limit 1"));
|
||||
LambdaUpdateWrapper<Location> updateLocationWrapper = new LambdaUpdateWrapper<Location>()
|
||||
.set(Location::getLocationStatus, LocationStatus.OCCUPY.getCode())
|
||||
.set(Location::getVehicleId, wcsVehicleInRequest.getVehicleNo())
|
||||
|
|
@ -633,7 +633,7 @@ public class TaskController {
|
|||
response.setMessage("暂无可用库位!");
|
||||
return convertJsonString(response);
|
||||
} else {
|
||||
Location nextLocation = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, resultMap.get("nextLocationId")));
|
||||
Location nextLocation = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, resultMap.get("nextLocationId")).last("limit 1"));
|
||||
LambdaUpdateWrapper<Location> updateLocationWrapper = new LambdaUpdateWrapper<Location>()
|
||||
.set(Location::getLocationStatus, LocationStatus.OCCUPY.getCode())
|
||||
.set(Location::getVehicleId, duplicateLocationRequest.getVehicleId())
|
||||
|
|
@ -778,7 +778,8 @@ public class TaskController {
|
|||
// 查找到对应的拣选任务
|
||||
PickTask pickTask = pickTaskService.getOne(new LambdaQueryWrapper<PickTask>()
|
||||
.eq(PickTask::getVehicleId, boxArriveRequest.getVehicleNo())
|
||||
.eq(PickTask::getStandId, boxArriveRequest.getLocation()));
|
||||
.eq(PickTask::getStandId, boxArriveRequest.getLocation())
|
||||
.last("limit 1"));
|
||||
if (pickTask == null || StringUtils.isEmpty(pickTask.getPickTaskId())) {
|
||||
logger.error("拣选任务查询失败");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
|
|
@ -793,6 +794,12 @@ public class TaskController {
|
|||
standService.update(new LambdaUpdateWrapper<Stand>()
|
||||
.set(Stand::getPickVehicle, boxArriveRequest.getVehicleNo())
|
||||
.eq(Stand::getStandId, pickTask.getStandId()));
|
||||
// 重置当前站台非当前箱子的已完成拣选任务
|
||||
pickTaskService.update(new LambdaUpdateWrapper<PickTask>()
|
||||
.set(PickTask::getPickStatus, PickTaskStatusEnum.NEW.getCode())
|
||||
.ne(PickTask::getVehicleId, boxArriveRequest.getVehicleNo())
|
||||
.eq(PickTask::getStandId, boxArriveRequest.getLocation())
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode()));
|
||||
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("上报成功");
|
||||
|
|
@ -837,7 +844,8 @@ public class TaskController {
|
|||
// 站台号从ip获取
|
||||
Stand standOfIp = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
|
||||
.eq(Stand::getStandType, 2));
|
||||
.eq(Stand::getStandType, 2)
|
||||
.last("limit 1"));
|
||||
if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) {
|
||||
standId = standOfIp.getStandId();
|
||||
}
|
||||
|
|
@ -851,7 +859,8 @@ public class TaskController {
|
|||
// 根据站台号查找对应的载具号
|
||||
PickTask pickTask = pickTaskService.getOne(new LambdaQueryWrapper<PickTask>()
|
||||
.eq(PickTask::getStandId, standId)
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode()));
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode())
|
||||
.last("limit 1"));
|
||||
if (pickTask == null || StringUtils.isEmpty(pickTask.getVehicleId())) {
|
||||
logger.error("当前站台查不到正在拣选的箱子");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
|
|
@ -862,7 +871,8 @@ public class TaskController {
|
|||
// 查找库存信息
|
||||
Stock stock = stockService.getOne(new LambdaQueryWrapper<Stock>()
|
||||
.eq(Stock::getVehicleId, vehicleId)
|
||||
.apply("goods_related ->> '$.goodsId' = {0}", workQuery.getGoodsId()));
|
||||
.apply("goods_related ->> '$.goodsId' = {0}", workQuery.getGoodsId())
|
||||
.last("limit 1"));
|
||||
if (stock == null || StringUtils.isEmpty(stock.getStockId()) || stock.getGoodsRelated() == null) {
|
||||
logger.error("请求料号:{}与正在拣选的箱子:{}无对应关系", workQuery.getGoodsId(), vehicleId);
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
|
|
@ -899,7 +909,8 @@ public class TaskController {
|
|||
ELocationConfig eConfig = eLocationConfigService.getOne(new LambdaQueryWrapper<ELocationConfig>()
|
||||
.eq(ELocationConfig::getWorkStation, standId)
|
||||
.eq(ELocationConfig::getWorkOrder, tempWork.getWorkOrder())
|
||||
.eq(ELocationConfig::getWorkCenter, tempWork.getWorkCenter()));
|
||||
.eq(ELocationConfig::getWorkCenter, tempWork.getWorkCenter())
|
||||
.last("limit 1"));
|
||||
if (eConfig != null) {
|
||||
// 当次拣选数量
|
||||
BigDecimal thisPickNum = realNum.compareTo(tempWork.getNeedNum().subtract(tempWork.getPickedNum())) > 0 ? tempWork.getNeedNum().subtract(tempWork.getPickedNum()) : realNum;
|
||||
|
|
@ -1029,7 +1040,8 @@ public class TaskController {
|
|||
// 站台号从ip获取
|
||||
targetStand = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
|
||||
.eq(Stand::getStandType, 2));
|
||||
.eq(Stand::getStandType, 2)
|
||||
.last("limit 1"));
|
||||
}
|
||||
if (targetStand == null) {
|
||||
logger.error("查询拣选站台错误。");
|
||||
|
|
@ -1048,7 +1060,8 @@ public class TaskController {
|
|||
// 查询当前站台的拣货任务
|
||||
PickTask pickTask = pickTaskService.getOne(new LambdaQueryWrapper<PickTask>()
|
||||
.eq(PickTask::getStandId, targetStand.getStandId())
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode()));
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode())
|
||||
.last("limit 1"));
|
||||
if (pickTask == null) {
|
||||
// 返回成功
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
|
|
@ -1098,7 +1111,7 @@ public class TaskController {
|
|||
}
|
||||
if (eTaskFeedbackRequest.getTaskType() == 1) {// 拣选任务
|
||||
// 根据taskId查找对应的workFlow
|
||||
WorkFlow workFlow = workFlowService.getOne(new LambdaQueryWrapper<WorkFlow>().eq(WorkFlow::getWorkFlowId, eTaskFeedbackRequest.getTaskId()));
|
||||
WorkFlow workFlow = workFlowService.getOne(new LambdaQueryWrapper<WorkFlow>().eq(WorkFlow::getWorkFlowId, eTaskFeedbackRequest.getTaskId()).last("limit 1"));
|
||||
if (workFlow == null) {
|
||||
logger.error("反馈的任务号查找不到对应的工作信息。");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
|
|
@ -1145,7 +1158,8 @@ public class TaskController {
|
|||
// 更新库存数量
|
||||
Stock existStock = stockService.getOne(new LambdaQueryWrapper<Stock>()
|
||||
.apply("goods_related -> '$.goodsId' = {0}", workFlow.getGoodsId())
|
||||
.eq(Stock::getVehicleId, eTaskFeedbackRequest.getVehicleNo()));
|
||||
.eq(Stock::getVehicleId, eTaskFeedbackRequest.getVehicleNo())
|
||||
.last("limit 1"));
|
||||
if (existStock != null && existStock.getGoodsRelated() != null) {
|
||||
StockDetailInfo goodsDetail = existStock.getGoodsRelated();
|
||||
goodsDetail.setRemainNum(goodsDetail.getRemainNum().subtract(BigDecimal.valueOf(eTaskFeedbackRequest.getConfirmNum())));
|
||||
|
|
@ -1166,7 +1180,8 @@ public class TaskController {
|
|||
} else {// 小盒子放入大盒子
|
||||
// 根据location查询到对应的配置
|
||||
ELocationConfigLast eLocationConfigLast = eLocationConfigLastService.getOne(new LambdaQueryWrapper<ELocationConfigLast>()
|
||||
.eq(ELocationConfigLast::getELocationId, eTaskFeedbackRequest.getLocation()));
|
||||
.eq(ELocationConfigLast::getELocationId, eTaskFeedbackRequest.getLocation())
|
||||
.last("limit 1"));
|
||||
if (eLocationConfigLast != null) {
|
||||
// 设置状态为已取走
|
||||
eLocationConfigLast.setBoxStatus(2);
|
||||
|
|
@ -1207,7 +1222,8 @@ public class TaskController {
|
|||
// 站台号从ip获取
|
||||
Stand standOfIp = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
|
||||
.eq(Stand::getStandType, 2));
|
||||
.eq(Stand::getStandType, 2)
|
||||
.last("limit 1"));
|
||||
if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) {
|
||||
standId = standOfIp.getStandId();
|
||||
}
|
||||
|
|
@ -1218,6 +1234,12 @@ public class TaskController {
|
|||
response.setMessage("请求参数缺少站台号。");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
if (StringUtils.isEmpty(workConfirmRequest.getGoodsId())) {
|
||||
logger.error("请求参数缺少料号。");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("请求参数缺少料号。");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
// 判断当前站台是否还有亮灯数据
|
||||
if (etagLocationService.exists(new LambdaQueryWrapper<ETagLocation>()
|
||||
.eq(ETagLocation::getWorkStation, standId)
|
||||
|
|
@ -1230,7 +1252,8 @@ public class TaskController {
|
|||
// 查询当前站台的拣货任务
|
||||
PickTask pickTask = pickTaskService.getOne(new LambdaQueryWrapper<PickTask>()
|
||||
.eq(PickTask::getStandId, standId)
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode()));
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode())
|
||||
.last("limit 1"));
|
||||
if (pickTask == null) {
|
||||
// 没有拣货任务,直接放行
|
||||
// 调用Wcs的放行接口
|
||||
|
|
@ -1258,7 +1281,8 @@ public class TaskController {
|
|||
// 更新库存数量
|
||||
Stock existStock = stockService.getOne(new LambdaQueryWrapper<Stock>()
|
||||
.apply("goods_related -> '$.goodsId' = {0}", workConfirmRequest.getGoodsId())
|
||||
.eq(Stock::getVehicleId, pickTask.getVehicleId()));
|
||||
.eq(Stock::getVehicleId, pickTask.getVehicleId())
|
||||
.last("limit 1"));
|
||||
StockDetailInfo goodsRelated = existStock.getGoodsRelated();
|
||||
goodsRelated.setRemainNum(workConfirmRequest.getRemainNumReal());
|
||||
existStock.setGoodsRelated(goodsRelated);
|
||||
|
|
@ -1395,28 +1419,26 @@ public class TaskController {
|
|||
ResponseEntity response = new ResponseEntity();
|
||||
try {
|
||||
// 获取站台号
|
||||
String standId = "";
|
||||
Stand targetStand;
|
||||
if (StringUtils.isNotEmpty(wcsDisposeVehicleRequest.getLocation())) {
|
||||
// 站台号从请求参数中获取
|
||||
standId = wcsDisposeVehicleRequest.getLocation();
|
||||
targetStand = standService.getById(wcsDisposeVehicleRequest.getLocation());
|
||||
} else {
|
||||
// 站台号从ip获取
|
||||
Stand standOfIp = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
targetStand = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
|
||||
.eq(Stand::getStandType, 2));
|
||||
if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) {
|
||||
standId = standOfIp.getStandId();
|
||||
.eq(Stand::getStandType, 2)
|
||||
.last("limit 1"));
|
||||
}
|
||||
}
|
||||
if (StringUtils.isEmpty(standId)) {
|
||||
logger.error("请求参数缺少站台号。");
|
||||
if (targetStand == null) {
|
||||
logger.error("查询拣选站台错误。");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("请求参数缺少站台号。");
|
||||
response.setMessage("查询拣选站台错误。");
|
||||
return convertJsonString(response);
|
||||
}
|
||||
// 判断当前站台是否还有亮灯数据
|
||||
if (etagLocationService.exists(new LambdaQueryWrapper<ETagLocation>()
|
||||
.eq(ETagLocation::getWorkStation, standId)
|
||||
.eq(ETagLocation::getWorkStation, targetStand.getStandId())
|
||||
.eq(ETagLocation::getPickStatus, 1))) {
|
||||
logger.error("站台灯光未全部拍灭,请检查。");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
|
|
@ -1425,19 +1447,18 @@ public class TaskController {
|
|||
}
|
||||
// 查询当前站台的拣货任务
|
||||
PickTask pickTask = pickTaskService.getOne(new LambdaQueryWrapper<PickTask>()
|
||||
.eq(PickTask::getStandId, standId)
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode()));
|
||||
.eq(PickTask::getStandId, targetStand.getStandId())
|
||||
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode())
|
||||
.last("limit 1"));
|
||||
if (pickTask == null) {
|
||||
// 没有拣货任务,直接放行
|
||||
// 调用Wcs的放行接口
|
||||
// wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(standId, null));
|
||||
// 更新站台信息
|
||||
standService.update(new LambdaUpdateWrapper<Stand>()
|
||||
.set(Stand::getLastUseTime, LocalDateTime.now())
|
||||
.set(Stand::getPickVehicle, "")
|
||||
.set(Stand::getPickGoods, "")
|
||||
.set(Stand::getPickTip, "")
|
||||
.eq(Stand::getStandId, standId));
|
||||
.eq(Stand::getStandId, targetStand.getStandId()));
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("确认成功,放行");
|
||||
} else {
|
||||
|
|
@ -1447,6 +1468,10 @@ public class TaskController {
|
|||
List<String> goodsIdList = new ArrayList<>();
|
||||
if (outsideVehicles != null && !outsideVehicles.isEmpty()) {
|
||||
for (OutsideVehicles outsideVehicle : outsideVehicles) {
|
||||
if (Objects.equals(outsideVehicle.getGoodsId(), targetStand.getPickGoods())) {
|
||||
// 正在拣货的物料除外
|
||||
continue;
|
||||
}
|
||||
if (!goodsIdList.contains(outsideVehicle.getGoodsId())) {
|
||||
goodsIdList.add(outsideVehicle.getGoodsId());
|
||||
}
|
||||
|
|
@ -1455,14 +1480,14 @@ public class TaskController {
|
|||
if (goodsIdList.size() > 0) {
|
||||
// 判断这些物料是不是当前站台的工作流中是否需要
|
||||
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
|
||||
.eq(WorkFlow::getWorkStation, standId)
|
||||
.eq(WorkFlow::getWorkStation, targetStand.getStandId())
|
||||
.in(WorkFlow::getGoodsId, goodsIdList)
|
||||
.ne(WorkFlow::getWorkStatus, 2))) {
|
||||
// 更新站台信息
|
||||
standService.update(new LambdaUpdateWrapper<Stand>()
|
||||
.set(Stand::getPickGoods, "")
|
||||
.set(Stand::getPickTip, "当前料箱还有其他物料需要拣货")
|
||||
.eq(Stand::getStandId, standId));
|
||||
.eq(Stand::getStandId, targetStand.getStandId()));
|
||||
// 需要,不放行,返回前台提示信息
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("当前料箱还有其他物料需要拣货");
|
||||
|
|
@ -1474,17 +1499,17 @@ public class TaskController {
|
|||
// 删除当前拣选任务
|
||||
pickTaskService.removeById(pickTask);
|
||||
// 不需要,放行
|
||||
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(standId, pickTask.getVehicleId()));
|
||||
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(targetStand.getStandId(), pickTask.getVehicleId()));
|
||||
// 判断是不是已经完成工作
|
||||
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
|
||||
.eq(WorkFlow::getWorkStation, standId)
|
||||
.eq(WorkFlow::getWorkStation, targetStand.getStandId())
|
||||
.ne(WorkFlow::getWorkStatus, 2))) {
|
||||
standService.update(new LambdaUpdateWrapper<Stand>()
|
||||
.set(Stand::getLastUseTime, LocalDateTime.now())
|
||||
.set(Stand::getPickVehicle, "")
|
||||
.set(Stand::getPickGoods, "")
|
||||
.set(Stand::getPickTip, "")
|
||||
.eq(Stand::getStandId, standId));
|
||||
.eq(Stand::getStandId, targetStand.getStandId()));
|
||||
// 当前站台工作未全部完成
|
||||
response.setMessage("确认成功,放行");
|
||||
} else {
|
||||
|
|
@ -1493,7 +1518,7 @@ public class TaskController {
|
|||
.set(Stand::getPickVehicle, "")
|
||||
.set(Stand::getPickGoods, "")
|
||||
.set(Stand::getPickTip, "当前工作已经全部完成,请至完成界面进行后续工作。")
|
||||
.eq(Stand::getStandId, standId));
|
||||
.eq(Stand::getStandId, targetStand.getStandId()));
|
||||
// 当前站台工作已全部完成,需要提示工作完成,打印标签
|
||||
response.setMessage("当前工作已经全部完成,请至完成界面进行后续工作。");
|
||||
}
|
||||
|
|
@ -1507,10 +1532,10 @@ public class TaskController {
|
|||
// 删除当前拣选任务
|
||||
pickTaskService.removeById(pickTask);
|
||||
// 放行
|
||||
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(standId, pickTask.getVehicleId()));
|
||||
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(targetStand.getStandId(), pickTask.getVehicleId()));
|
||||
// 判断是不是已经完成工作
|
||||
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
|
||||
.eq(WorkFlow::getWorkStation, standId)
|
||||
.eq(WorkFlow::getWorkStation, targetStand.getStandId())
|
||||
.ne(WorkFlow::getWorkStatus, 2))) {
|
||||
// 当前站台工作未全部完成
|
||||
standService.update(new LambdaUpdateWrapper<Stand>()
|
||||
|
|
@ -1518,7 +1543,7 @@ public class TaskController {
|
|||
.set(Stand::getPickVehicle, "")
|
||||
.set(Stand::getPickGoods, "")
|
||||
.set(Stand::getPickTip, "")
|
||||
.eq(Stand::getStandId, standId));
|
||||
.eq(Stand::getStandId, targetStand.getStandId()));
|
||||
response.setMessage("确认成功,放行");
|
||||
} else {
|
||||
standService.update(new LambdaUpdateWrapper<Stand>()
|
||||
|
|
@ -1526,7 +1551,7 @@ public class TaskController {
|
|||
.set(Stand::getPickVehicle, "")
|
||||
.set(Stand::getPickGoods, "")
|
||||
.set(Stand::getPickTip, "当前工作已经全部完成,请至完成界面进行后续工作。")
|
||||
.eq(Stand::getStandId, standId));
|
||||
.eq(Stand::getStandId, targetStand.getStandId()));
|
||||
// 当前站台工作已全部完成,需要提示工作完成,打印标签
|
||||
response.setMessage("当前工作已经全部完成,请至完成界面进行后续工作。");
|
||||
}
|
||||
|
|
@ -1567,7 +1592,8 @@ public class TaskController {
|
|||
// 站台号从ip获取
|
||||
Stand standOfIp = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
|
||||
.eq(Stand::getStandType, 2));
|
||||
.eq(Stand::getStandType, 2)
|
||||
.last("limit 1"));
|
||||
if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) {
|
||||
standId = standOfIp.getStandId();
|
||||
}
|
||||
|
|
@ -1583,7 +1609,8 @@ public class TaskController {
|
|||
standPickFinishVo.setStandId(standId);
|
||||
try {
|
||||
// 获取当前站台已完成数量
|
||||
List<WorkFlow> allWorkFlows = workFlowService.list();
|
||||
List<WorkFlow> allWorkFlows = workFlowService.list(new LambdaQueryWrapper<WorkFlow>()
|
||||
.eq(WorkFlow::getWorkStation, standId));
|
||||
if (allWorkFlows == null || allWorkFlows.isEmpty()) {
|
||||
standPickFinishVo.setTip("当前站台没有工作");
|
||||
standPickFinishVo.setPlanRows(0);
|
||||
|
|
@ -1659,7 +1686,8 @@ public class TaskController {
|
|||
// 站台号从ip获取
|
||||
Stand standOfIp = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
|
||||
.eq(Stand::getStandType, 2));
|
||||
.eq(Stand::getStandType, 2)
|
||||
.last("limit 1"));
|
||||
if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) {
|
||||
standId = standOfIp.getStandId();
|
||||
}
|
||||
|
|
@ -1722,7 +1750,7 @@ public class TaskController {
|
|||
return convertJsonString(response);
|
||||
}
|
||||
// 查询物料是否是间接物料
|
||||
Goods goods = goodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, callEmptyVehicleRequest.getGoodsId()).eq(Goods::getGoodsInVehicleType, "间接物料"));
|
||||
Goods goods = goodsService.getOne(new LambdaQueryWrapper<Goods>().eq(Goods::getGoodsId, callEmptyVehicleRequest.getGoodsId()).eq(Goods::getGoodsInVehicleType, "间接物料").last("limit 1"));
|
||||
if (goods == null) {
|
||||
logger.error("当前物料不是间接物料");
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
|
|
@ -1846,7 +1874,7 @@ public class TaskController {
|
|||
response.setMessage("暂无可用库位!");
|
||||
return convertJsonString(response);
|
||||
} else {
|
||||
Location nextLocation = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, resultMap.get("nextLocationId")));
|
||||
Location nextLocation = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getLocationId, resultMap.get("nextLocationId")).last("limit 1"));
|
||||
LambdaUpdateWrapper<Location> updateLocationWrapper = new LambdaUpdateWrapper<Location>()
|
||||
.set(Location::getLocationStatus, LocationStatus.OCCUPY.getCode())
|
||||
.set(Location::getVehicleId, requestBackQuery.getVehicleId())
|
||||
|
|
@ -1898,10 +1926,12 @@ public class TaskController {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
response.setCode(ResponseCode.OK.getCode());
|
||||
response.setMessage("可以回库。");
|
||||
} else {
|
||||
response.setCode(ResponseCode.ERROR.getCode());
|
||||
response.setMessage("不可以回库。");
|
||||
}
|
||||
return convertJsonString(response);
|
||||
} catch (Exception e) {
|
||||
// 回滚事务
|
||||
|
|
@ -1936,7 +1966,8 @@ public class TaskController {
|
|||
// 站台号从ip获取
|
||||
Stand standOfIp = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
|
||||
.eq(Stand::getStandType, 2));
|
||||
.eq(Stand::getStandType, 2)
|
||||
.last("limit 1"));
|
||||
if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) {
|
||||
standId = standOfIp.getStandId();
|
||||
}
|
||||
|
|
@ -1961,7 +1992,8 @@ public class TaskController {
|
|||
BoxPrintData boxPrintData = new BoxPrintData();
|
||||
// 查找电子标签库位
|
||||
ETagLocation eTagLocation = etagLocationService.getOne(new LambdaQueryWrapper<ETagLocation>()
|
||||
.eq(ETagLocation::getELocationId, eLocationConfig.getELocationId()));
|
||||
.eq(ETagLocation::getELocationId, eLocationConfig.getELocationId())
|
||||
.last("limit 1"));
|
||||
// 获取工作流信息
|
||||
List<WorkFlow> workFlows = workFlowService.list(new LambdaQueryWrapper<WorkFlow>()
|
||||
.eq(WorkFlow::getWorkOrder, eLocationConfig.getWorkOrder())
|
||||
|
|
@ -1969,7 +2001,8 @@ public class TaskController {
|
|||
.eq(WorkFlow::getWorkStation, eLocationConfig.getWorkStation()));
|
||||
// 查询DBS
|
||||
KateDBS kateDBS = kateDBSService.getOne(new LambdaQueryWrapper<KateDBS>()
|
||||
.eq(KateDBS::getWorkOrder, eLocationConfig.getWorkOrder()));
|
||||
.eq(KateDBS::getWorkOrder, eLocationConfig.getWorkOrder())
|
||||
.last("limit 1"));
|
||||
if (eTagLocation == null || workFlows == null || workFlows.isEmpty() || kateDBS == null) {
|
||||
// 存在数据异常,跳过
|
||||
continue;
|
||||
|
|
@ -2029,7 +2062,8 @@ public class TaskController {
|
|||
// 站台号从ip获取
|
||||
Stand standOfIp = standService.getOne(new LambdaQueryWrapper<Stand>()
|
||||
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
|
||||
.eq(Stand::getStandType, 2));
|
||||
.eq(Stand::getStandType, 2)
|
||||
.last("limit 1"));
|
||||
if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) {
|
||||
standId = standOfIp.getStandId();
|
||||
}
|
||||
|
|
@ -2074,7 +2108,8 @@ public class TaskController {
|
|||
ELocationConfigLast eConfigLast = eLocationConfigLastService.getOne(new LambdaQueryWrapper<ELocationConfigLast>()
|
||||
.eq(ELocationConfigLast::getWorkStation, standId)
|
||||
.eq(ELocationConfigLast::getWorkCenter, smallBox)
|
||||
.eq(ELocationConfigLast::getBoxStatus, 0));
|
||||
.eq(ELocationConfigLast::getBoxStatus, 0)
|
||||
.last("limit 1"));
|
||||
if (eConfigLast != null) {
|
||||
// 当次拣选数量
|
||||
ETaskData eTaskData = new ETaskData();
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
package com.wms.entity.app.dto;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.wms.entity.app.dto.extend.KanbanEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 物料
|
||||
|
|
@ -17,29 +17,87 @@ public class GoodsDto {
|
|||
*/
|
||||
private String goodsId;
|
||||
/**
|
||||
* 物料名称
|
||||
* 物料名称/描述
|
||||
*/
|
||||
private String goodsName;
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String goodsUnit;
|
||||
/**
|
||||
* 物料ID
|
||||
*/
|
||||
private String itemId;
|
||||
/**
|
||||
* 物料分类
|
||||
*/
|
||||
private String goodsType;
|
||||
/**
|
||||
* 有效天数
|
||||
* 供应商分类
|
||||
*/
|
||||
private Integer lifeDays;
|
||||
private String providerType;
|
||||
/**
|
||||
* 仓储分类
|
||||
* 重量
|
||||
*/
|
||||
private String invCategory;
|
||||
private BigDecimal weight;
|
||||
/**
|
||||
* 重量单位
|
||||
*/
|
||||
private String weightUnit;
|
||||
/**
|
||||
* 每盒数量
|
||||
*/
|
||||
private BigDecimal quantityPerBox;
|
||||
/**
|
||||
* 拆包方式
|
||||
*/
|
||||
private String unpackingType;
|
||||
/**
|
||||
* 载具类型
|
||||
*/
|
||||
private String vehicleType;
|
||||
/**
|
||||
* 载具类型描述
|
||||
*/
|
||||
private String vehicleTypeDescription;
|
||||
/**
|
||||
* 物料载具类型
|
||||
*/
|
||||
private String goodsInVehicleType;
|
||||
/**
|
||||
* 补料方式
|
||||
* PULL:有看板
|
||||
* PUSH:无看板
|
||||
*/
|
||||
private String feedingType;
|
||||
/**
|
||||
* 每个看板包含物料数量
|
||||
*/
|
||||
private BigDecimal quantityPerKanban;
|
||||
/**
|
||||
* 看板的数量
|
||||
*/
|
||||
private BigDecimal kanbanNum;
|
||||
/**
|
||||
* 看板详细信息
|
||||
*/
|
||||
private List<KanbanEntity> kanbanList;
|
||||
/**
|
||||
* 补货点
|
||||
*/
|
||||
private BigDecimal feedingValue;
|
||||
/**
|
||||
* 备注1
|
||||
*/
|
||||
private String remark1;
|
||||
/**
|
||||
* 备注2
|
||||
*/
|
||||
private String remark2;
|
||||
/**
|
||||
* 备注3
|
||||
*/
|
||||
private String remark3;
|
||||
/**
|
||||
* 数据来源
|
||||
*/
|
||||
private String dataSource;
|
||||
/**
|
||||
* 最后更新日期
|
||||
*/
|
||||
|
|
|
|||
49
src/main/java/com/wms/entity/app/request/DbsQuery.java
Normal file
49
src/main/java/com/wms/entity/app/request/DbsQuery.java
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
package com.wms.entity.app.request;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class DbsQuery extends PageQuery {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@JsonProperty("dbsId")
|
||||
private String dbsId;
|
||||
/**
|
||||
* 顺序号
|
||||
*/
|
||||
@JsonProperty("workSequence")
|
||||
private Integer workSequence;
|
||||
/**
|
||||
* 工单
|
||||
*/
|
||||
@JsonProperty("workOrder")
|
||||
private String workOrder;
|
||||
/**
|
||||
* 机器序列号
|
||||
*/
|
||||
@JsonProperty("machineNo")
|
||||
private String machineNo;
|
||||
/**
|
||||
* 计划开工日期
|
||||
*/
|
||||
@JsonProperty("planStartDate")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime planStartDate;
|
||||
/**
|
||||
* dbs的状态
|
||||
* 0:未开始
|
||||
* 1:已开始未完成
|
||||
* 2:已完成
|
||||
*/
|
||||
@JsonProperty("dbsStatus")
|
||||
private Integer dbsStatus;
|
||||
}
|
||||
|
|
@ -1,9 +1,17 @@
|
|||
package com.wms.entity.app.request;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms.entity.app.dto.extend.KanbanEntity;
|
||||
import com.wms.entity.table.Goods;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 物料查询请求
|
||||
|
|
@ -17,10 +25,119 @@ public class GoodsQuery extends PageQuery {
|
|||
@JsonProperty("goodsId")
|
||||
private String goodsId;
|
||||
/**
|
||||
* 物料名称
|
||||
* 物料名称/描述
|
||||
*/
|
||||
@JsonProperty("goodsName")
|
||||
private String goodsName;
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
@JsonProperty("goodsUnit")
|
||||
private String goodsUnit;
|
||||
/**
|
||||
* 物料分类
|
||||
*/
|
||||
@JsonProperty("goodsType")
|
||||
private String goodsType;
|
||||
/**
|
||||
* 供应商分类
|
||||
*/
|
||||
@JsonProperty("providerType")
|
||||
private String providerType;
|
||||
/**
|
||||
* 重量
|
||||
*/
|
||||
@JsonProperty("weight")
|
||||
private BigDecimal weight;
|
||||
/**
|
||||
* 重量单位
|
||||
*/
|
||||
@JsonProperty("weightUnit")
|
||||
private String weightUnit;
|
||||
/**
|
||||
* 每盒数量
|
||||
*/
|
||||
@JsonProperty("quantityPerBox")
|
||||
private BigDecimal quantityPerBox;
|
||||
/**
|
||||
* 拆包方式
|
||||
*/
|
||||
@JsonProperty("unpackingType")
|
||||
private String unpackingType;
|
||||
/**
|
||||
* 载具类型
|
||||
*/
|
||||
@JsonProperty("vehicleType")
|
||||
private String vehicleType;
|
||||
/**
|
||||
* 载具类型描述
|
||||
*/
|
||||
@JsonProperty("vehicleTypeDescription")
|
||||
private String vehicleTypeDescription;
|
||||
/**
|
||||
* 物料载具类型
|
||||
*/
|
||||
@JsonProperty("goodsInVehicleType")
|
||||
private String goodsInVehicleType;
|
||||
/**
|
||||
* 补料方式
|
||||
* PULL:有看板
|
||||
* PUSH:无看板
|
||||
*/
|
||||
@JsonProperty("feedingType")
|
||||
private String feedingType;
|
||||
/**
|
||||
* 每个看板包含物料数量
|
||||
*/
|
||||
@JsonProperty("quantityPerKanban")
|
||||
private BigDecimal quantityPerKanban;
|
||||
/**
|
||||
* 看板的数量
|
||||
*/
|
||||
@JsonProperty("kanbanNum")
|
||||
private BigDecimal kanbanNum;
|
||||
/**
|
||||
* 看板详细信息
|
||||
*/
|
||||
@JsonProperty("kanbanList")
|
||||
private List<KanbanEntity> kanbanList;
|
||||
/**
|
||||
* 补货点
|
||||
*/
|
||||
@JsonProperty("feedingValue")
|
||||
private BigDecimal feedingValue;
|
||||
/**
|
||||
* 备注1
|
||||
*/
|
||||
@JsonProperty("remark1")
|
||||
private String remark1;
|
||||
/**
|
||||
* 备注2
|
||||
*/
|
||||
@JsonProperty("remark2")
|
||||
private String remark2;
|
||||
/**
|
||||
* 备注3
|
||||
*/
|
||||
@JsonProperty("remark3")
|
||||
private String remark3;
|
||||
/**
|
||||
* 数据来源
|
||||
*/
|
||||
@JsonProperty("dataSource")
|
||||
private String dataSource;
|
||||
/**
|
||||
* 最后更新日期
|
||||
*/
|
||||
@JsonProperty("lastUpdateTime")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime lastUpdateTime;
|
||||
/**
|
||||
* 最后更新用户
|
||||
*/
|
||||
@JsonProperty("lastUpdateUser")
|
||||
private String lastUpdateUser;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -28,10 +145,6 @@ public class GoodsQuery extends PageQuery {
|
|||
* @return goodsPO
|
||||
*/
|
||||
public Goods toGoodsPO() {
|
||||
Goods goodsPO = new Goods();
|
||||
goodsPO.setGoodsId(goodsId);// 物料编号
|
||||
goodsPO.setGoodsName(goodsName);// 物料描述
|
||||
|
||||
return goodsPO;
|
||||
return BeanUtil.copyProperties(this, Goods.class);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
107
src/main/java/com/wms/entity/app/request/KateOrdersQuery.java
Normal file
107
src/main/java/com/wms/entity/app/request/KateOrdersQuery.java
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
package com.wms.entity.app.request;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class KateOrdersQuery extends PageQuery {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@JsonProperty("orderId")
|
||||
private String orderId;
|
||||
/**
|
||||
* Order
|
||||
*/
|
||||
@JsonProperty("workOrder")
|
||||
private String workOrder;
|
||||
/**
|
||||
* Material
|
||||
*/
|
||||
@JsonProperty("goodsId")
|
||||
private String goodsId;
|
||||
/**
|
||||
* Item
|
||||
*/
|
||||
@JsonProperty("item")
|
||||
private String item;
|
||||
/**
|
||||
* Description
|
||||
*/
|
||||
@JsonProperty("description")
|
||||
private String description;
|
||||
/**
|
||||
* SLoc
|
||||
*/
|
||||
@JsonProperty("sLoc")
|
||||
private String sLoc;
|
||||
/**
|
||||
* Type
|
||||
*/
|
||||
@JsonProperty("type")
|
||||
private String type;
|
||||
/**
|
||||
* Status
|
||||
*/
|
||||
@JsonProperty("originStatus")
|
||||
private String originStatus;
|
||||
/**
|
||||
* SupplyArea
|
||||
*/
|
||||
@JsonProperty("supplyArea")
|
||||
private String supplyArea;
|
||||
/**
|
||||
* SortStrng
|
||||
*/
|
||||
@JsonProperty("sortString")
|
||||
private String sortString;
|
||||
/**
|
||||
* Requirement Qty
|
||||
*/
|
||||
@JsonProperty("requirementQuantity")
|
||||
private BigDecimal requirementQuantity;
|
||||
/**
|
||||
* BUn
|
||||
*/
|
||||
@JsonProperty("goodsUnit")
|
||||
private String goodsUnit;
|
||||
/**
|
||||
* 工单状态
|
||||
* 0:未开始
|
||||
* 1:已生成任务
|
||||
* 2:已呼叫料箱
|
||||
* 3:正在拣选
|
||||
* 4:拣选完成
|
||||
*/
|
||||
@JsonProperty("orderStatus")
|
||||
private Integer orderStatus;
|
||||
/**
|
||||
* 缺少数量
|
||||
*/
|
||||
@JsonProperty("lackQuantity")
|
||||
private BigDecimal lackQuantity;
|
||||
/**
|
||||
* 实际拣选数量
|
||||
*/
|
||||
@JsonProperty("pickedQuantity")
|
||||
private BigDecimal pickedQuantity;
|
||||
/**
|
||||
* 操作人员
|
||||
*/
|
||||
@JsonProperty("userName")
|
||||
private String userName;
|
||||
/**
|
||||
* 完成时间
|
||||
*/
|
||||
@JsonProperty("finishTime")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime finishTime;
|
||||
}
|
||||
|
|
@ -1,12 +1,14 @@
|
|||
package com.wms.entity.app.request;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms.entity.table.User;
|
||||
import com.wms.utils.MyPassword;
|
||||
import com.wms.utils.StringUtils;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
|
|
@ -33,9 +35,13 @@ public class UserQuery extends PageQuery{
|
|||
private String loginPassword;
|
||||
/** 添加时间 */
|
||||
@JsonProperty("addTime")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime addTime;
|
||||
/** 更新时间 */
|
||||
@JsonProperty("updateTime")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime updateTime;
|
||||
/** 添加用户名 */
|
||||
@JsonProperty("addUser")
|
||||
|
|
|
|||
62
src/main/java/com/wms/entity/app/vo/DbsVo.java
Normal file
62
src/main/java/com/wms/entity/app/vo/DbsVo.java
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
package com.wms.entity.app.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* DbsVo
|
||||
*/
|
||||
@Data
|
||||
public class DbsVo {
|
||||
/**
|
||||
* DBS计划Id
|
||||
*/
|
||||
@JsonProperty("dbsId")
|
||||
private String dbsId;
|
||||
/**
|
||||
* 顺序号
|
||||
*/
|
||||
@JsonProperty("workSequence")
|
||||
private Integer workSequence;
|
||||
/**
|
||||
* 机器序列号
|
||||
*/
|
||||
@JsonProperty("machineNo")
|
||||
private String machineNo;
|
||||
/**
|
||||
* 工单
|
||||
*/
|
||||
@JsonProperty("workOrder")
|
||||
private String workOrder;
|
||||
/**
|
||||
* 计划开工日期
|
||||
*/
|
||||
@JsonProperty("planStartDate")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDateTime planStartDate;
|
||||
/**
|
||||
* dbs的状态
|
||||
* 0:未开始
|
||||
* 1:已开始未完成
|
||||
* 2:已完成
|
||||
*/
|
||||
@JsonProperty("dbsStatus")
|
||||
private Integer dbsStatus;
|
||||
/**
|
||||
* 最近更新时间
|
||||
*/
|
||||
@JsonProperty("lastUpdateTime")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime lastUpdateTime;
|
||||
/**
|
||||
* 最近更新用户
|
||||
*/
|
||||
@JsonProperty("lastUpdateUser")
|
||||
private String lastUpdateUser;
|
||||
}
|
||||
|
|
@ -1,45 +1,134 @@
|
|||
package com.wms.entity.app.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.wms.entity.app.dto.extend.KanbanEntity;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class GoodsVo {
|
||||
/**
|
||||
* 物料编号
|
||||
*/
|
||||
@JsonProperty("goodsId")
|
||||
private String goodsId;
|
||||
/**
|
||||
* 物料名称
|
||||
* 物料名称/描述
|
||||
*/
|
||||
@JsonProperty("goodsName")
|
||||
private String goodsName;
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
@JsonProperty("goodsUnit")
|
||||
private String goodsUnit;
|
||||
/**
|
||||
* 物料ID
|
||||
*/
|
||||
private String itemId;
|
||||
/**
|
||||
* 物料分类
|
||||
*/
|
||||
@JsonProperty("goodsType")
|
||||
private String goodsType;
|
||||
/**
|
||||
* 有效天数
|
||||
* 供应商分类
|
||||
*/
|
||||
private Integer lifeDays;
|
||||
@JsonProperty("providerType")
|
||||
private String providerType;
|
||||
/**
|
||||
* 仓储分类
|
||||
* 重量
|
||||
*/
|
||||
private String invCategory;
|
||||
@JsonProperty("weight")
|
||||
private BigDecimal weight;
|
||||
/**
|
||||
* 重量单位
|
||||
*/
|
||||
@JsonProperty("weightUnit")
|
||||
private String weightUnit;
|
||||
/**
|
||||
* 每盒数量
|
||||
*/
|
||||
@JsonProperty("quantityPerBox")
|
||||
private BigDecimal quantityPerBox;
|
||||
/**
|
||||
* 拆包方式
|
||||
*/
|
||||
@JsonProperty("unpackingType")
|
||||
private String unpackingType;
|
||||
/**
|
||||
* 载具类型
|
||||
*/
|
||||
@JsonProperty("vehicleType")
|
||||
private String vehicleType;
|
||||
/**
|
||||
* 载具类型描述
|
||||
*/
|
||||
@JsonProperty("vehicleTypeDescription")
|
||||
private String vehicleTypeDescription;
|
||||
/**
|
||||
* 物料载具类型
|
||||
*/
|
||||
@JsonProperty("goodsInVehicleType")
|
||||
private String goodsInVehicleType;
|
||||
/**
|
||||
* 补料方式
|
||||
* PULL:有看板
|
||||
* PUSH:无看板
|
||||
*/
|
||||
@JsonProperty("feedingType")
|
||||
private String feedingType;
|
||||
/**
|
||||
* 每个看板包含物料数量
|
||||
*/
|
||||
@JsonProperty("quantityPerKanban")
|
||||
private BigDecimal quantityPerKanban;
|
||||
/**
|
||||
* 看板的数量
|
||||
*/
|
||||
@JsonProperty("kanbanNum")
|
||||
private BigDecimal kanbanNum;
|
||||
/**
|
||||
* 看板详细信息
|
||||
*/
|
||||
@JsonProperty("kanbanList")
|
||||
private List<KanbanEntity> kanbanList;
|
||||
/**
|
||||
* 补货点
|
||||
*/
|
||||
@JsonProperty("feedingValue")
|
||||
private BigDecimal feedingValue;
|
||||
/**
|
||||
* 备注1
|
||||
*/
|
||||
@JsonProperty("remark1")
|
||||
private String remark1;
|
||||
/**
|
||||
* 备注2
|
||||
*/
|
||||
@JsonProperty("remark2")
|
||||
private String remark2;
|
||||
/**
|
||||
* 备注3
|
||||
*/
|
||||
@JsonProperty("remark3")
|
||||
private String remark3;
|
||||
/**
|
||||
* 数据来源
|
||||
*/
|
||||
@JsonProperty("dataSource")
|
||||
private String dataSource;
|
||||
/**
|
||||
* 最后更新日期
|
||||
*/
|
||||
private Date lastUpdateTime;
|
||||
@JsonProperty("lastUpdateTime")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime lastUpdateTime;
|
||||
/**
|
||||
* 最后更新用户
|
||||
*/
|
||||
@JsonProperty("lastUpdateUser")
|
||||
private String lastUpdateUser;
|
||||
}
|
||||
|
|
|
|||
108
src/main/java/com/wms/entity/app/vo/KateOrdersVo.java
Normal file
108
src/main/java/com/wms/entity/app/vo/KateOrdersVo.java
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
package com.wms.entity.app.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* DbsVo
|
||||
*/
|
||||
@Data
|
||||
public class KateOrdersVo {
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@JsonProperty("orderId")
|
||||
private String orderId;
|
||||
/**
|
||||
* Order
|
||||
*/
|
||||
@JsonProperty("workOrder")
|
||||
private String workOrder;
|
||||
/**
|
||||
* Material
|
||||
*/
|
||||
@JsonProperty("goodsId")
|
||||
private String goodsId;
|
||||
/**
|
||||
* Item
|
||||
*/
|
||||
@JsonProperty("item")
|
||||
private String item;
|
||||
/**
|
||||
* Description
|
||||
*/
|
||||
@JsonProperty("description")
|
||||
private String description;
|
||||
/**
|
||||
* SLoc
|
||||
*/
|
||||
@JsonProperty("sLoc")
|
||||
private String sLoc;
|
||||
/**
|
||||
* Type
|
||||
*/
|
||||
@JsonProperty("type")
|
||||
private String type;
|
||||
/**
|
||||
* Status
|
||||
*/
|
||||
@JsonProperty("originStatus")
|
||||
private String originStatus;
|
||||
/**
|
||||
* SupplyArea
|
||||
*/
|
||||
@JsonProperty("supplyArea")
|
||||
private String supplyArea;
|
||||
/**
|
||||
* SortStrng
|
||||
*/
|
||||
@JsonProperty("sortString")
|
||||
private String sortString;
|
||||
/**
|
||||
* Requirement Qty
|
||||
*/
|
||||
@JsonProperty("requirementQuantity")
|
||||
private BigDecimal requirementQuantity;
|
||||
/**
|
||||
* BUn
|
||||
*/
|
||||
@JsonProperty("goodsUnit")
|
||||
private String goodsUnit;
|
||||
/**
|
||||
* 工单状态
|
||||
* 0:未开始
|
||||
* 1:已生成任务
|
||||
* 2:已呼叫料箱
|
||||
* 3:正在拣选
|
||||
* 4:拣选完成
|
||||
*/
|
||||
@JsonProperty("orderStatus")
|
||||
private Integer orderStatus;
|
||||
/**
|
||||
* 缺少数量
|
||||
*/
|
||||
@JsonProperty("lackQuantity")
|
||||
private BigDecimal lackQuantity;
|
||||
/**
|
||||
* 实际拣选数量
|
||||
*/
|
||||
@JsonProperty("pickedQuantity")
|
||||
private BigDecimal pickedQuantity;
|
||||
/**
|
||||
* 操作人员
|
||||
*/
|
||||
@JsonProperty("userName")
|
||||
private String userName;
|
||||
/**
|
||||
* 完成时间
|
||||
*/
|
||||
@JsonProperty("finishTime")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
private LocalDateTime finishTime;
|
||||
}
|
||||
|
|
@ -67,7 +67,7 @@ public class UploadRecord {
|
|||
uploadRecord.setFileName(fileVo.getName());
|
||||
uploadRecord.setUploadTime(LocalDateTime.now());
|
||||
uploadRecord.setUploadUser(fileVo.getUserName());
|
||||
uploadRecord.setFileDescription("fileDescription");
|
||||
uploadRecord.setFileDescription(fileDescription);
|
||||
return uploadRecord;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -280,7 +280,7 @@ public class ValidateServiceImplements implements IValidateService {
|
|||
@Override
|
||||
public String validateGetWorkVoRequest(WorkQuery workQuery) {
|
||||
if (workQuery == null || StringUtils.isEmpty(workQuery.getGoodsId())) {
|
||||
return "请求参数补全,料号必须可少";
|
||||
return "请求参数不完整,料号必须可少";
|
||||
}
|
||||
|
||||
return "";
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ import com.wms.service.business.IWorkService;
|
|||
import com.wms.utils.StringUtils;
|
||||
import com.wms.utils.WmsUtils;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
|
@ -19,6 +21,7 @@ import java.time.LocalDateTime;
|
|||
import java.util.*;
|
||||
|
||||
import static com.wms.config.InitLocalConfig.configMap;
|
||||
import static com.wms.utils.StringUtils.convertJsonString;
|
||||
|
||||
/**
|
||||
* 工作服务接口的实现
|
||||
|
|
@ -26,6 +29,7 @@ import static com.wms.config.InitLocalConfig.configMap;
|
|||
@Service
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class WorkServiceImplements implements IWorkService {
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
private final WorkStationConfigService workStationConfigService;// 工作站配置服务
|
||||
private final WorkFlowService workFlowService;// 工作流服务
|
||||
private final KateDBSService kateDBSService;// DBS服务
|
||||
|
|
@ -64,11 +68,11 @@ public class WorkServiceImplements implements IWorkService {
|
|||
}
|
||||
// 当前站台分配的工位
|
||||
List<WorkFlow> currentStationWorkFlows = new ArrayList<>();
|
||||
// 先找NWL机型
|
||||
findWorks(workStation, currentStationWorkFlows, "NWL");
|
||||
// 先找MWL机型
|
||||
findWorks(workStation, currentStationWorkFlows, "MWL");
|
||||
if (currentStationWorkFlows.isEmpty()) {
|
||||
// 找非NWL机型
|
||||
findWorks(workStation, currentStationWorkFlows, "NOT_NWL");
|
||||
// 找非MWL机型
|
||||
findWorks(workStation, currentStationWorkFlows, "NOT_MWL");
|
||||
}
|
||||
// 如果当前站台有任务
|
||||
if (!currentStationWorkFlows.isEmpty()) {
|
||||
|
|
@ -152,6 +156,7 @@ public class WorkServiceImplements implements IWorkService {
|
|||
eLocationConfigService.saveBatch(eLocationConfigList);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error("创建站台:{}工作发生异常:{}", workStation, convertJsonString(e));
|
||||
throw new Exception("创建站台:" + workStation + "工作发生异常!");
|
||||
} finally {
|
||||
// 当前站台创建任务完成
|
||||
|
|
@ -216,6 +221,7 @@ public class WorkServiceImplements implements IWorkService {
|
|||
.in(KateOrders::getOrderId, orderIds)
|
||||
.eq(KateOrders::getOrderStatus, 1));
|
||||
} catch (Exception e) {
|
||||
logger.error("执行站台:{}工作发生异常:{}", workStation, convertJsonString(e));
|
||||
throw new Exception("执行站台:" + workStation + "工作发生异常!");
|
||||
} finally {
|
||||
// 当前站台创建任务完成
|
||||
|
|
@ -305,6 +311,7 @@ public class WorkServiceImplements implements IWorkService {
|
|||
goodsToStationService.remove(new LambdaQueryWrapper<GoodsToStation>()
|
||||
.eq(GoodsToStation::getWorkStation, workStation));
|
||||
} catch (Exception e) {
|
||||
logger.error("完成站台:{}工作发生异常:{}", workStation, convertJsonString(e));
|
||||
throw new Exception("完成站台:" + workStation + "工作发生异常!");
|
||||
} finally {
|
||||
// 当前站台工作完成
|
||||
|
|
@ -324,8 +331,8 @@ public class WorkServiceImplements implements IWorkService {
|
|||
// 查到当前站台所有的小工位
|
||||
List<WorkStationConfig> currentStationConfigsOfNwl = workStationConfigService.list(new LambdaQueryWrapper<WorkStationConfig>()
|
||||
.eq(WorkStationConfig::getWorkStation, workStation)
|
||||
.eq(Objects.equals(model, "NWL"), WorkStationConfig::getModel, model)
|
||||
.ne(!Objects.equals(model, "NWL"), WorkStationConfig::getModel, "NWL"));
|
||||
.eq(Objects.equals(model, "MWL"), WorkStationConfig::getModel, model)
|
||||
.ne(!Objects.equals(model, "MWL"), WorkStationConfig::getModel, "MWL"));
|
||||
// 当前站台未分配库位
|
||||
if (currentStationConfigsOfNwl == null || currentStationConfigsOfNwl.isEmpty()) {
|
||||
return;
|
||||
|
|
@ -344,7 +351,7 @@ public class WorkServiceImplements implements IWorkService {
|
|||
List<KateOrders> kateWorkOrders = kateOrdersService.list(new LambdaQueryWrapper<KateOrders>()
|
||||
.eq(KateOrders::getSupplyArea, workConfig.getSmallBox())
|
||||
.eq(KateOrders::getOrderStatus, 0)
|
||||
.eq(KateOrders::getSLoc, configMap.get(ConfigMapKeyEnum.SLOC_FILTER_STRING.getConfigKey())));
|
||||
.eq(KateOrders::getSortString, configMap.get(ConfigMapKeyEnum.SLOC_FILTER_STRING.getConfigKey())));
|
||||
// 当前工位没有未完成的工单
|
||||
if (kateWorkOrders == null || kateWorkOrders.isEmpty()) {
|
||||
continue;
|
||||
|
|
@ -386,7 +393,7 @@ public class WorkServiceImplements implements IWorkService {
|
|||
.eq(KateOrders::getWorkOrder, currentWorkCenterAndOrderDto.getWorkOrder())
|
||||
.eq(KateOrders::getSupplyArea, currentWorkCenterAndOrderDto.getWorkCenter())
|
||||
.eq(KateOrders::getOrderStatus, 0)
|
||||
.eq(KateOrders::getSLoc, configMap.get(ConfigMapKeyEnum.SLOC_FILTER_STRING.getConfigKey())));
|
||||
.eq(KateOrders::getSortString, configMap.get(ConfigMapKeyEnum.SLOC_FILTER_STRING.getConfigKey())));
|
||||
for (KateOrders tempOrder : kateWorkOrderList) {
|
||||
// 生成workFlow
|
||||
WorkFlow tempWorkFlow = new WorkFlow();
|
||||
|
|
|
|||
|
|
@ -5,13 +5,10 @@ import com.alibaba.excel.read.listener.ReadListener;
|
|||
import com.alibaba.excel.util.ListUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.wms.constants.enums.ConfigMapKeyEnum;
|
||||
import com.wms.entity.app.dto.extend.StockDetailInfo;
|
||||
import com.wms.entity.table.*;
|
||||
import com.wms.service.*;
|
||||
import com.wms.utils.StringUtils;
|
||||
import com.wms.utils.excel.vo.KateDbsExcelVo;
|
||||
import com.wms.utils.excel.vo.KateOrdersExcelVo;
|
||||
import com.wms.utils.excel.vo.StockExcelVo;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
|
@ -62,11 +59,11 @@ public class UploadKateOrdersListener implements ReadListener<KateOrdersExcelVo>
|
|||
@Override
|
||||
public void invoke(KateOrdersExcelVo kateOrdersExcelVo, AnalysisContext analysisContext) {
|
||||
String slocFilterString = configMap.get(ConfigMapKeyEnum.SLOC_FILTER_STRING.getConfigKey());
|
||||
if (StringUtils.isNotEmpty(slocFilterString) && Objects.equals(kateOrdersExcelVo.getSLoc(), slocFilterString)) {
|
||||
if (StringUtils.isNotEmpty(slocFilterString) && Objects.equals(kateOrdersExcelVo.getSortString(), slocFilterString)) {
|
||||
// 符合筛选字符串
|
||||
if (StringUtils.isNotEmpty(kateOrdersExcelVo.getWorkOrder())
|
||||
&& StringUtils.isNotEmpty(kateOrdersExcelVo.getGoodsId())
|
||||
&& StringUtils.isNotEmpty(kateOrdersExcelVo.getSLoc())
|
||||
&& StringUtils.isNotEmpty(kateOrdersExcelVo.getSortString())
|
||||
&& StringUtils.isNotEmpty(kateOrdersExcelVo.getSupplyArea())
|
||||
&& kateOrdersExcelVo.getRequirementQuantity() != null) {
|
||||
// 符合条件
|
||||
|
|
@ -99,17 +96,44 @@ public class UploadKateOrdersListener implements ReadListener<KateOrdersExcelVo>
|
|||
private void saveData() {
|
||||
List<KateOrders> kateOrdersList = new ArrayList<>();
|
||||
for (KateOrdersExcelVo kateOrdersExcelVo : cachedDataList) {
|
||||
if (kateOrdersService.exists(new LambdaQueryWrapper<KateOrders>()
|
||||
// 查看当前List中是否有该工单
|
||||
List<KateOrders> currentOrdersList = kateOrdersList.stream().filter(kateOrders ->
|
||||
Objects.equals(kateOrders.getWorkOrder(), kateOrdersExcelVo.getWorkOrder())
|
||||
&& Objects.equals(kateOrders.getGoodsId(), kateOrdersExcelVo.getGoodsId())
|
||||
&& Objects.equals(kateOrders.getSupplyArea(), kateOrdersExcelVo.getSupplyArea())
|
||||
).toList();
|
||||
if (!currentOrdersList.isEmpty()) {
|
||||
KateOrders currentOrder = currentOrdersList.get(0);
|
||||
// 设定数量
|
||||
currentOrder.setRequirementQuantity(currentOrder.getRequirementQuantity().add(kateOrdersExcelVo.getRequirementQuantity()));
|
||||
currentOrder.setLackQuantity(currentOrder.getLackQuantity().add(kateOrdersExcelVo.getRequirementQuantity()));
|
||||
// 先移除
|
||||
kateOrdersList.removeIf(kateOrders ->
|
||||
Objects.equals(kateOrders.getWorkOrder(), kateOrdersExcelVo.getWorkOrder())
|
||||
&& Objects.equals(kateOrders.getGoodsId(), kateOrdersExcelVo.getGoodsId())
|
||||
&& Objects.equals(kateOrders.getSupplyArea(), kateOrdersExcelVo.getSupplyArea()));
|
||||
// 再添加
|
||||
kateOrdersList.add(currentOrder);
|
||||
continue;
|
||||
}
|
||||
// 查询数据库是否存在重复数据
|
||||
KateOrders existsKateOrders = kateOrdersService.getOne(new LambdaQueryWrapper<KateOrders>()
|
||||
.eq(KateOrders::getWorkOrder, kateOrdersExcelVo.getWorkOrder())
|
||||
.eq(KateOrders::getGoodsId, kateOrdersExcelVo.getGoodsId())
|
||||
.eq(KateOrders::getSupplyArea, kateOrdersExcelVo.getSupplyArea()))) {
|
||||
.eq(KateOrders::getSupplyArea, kateOrdersExcelVo.getSupplyArea())
|
||||
.last("limit 1"));
|
||||
if (existsKateOrders != null) {
|
||||
// 数据重复
|
||||
existsKateOrders.setRequirementQuantity(existsKateOrders.getRequirementQuantity().add(kateOrdersExcelVo.getRequirementQuantity()));
|
||||
existsKateOrders.setLackQuantity(existsKateOrders.getLackQuantity().add(kateOrdersExcelVo.getRequirementQuantity()));
|
||||
kateOrdersList.add(existsKateOrders);
|
||||
continue;
|
||||
}
|
||||
KateOrdersLast kateOrdersLast = kateOrdersLastService.getOne(new LambdaQueryWrapper<KateOrdersLast>()
|
||||
.eq(KateOrdersLast::getWorkOrder, kateOrdersExcelVo.getWorkOrder())
|
||||
.eq(KateOrdersLast::getGoodsId, kateOrdersExcelVo.getGoodsId())
|
||||
.eq(KateOrdersLast::getSupplyArea, kateOrdersExcelVo.getSupplyArea()));
|
||||
.eq(KateOrdersLast::getSupplyArea, kateOrdersExcelVo.getSupplyArea())
|
||||
.last("limit 1"));
|
||||
if (kateOrdersLast != null) {
|
||||
// 之前存在过
|
||||
KateOrders oldKateOrders = new KateOrders();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user