1
This commit is contained in:
parent
d8930d9559
commit
271c246bb3
|
|
@ -567,6 +567,9 @@ public class AppTaskController extends BaseController
|
|||
if (appPmsOrderOutList.stream().map(AppPmsOrderOut::getGoodsId).distinct().count() != appPmsOrderOutList.size()) {
|
||||
return error("出库单明细不能有重复物料编码");
|
||||
}
|
||||
if (appPmsOrderOutList.stream().map(AppPmsOrderOut::getListId).distinct().count() > 1) {
|
||||
return error("手动出库紧支持单个出库单出库");
|
||||
}
|
||||
|
||||
//
|
||||
logger.info("请求出库单明细:{}", appPmsOrderOutList);
|
||||
|
|
@ -590,6 +593,7 @@ public class AppTaskController extends BaseController
|
|||
//根据物料ID查询库存,按照先进先出的原则,按上架时间倒叙查询
|
||||
AppStock tMiStock = new AppStock();
|
||||
tMiStock.setGoodsId(appPmsOrderOut.getGoodsId());
|
||||
//确定在库中
|
||||
|
||||
List<AppStock> appStocks = appStockService.selectStockByGoodsId(tMiStock);
|
||||
|
||||
|
|
@ -912,6 +916,7 @@ public class AppTaskController extends BaseController
|
|||
appTask.setOrderId(orderId);
|
||||
//库存编号
|
||||
appTask.setStockId(tMiStock1.getStockId());
|
||||
appTask.setCreateTime(new Date());
|
||||
appTaskService.insertAppTask(appTask);
|
||||
}
|
||||
|
||||
|
|
@ -1185,15 +1190,29 @@ public class AppTaskController extends BaseController
|
|||
}
|
||||
for(PickCompleteReq request : requests) {
|
||||
// 更新捡货任务数量
|
||||
AppTask updatePickNum = new AppTask();
|
||||
updatePickNum.setTaskId(request.getTaskId());
|
||||
updatePickNum.setOpNum(request.getPickNum());
|
||||
updatePickNum.setTaskStatus(6);
|
||||
updatePickNum.setOpUser(request.getPicker());
|
||||
int updateAppTask = appTaskService.updateAppTask(updatePickNum);
|
||||
if (updateAppTask == 0) {
|
||||
//根据taskId,查询该条任务
|
||||
AppTask task = appTaskService.selectAppTaskByTaskId(request.getTaskId());
|
||||
if(task.getOpNum().compareTo(request.getPickNum()) < 0){
|
||||
throw new RuntimeException("拣选数量不能大于出库数量");
|
||||
}
|
||||
task.setOpNum(request.getPickNum());
|
||||
task.setTaskStatus(6);
|
||||
task.setOpUser(request.getPicker());
|
||||
appTaskService.updateAppTask(task);
|
||||
//查询出库单 根据orderId和goodsId
|
||||
AppPmsOrderOut appPmsOrderOut = new AppPmsOrderOut();
|
||||
appPmsOrderOut.setGoodsId(task.getGoodsId());
|
||||
appPmsOrderOut.setOrderId(task.getOrderId());
|
||||
appPmsOrderOut.setOrderStatus(1);
|
||||
List<AppPmsOrderOut> appPmsOrderOuts = appPmsOrderOutService.selectAppPmsOrderOutList(appPmsOrderOut);
|
||||
if(CollectionUtils.isEmpty(appPmsOrderOuts)){
|
||||
return error("数据服务异常,请重试");
|
||||
}
|
||||
AppPmsOrderOut appPmsOrderOut1 = appPmsOrderOuts.get(0);
|
||||
appPmsOrderOut1.setTrNum(appPmsOrderOut1.getTrNum().add(request.getPickNum()));
|
||||
appPmsOrderOut1.setShelvesNum(BigDecimal.ZERO);
|
||||
appPmsOrderOut1.setOrderStatus(0);
|
||||
appPmsOrderOutService.updateAppPmsOrderOut(appPmsOrderOut1);
|
||||
}
|
||||
return success("捡货成功");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@ import java.util.List;
|
|||
*/
|
||||
public class PmsOutFeedBack {
|
||||
|
||||
private List<PmsOutFeedBackRecordList> recordList;
|
||||
private List<PmsOutFeedBackRecord> recordList;
|
||||
|
||||
public List<PmsOutFeedBackRecordList> getRecordList() {
|
||||
public List<PmsOutFeedBackRecord> getRecordList() {
|
||||
return recordList;
|
||||
}
|
||||
|
||||
public void setRecordList(List<PmsOutFeedBackRecordList> recordList) {
|
||||
public void setRecordList(List<PmsOutFeedBackRecord> recordList) {
|
||||
this.recordList = recordList;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
package com.ruoyi.quartz.domain.app;
|
||||
|
||||
public class PmsOutFeedBackRecordList {
|
||||
public class PmsOutFeedBackRecord {
|
||||
|
||||
|
||||
private Integer amount;
|
||||
|
|
@ -3,6 +3,7 @@ package com.ruoyi.quartz.task;
|
|||
import com.alibaba.fastjson2.JSON;
|
||||
import com.ruoyi.app.domain.*;
|
||||
import com.ruoyi.app.mapper.AppLocationMapper;
|
||||
import com.ruoyi.app.mapper.AppPmsOrderOutMapper;
|
||||
import com.ruoyi.quartz.domain.app.*;
|
||||
import com.ruoyi.app.service.*;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
|
|
@ -13,7 +14,6 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
|
@ -51,6 +51,8 @@ public class TaskExecutor {
|
|||
}};
|
||||
@Autowired
|
||||
private AppLocationMapper appLocationMapper;
|
||||
@Autowired
|
||||
private AppPmsOrderOutMapper appPmsOrderOutMapper;
|
||||
|
||||
/**
|
||||
* 解析wms任务
|
||||
|
|
@ -335,81 +337,76 @@ public class TaskExecutor {
|
|||
if (appTasks == null || appTasks.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
PmsOutFeedBack pmsOutFeedBack = new PmsOutFeedBack();
|
||||
List<PmsOutFeedBackRecord> recordList = new ArrayList<>();
|
||||
for (AppTask task : appTasks) {
|
||||
if(task.getOpNum().compareTo(task.getStockNum()) >= 0) {
|
||||
// 整出
|
||||
AppStock appStock = new AppStock();
|
||||
appStock.setGoodsId(task.getGoodsId());
|
||||
appStock.setVehicleId(task.getVehicleId());
|
||||
List<AppStock> appStocks = appStockService.selectAppStockList(appStock);
|
||||
if(appStocks == null) {
|
||||
return;
|
||||
}
|
||||
for (AppStock stock : appStocks) {
|
||||
int deleteAppStockByStockId = appStockService.deleteAppStockByStockId(stock.getStockId());
|
||||
logger.info("删除库存:{}", JSON.toJSONString(stock));
|
||||
if(deleteAppStockByStockId > 0) {
|
||||
AppTask updateRemark = new AppTask();
|
||||
updateRemark.setTaskId(task.getTaskId());
|
||||
updateRemark.setRemark("出库完成");
|
||||
appTaskService.updateAppTask(updateRemark); // 更新备注信息
|
||||
AppTaskBak appTaskBak = new AppTaskBak();
|
||||
BeanUtils.copyProperties(task, appTaskBak);
|
||||
logger.info("出库任务数据归档成功。{}", JSON.toJSONString(appTaskBak));
|
||||
appTaskBakService.insertAppTaskBak(appTaskBak);// 数据归档
|
||||
appTaskService.deleteAppTaskByTaskId(task.getTaskId()); // 删除旧数据
|
||||
}
|
||||
// 调用 pms 接口
|
||||
PmsOutFeedBack pmsOutFeedBack = new PmsOutFeedBack();
|
||||
PmsOutFeedBackRecordList recordListItem = new PmsOutFeedBackRecordList();
|
||||
recordListItem.setAmount(task.getOpNum().intValue());
|
||||
recordListItem.setBusinessOrder(task.getOrderId());
|
||||
recordListItem.setMaterialsNo(task.getGoodsId());
|
||||
List<PmsOutFeedBackRecordList> recordList = new ArrayList<>();
|
||||
recordList.add(recordListItem);
|
||||
pmsOutFeedBack.setRecordList(recordList);
|
||||
String url = sysConfigService.selectConfigByKey("pms.outComplete");
|
||||
if (StringUtils.isEmpty(url)) {
|
||||
continue;
|
||||
}
|
||||
PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, JSON.toJSONString(pmsOutFeedBack)), PmsCommonRes.class);
|
||||
logger.info("pms出库反馈请求信息:{},结果:{}", JSON.toJSONString(pmsOutFeedBack), JSON.toJSONString(pmsCommonRes));
|
||||
}
|
||||
AppStock appStockCheck = new AppStock();
|
||||
appStockCheck.setLocationId(task.getOrigin());
|
||||
List<AppStock> appStockCheckData = appStockService.selectAppStockList(appStockCheck);
|
||||
logger.info("剩余库存条目{}",appStockCheckData.size());
|
||||
if(appStockCheckData == null) {
|
||||
return;
|
||||
}
|
||||
if(appStockCheckData.isEmpty()) {
|
||||
// 这个位置没有库存了,直接释放货位
|
||||
AppLocation location = new AppLocation();
|
||||
location.setLocationId(task.getOrigin());
|
||||
location.setLocationStatus(0);
|
||||
appLocationMapper.updateLocationByLocationId(location);
|
||||
}
|
||||
} else {
|
||||
// 如果小于的话就属于捡货任务
|
||||
// 删除库存内的绑定的库位号,释放库位
|
||||
AppStock appStock = new AppStock();
|
||||
appStock.setLocationId(task.getOrigin());
|
||||
List<AppStock> appStocks = appStockService.selectAppStockList(appStock);
|
||||
if (CollectionUtils.isEmpty(appStocks)) {
|
||||
continue;
|
||||
}
|
||||
int updateNewLocation = appStockService.updateNewLocation(task.getOrigin(), "");
|
||||
logger.info("捡选出库清除库存绑定的货位,数据:{},清除结果:{}", JSON.toJSONString(task), updateNewLocation);
|
||||
AppLocation location = new AppLocation();
|
||||
location.setLocationId(task.getOrigin());
|
||||
location.setLocationStatus(0);
|
||||
appLocationMapper.updateLocationByLocationId(location);
|
||||
|
||||
//调用接口,组装数据
|
||||
AppPmsOrderOut appPmsOrderOut = new AppPmsOrderOut();
|
||||
appPmsOrderOut.setOrderId(task.getOrderId());
|
||||
appPmsOrderOut.setGoodsId(task.getGoodsId());
|
||||
List<AppPmsOrderOut> appPmsOrderOuts = appPmsOrderOutMapper.selectAppPmsOrderOutList(appPmsOrderOut);
|
||||
if (CollectionUtils.isEmpty(appPmsOrderOuts)) {
|
||||
continue;
|
||||
}
|
||||
return;
|
||||
AppPmsOrderOut appPmsOrderOut1 = appPmsOrderOuts.get(0);
|
||||
PmsOutFeedBackRecord recordListItem = new PmsOutFeedBackRecord();
|
||||
recordListItem.setAmount(task.getOpNum().intValue());
|
||||
recordListItem.setBusinessOrder(appPmsOrderOut1.getListId());
|
||||
recordListItem.setMaterialsNo(task.getGoodsId());
|
||||
recordList.add(recordListItem);
|
||||
}
|
||||
|
||||
pmsOutFeedBack.setRecordList(recordList);
|
||||
String url = sysConfigService.selectConfigByKey("pms.outComplete");
|
||||
if (StringUtils.isEmpty(url)) {
|
||||
throw new RuntimeException("pms.outComplete配置为空");
|
||||
}
|
||||
PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, JSON.toJSONString(pmsOutFeedBack)), PmsCommonRes.class);
|
||||
logger.info("pms出库反馈请求信息:{},结果:{}", JSON.toJSONString(pmsOutFeedBack), JSON.toJSONString(pmsCommonRes));
|
||||
|
||||
// 归档旧数据
|
||||
for (AppTask task : appTasks) {
|
||||
BigDecimal opNum = task.getOpNum();
|
||||
AppTaskBak appTaskBak = new AppTaskBak();
|
||||
BeanUtils.copyProperties(task, appTaskBak);
|
||||
appTaskBakService.insertAppTaskBak(appTaskBak); // 将任务数据归档
|
||||
appTaskService.deleteAppTaskByTaskId(task.getTaskId()); // 删除旧数据
|
||||
|
||||
if (opNum.compareTo(task.getStockNum()) >= 0) { // 需求数量大于库存数量
|
||||
int deleteAppStockByStockId = appStockService.deleteAppStockByStockId(task.getStockId());
|
||||
logger.info("出库捡选删除库存:{},删除结果:{}", task.getStockId(), deleteAppStockByStockId);
|
||||
|
||||
} else {
|
||||
// 更新库存剩余数量
|
||||
AppStock update = new AppStock();
|
||||
update.setStockId(task.getStockId());
|
||||
update.setRemainNum(task.getStockNum().subtract(opNum));
|
||||
update.setPackingNum(BigDecimal.ZERO);
|
||||
appStockService.updateAppStock(update);
|
||||
logger.info("出库捡选更新库存剩余数量:{},更新结果:{}", JSON.toJSONString(update), appStockService.updateAppStock(update));
|
||||
}
|
||||
}
|
||||
//java8 stream流过滤出appTasks数组中的stockId对应的vehicleId 去重
|
||||
List<String> locations = appTasks.stream().map(AppTask::getLocationId).distinct().collect(Collectors.toList());
|
||||
List<String> vehicles = appTasks.stream().map(AppTask::getVehicleId).distinct().collect(Collectors.toList());
|
||||
//更新库存中中这些vehicleId对应的stock_status为0,并且把locationId置空
|
||||
for (String vehicleId : vehicles) {
|
||||
AppStock appStock = new AppStock();
|
||||
appStock.setVehicleId(vehicleId);
|
||||
appStock.setStockStatus(0);
|
||||
appStockService.updateSts(appStock);
|
||||
}
|
||||
for (String locationId : locations){
|
||||
appStockService.updateNewLocation(locationId,"");
|
||||
//更新库位表状态
|
||||
updateLocation(locationId,0);
|
||||
}
|
||||
}
|
||||
|
||||
private void completePickOutTask() {
|
||||
|
||||
@Transactional
|
||||
public void completePickOutTask() {
|
||||
AppTask appTask = new AppTask();
|
||||
appTask.setTaskStatus(6);
|
||||
appTask.setTaskType(2);
|
||||
|
|
@ -417,69 +414,86 @@ public class TaskExecutor {
|
|||
if (appTasks == null || appTasks.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
PmsOutFeedBack pmsOutFeedBack = new PmsOutFeedBack();
|
||||
List<PmsOutFeedBackRecord> recordList = new ArrayList<>();
|
||||
for (AppTask task : appTasks) {
|
||||
// 更新库存
|
||||
AppStock appStock = new AppStock();
|
||||
appStock.setGoodsId(task.getGoodsId());
|
||||
appStock.setVehicleId(task.getVehicleId());
|
||||
List<AppStock> appStocks = appStockService.selectAppStockList(appStock);
|
||||
if(appStocks == null) {
|
||||
return;
|
||||
|
||||
//调用接口,组装数据
|
||||
AppPmsOrderOut appPmsOrderOut = new AppPmsOrderOut();
|
||||
appPmsOrderOut.setOrderId(task.getOrderId());
|
||||
appPmsOrderOut.setGoodsId(task.getGoodsId());
|
||||
List<AppPmsOrderOut> appPmsOrderOuts = appPmsOrderOutMapper.selectAppPmsOrderOutList(appPmsOrderOut);
|
||||
if (CollectionUtils.isEmpty(appPmsOrderOuts)) {
|
||||
continue;
|
||||
}
|
||||
AppPmsOrderOut appPmsOrderOut1 = appPmsOrderOuts.get(0);
|
||||
PmsOutFeedBackRecord recordListItem = new PmsOutFeedBackRecord();
|
||||
recordListItem.setAmount(task.getOpNum().intValue());
|
||||
recordListItem.setBusinessOrder(appPmsOrderOut1.getListId());
|
||||
recordListItem.setMaterialsNo(task.getGoodsId());
|
||||
recordList.add(recordListItem);
|
||||
}
|
||||
|
||||
//根据orderId查询出库单表,获取listid和物料id
|
||||
//组装数组
|
||||
|
||||
// 调用 pms 接口
|
||||
pmsOutFeedBack.setRecordList(recordList);
|
||||
String url = sysConfigService.selectConfigByKey("pms.outComplete");
|
||||
if (StringUtils.isEmpty(url)) {
|
||||
throw new RuntimeException("pms.outComplete配置为空");
|
||||
}
|
||||
PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, JSON.toJSONString(pmsOutFeedBack)), PmsCommonRes.class);
|
||||
logger.info("pms出库反馈请求信息:{},结果:{}", JSON.toJSONString(pmsOutFeedBack), JSON.toJSONString(pmsCommonRes));
|
||||
|
||||
|
||||
// 归档旧数据
|
||||
for (AppTask task : appTasks) {
|
||||
BigDecimal opNum = task.getOpNum();
|
||||
for (AppStock stock : appStocks) {
|
||||
if(opNum.compareTo(stock.getRemainNum()) >= 0) { // 需求数量大于库存数量
|
||||
int deleteAppStockByStockId = appStockService.deleteAppStockByStockId(stock.getStockId());
|
||||
logger.info("出库捡选删除库存:{},删除结果:{}", JSON.toJSONString(stock), deleteAppStockByStockId);
|
||||
// 调用 pms 接口
|
||||
PmsOutFeedBack pmsOutFeedBack = new PmsOutFeedBack();
|
||||
PmsOutFeedBackRecordList recordListItem = new PmsOutFeedBackRecordList();
|
||||
recordListItem.setAmount(stock.getRemainNum().intValue());
|
||||
recordListItem.setBusinessOrder(task.getOrderId());
|
||||
recordListItem.setMaterialsNo(task.getGoodsId());
|
||||
List<PmsOutFeedBackRecordList> recordList = new ArrayList<>();
|
||||
recordList.add(recordListItem);
|
||||
pmsOutFeedBack.setRecordList(recordList);
|
||||
String url = sysConfigService.selectConfigByKey("pms.outComplete");
|
||||
if (StringUtils.isEmpty(url)) {
|
||||
continue;
|
||||
}
|
||||
PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, JSON.toJSONString(pmsOutFeedBack)), PmsCommonRes.class);
|
||||
logger.info("pms出库反馈请求信息:{},结果:{}", JSON.toJSONString(pmsOutFeedBack), JSON.toJSONString(pmsCommonRes));
|
||||
opNum = opNum.subtract(stock.getRemainNum());
|
||||
} else {
|
||||
// 更新库存剩余数量
|
||||
AppStock update = new AppStock();
|
||||
update.setStockId(stock.getStockId());
|
||||
update.setRemainNum(stock.getRemainNum().subtract(opNum));
|
||||
appStockService.updateAppStock(update);
|
||||
logger.info("出库捡选更新库存剩余数量:{},更新结果:{}", JSON.toJSONString(update), appStockService.updateAppStock(update));
|
||||
// 调用 pms 接口
|
||||
PmsOutFeedBack pmsOutFeedBack = new PmsOutFeedBack();
|
||||
PmsOutFeedBackRecordList recordListItem = new PmsOutFeedBackRecordList();
|
||||
recordListItem.setAmount(stock.getRemainNum().intValue());
|
||||
recordListItem.setBusinessOrder(task.getOrderId());
|
||||
recordListItem.setMaterialsNo(task.getGoodsId());
|
||||
List<PmsOutFeedBackRecordList> recordList = new ArrayList<>();
|
||||
recordList.add(recordListItem);
|
||||
pmsOutFeedBack.setRecordList(recordList);
|
||||
String url = sysConfigService.selectConfigByKey("pms.outComplete");
|
||||
if (StringUtils.isEmpty(url)) {
|
||||
continue;
|
||||
}
|
||||
PmsCommonRes pmsCommonRes = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, JSON.toJSONString(pmsOutFeedBack)), PmsCommonRes.class);
|
||||
logger.info("pms出库反馈请求信息:{},结果:{}", JSON.toJSONString(pmsOutFeedBack), JSON.toJSONString(pmsCommonRes));
|
||||
}
|
||||
// 归档旧数据
|
||||
AppTaskBak appTaskBak = new AppTaskBak();
|
||||
BeanUtils.copyProperties(task, appTaskBak);
|
||||
appTaskBakService.insertAppTaskBak(appTaskBak); // 将任务数据归档
|
||||
appTaskService.deleteAppTaskByTaskId(task.getTaskId()); // 删除旧数据
|
||||
AppTaskBak appTaskBak = new AppTaskBak();
|
||||
BeanUtils.copyProperties(task, appTaskBak);
|
||||
appTaskBakService.insertAppTaskBak(appTaskBak); // 将任务数据归档
|
||||
appTaskService.deleteAppTaskByTaskId(task.getTaskId()); // 删除旧数据
|
||||
|
||||
if (opNum.compareTo(task.getStockNum()) >= 0) { // 需求数量大于库存数量
|
||||
int deleteAppStockByStockId = appStockService.deleteAppStockByStockId(task.getStockId());
|
||||
logger.info("出库捡选删除库存:{},删除结果:{}", task.getStockId(), deleteAppStockByStockId);
|
||||
|
||||
} else {
|
||||
// 更新库存剩余数量
|
||||
AppStock update = new AppStock();
|
||||
update.setStockId(task.getStockId());
|
||||
update.setRemainNum(task.getStockNum().subtract(opNum));
|
||||
update.setPackingNum(BigDecimal.ZERO);
|
||||
appStockService.updateAppStock(update);
|
||||
logger.info("出库捡选更新库存剩余数量:{},更新结果:{}", JSON.toJSONString(update), appStockService.updateAppStock(update));
|
||||
}
|
||||
}
|
||||
//java8 stream流过滤出appTasks数组中的stockId对应的vehicleId 去重
|
||||
List<String> locations = appTasks.stream().map(AppTask::getLocationId).distinct().collect(Collectors.toList());
|
||||
List<String> vehicles = appTasks.stream().map(AppTask::getVehicleId).distinct().collect(Collectors.toList());
|
||||
//更新库存中中这些vehicleId对应的stock_status为0,并且把locationId置空
|
||||
for (String vehicleId : vehicles) {
|
||||
AppStock appStock = new AppStock();
|
||||
appStock.setVehicleId(vehicleId);
|
||||
appStock.setStockStatus(0);
|
||||
appStockService.updateSts(appStock);
|
||||
}
|
||||
for (String locationId : locations){
|
||||
appStockService.updateNewLocation(locationId,"");
|
||||
//更新库位表状态
|
||||
updateLocation(locationId,0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void updateLocation(String location,Integer status) {
|
||||
AppLocation appLocation = new AppLocation();
|
||||
appLocation.setLocationId(location);
|
||||
appLocation.setLocationStatus(status);
|
||||
appLocationMapper.updateLocationByLocationId(appLocation);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user