Merge branch 'dev' into dev_jinji

This commit is contained in:
王奎兴
2026-07-17 18:06:41 +08:00
50 changed files with 1335 additions and 63 deletions
@@ -27,6 +27,10 @@ import com.mhd.system.api.domain.WarehouseFeignPO;
import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.application.service.stockReceiptOrder.StockReceiptOrderApplicationService;
import com.mhd.wms.application.service.stockShelfOrder.StockShelfOrderApplicationService;
import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
@@ -45,12 +49,18 @@ import com.mhd.wms.domain.receiptOrderAccount.repository.facade.IReceiptOrderAcc
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper;
import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockInOrder.repository.vo.GwInDetail;
import com.mhd.wms.domain.stockInOrder.repository.vo.GwStockInOrder;
import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService;
import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper;
import com.mhd.wms.domain.stockReceiptOrder.service.StockReceiptOrderDomainService;
import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder;
import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService;
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
import com.mhd.wms.domain.stockShelfOrder.service.StockShelfOrderDomainService;
import com.mhd.wms.interfaces.dto.stockInOrder.StockInOrderDTO;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
@@ -70,6 +80,7 @@ import org.apache.poi.ss.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@@ -92,6 +103,10 @@ import java.util.stream.Collectors;
public class StockInOrderApplicationService {
@Autowired
private StockInOrderDomainService stockInOrderDomainService;
@Autowired
private StockReceiptOrderDomainService stockReceiptOrderDomainService;
@Autowired
private StockShelfOrderDomainService stockShelfOrderDomainService;
@Resource
private UserServiceFeign userServiceFeign;
@Resource
@@ -109,6 +124,8 @@ public class StockInOrderApplicationService {
@Autowired
private IStockReceiptOrderService stockReceiptOrderService;
@Autowired
private IStockShelfOrderService stockShelfOrderService;
@Autowired
private IReceiptMaterialDetailService receiptMaterialDetailService;
@Autowired
private IStockOutOrderService stockOutOrderService;
@@ -119,7 +136,15 @@ public class StockInOrderApplicationService {
@Autowired
private StockOutOrderMapper stockOutOrderMapper;
@Autowired
private StockInOrderMapper stockInOrderMapper;
@Autowired
private PickingMaterialDetailMapper pickingMaterialDetailMapper;
@Autowired
private StockReceiptOrderApplicationService stockReceiptOrderApplicationService;
@Autowired
private IDeliveTaskService deliveTaskService;
@Autowired
private StockShelfOrderApplicationService stockShelfOrderApplicationService;
private static final String PUSH_API_URL = "http://10.102.192.15/nagu-erp-api/transfer/pushData";
private static final String API_NAME = "save_order_i";
private static final String VERIFY = "ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD";
@@ -541,31 +566,171 @@ public class StockInOrderApplicationService {
*/
public Boolean auditState(StockInOrderDO stockInOrderDO){
Boolean b = stockInOrderDomainService.auditState(stockInOrderDO);
// List<Long> inOrderIds = stockInOrderDO.getInOrderIds();
// if (inOrderIds != null && !inOrderIds.isEmpty()) {
// StockInOrder stockInOrder = stockInOrderService.getById(inOrderIds.get(0));
// Integer needCustomsDeclaration = stockInOrder.getNeedCustomsDeclaration();
// Integer auditStatus = stockInOrder.getAuditStatus();
// try {
// if (needCustomsDeclaration != null && needCustomsDeclaration == 1 && auditStatus != null && auditStatus == 3) {
// Long inOrderId = stockInOrder.getInOrderId();
// List<Long> idList = new ArrayList<>();
// idList.add(inOrderId);
// //batchPush(idList);
// }
// } catch (Exception e) {
// throw new ServiceException("推送关务系统失败!");
// }
// }
return b;
}
public Boolean receiptEasyMode(StockInOrderDO stockInOrderDO){
Boolean b = stockInOrderDomainService.receiptEasyMode(stockInOrderDO);
return b;
}
public Boolean updateQuantity( BigDecimal quantity, Long materialDetailId,BigDecimal area,
BigDecimal volume,BigDecimal weight){
Boolean result = false;
InMaterialDetail inMaterialDetail = inMaterialDetailService.getById(materialDetailId);
if (inMaterialDetail != null) {
inMaterialDetail.setQuantity(quantity);
inMaterialDetail.setTotalArea(area);
inMaterialDetail.setTotalVolume(volume);
inMaterialDetail.setTotalNetWeight(weight);
inMaterialDetail.setTotalGrossWeight(weight);
boolean b = inMaterialDetailService.updateById(inMaterialDetail);
Long uniqueId = inMaterialDetail.getUniqueId();
ReceiptMaterialDetail one = receiptMaterialDetailService.getOne(new LambdaQueryWrapper<ReceiptMaterialDetail>()
.eq(ReceiptMaterialDetail::getInUniqueId, uniqueId)
.eq(ReceiptMaterialDetail::getDelFlag, 1));
one.setQuantity(quantity);
one.setTotalArea(area);
one.setTotalVolume(volume);
one.setTotalNetWeight(weight);
one.setTotalGrossWeight(weight);
boolean b1 = receiptMaterialDetailService.updateById(one);
result = b && b1;
}
return result;
}
public Boolean shelfEasyMode(StockInOrderDO stockInOrderDO){
Boolean b = stockInOrderDomainService.shelfEasyMode(stockInOrderDO);
return b;
}
public Boolean checkUploadEasyMode(StockInOrderDO stockInOrderDO){
String inOrderNumber = stockInOrderDO.getInOrderNumber();
StockReceiptOrder stockReceiptOrder = stockReceiptOrderService.getOne(new LambdaQueryWrapper<StockReceiptOrder>()
.eq(StockReceiptOrder::getInOrderNumber, inOrderNumber)
.eq(StockReceiptOrder::getDelFlag, 1), false);
stockReceiptOrder.setStatus(3);
boolean b = stockReceiptOrderService.updateById(stockReceiptOrder);
StockShelfOrder stockShelfOrder = stockShelfOrderService.getOne(new LambdaQueryWrapper<StockShelfOrder>()
.eq(StockShelfOrder::getInOrderNumber, inOrderNumber)
.eq(StockShelfOrder::getDelFlag, 1), false);
//上架任务下发
StockShelfOrderDO stockShelfOrderDO = new StockShelfOrderDO();
//完成上架
Boolean b1 = stockShelfOrderDomainService.completeUpShelf(stockShelfOrder.getShelfOrderId());
String inOrderId = stockInOrderDO.getInOrderNumber();
StockInOrder stockInOrder = stockInOrderService.getOne(new LambdaQueryWrapper<StockInOrder>()
.eq(StockInOrder::getInOrderNumber, inOrderId)
.eq(StockInOrder::getDelFlag,1) ,false);
if (stockInOrder != null) {
DeliveTask deliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, stockShelfOrder.getShelfOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (deliveTask != null) {
deliveTask.setOperatorsBy(stockInOrder.getWorkUserId());
deliveTask.setOperatorsName(stockInOrder.getWorkUserName());
deliveTask.setTaskStatus(2);
deliveTaskService.updateById(deliveTask);
}
}
return b && b1;
}
public void omsOrderAdd(StockInOrder stockInOrder){
// 设置任务下发用户ID
String userId = stockInOrderMapper.queryWarehouseUserId(stockInOrder.getOrganizationId(), stockInOrder.getWarehouseId(), stockInOrder.getTopOrganizationId());
stockInOrder.setTaskIssueUserId(userId);
stockInOrderDomainService.omsOrderAdd(stockInOrder);
}
public void acceptTask(StockInOrder stockInOrder){
Long workUserId = stockInOrder.getWorkUserId();
String workUserName = stockInOrder.getWorkUserName();
if (workUserId == null || workUserName == null) {
throw new ServiceException("作业人员id或名称为空!");
}
//pda任务中心下发
StockReceiptOrderDO stockReceiptOrderDO = new StockReceiptOrderDO();
stockReceiptOrderDO.setOperatorsBy(workUserId);
stockReceiptOrderDO.setOperatorsName(workUserName);
Long inOrderId = stockInOrder.getInOrderId();
StockInOrder stock = stockInOrderService.getById(inOrderId);
String inOrderNumber = stock.getInOrderNumber();
StockReceiptOrder stockReceiptOrder = stockReceiptOrderService.getOne(new LambdaQueryWrapper<StockReceiptOrder>()
.eq(StockReceiptOrder::getInOrderNumber, inOrderNumber)
.eq(StockReceiptOrder::getDelFlag, 1), false);
if (stockReceiptOrder == null) {
throw new ServiceException("收货单不存在!");
}
List<Long> ids = new ArrayList<>();
ids.add(stockReceiptOrder.getReceiptOrderId());
stockReceiptOrderDO.setReceiptOrderIds(ids);
// stockReceiptOrderApplicationService.taskDistribution(stockReceiptOrderDO);
DeliveTask deliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, stockReceiptOrder.getReceiptOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (deliveTask != null) {
deliveTask.setOperatorsBy(workUserId);
deliveTask.setOperatorsName(workUserName);
deliveTask.setTaskStatus(2);
deliveTaskService.updateById(deliveTask);
}
stockInOrderService.update(null, new LambdaUpdateWrapper<StockInOrder>()
.set(StockInOrder::getWorkUserId, workUserId)
.set(StockInOrder::getWorkUserName, workUserName)
.set(StockInOrder::getWorkTaskReceiveStatus, "1")
.eq(StockInOrder::getInOrderId, stockInOrder.getInOrderId()));
}
public void removeTask(StockInOrderDO stockInOrder){
Long inOrderId = stockInOrder.getInOrderId();
String removeUserId = stockInOrder.getRemoveUserId();
if (removeUserId == null) {
throw new ServiceException("移除任务用户ID为空!");
}
if (inOrderId == null) {
throw new ServiceException("入库单不存在!");
}
StockInOrder stock = stockInOrderService.getById(inOrderId);
if (stock == null) {
throw new ServiceException("入库单不存在!");
}
String taskIssueUserId = stock.getTaskIssueUserId();
if (taskIssueUserId == null) {
return;
}
String[] split = taskIssueUserId.split(",");
List<String> taskIds = Arrays.asList(split);
if (taskIds != null && taskIds.size() > 0) {
// 删除匹配元素
//taskIds.removeIf(str -> removeUserId.equals(str));
taskIds = taskIds.stream()
.filter(str -> !Objects.equals(removeUserId, str))
.collect(Collectors.toList());
if (taskIds != null && taskIds.size() > 0) {
String newTaskIssueUserId = String.join(",", taskIds);
stock.setTaskIssueUserId(newTaskIssueUserId);
stockInOrderService.updateById(stock);
} else {
stockInOrderService.update(null ,new LambdaUpdateWrapper<StockInOrder>()
.set(StockInOrder::getTaskIssueUserId, null)
.eq(StockInOrder::getInOrderId, stockInOrder.getInOrderId()));
}
} else {
throw new ServiceException("当前订单没有任务人员!");
}
}
public void omsOrderAddDetail(List<InMaterialDetail> inMaterialDetails){
stockInOrderDomainService.omsOrderAddDetail(inMaterialDetails);
}
@@ -1795,7 +1960,10 @@ public class StockInOrderApplicationService {
supplierParam(order);
// 设置数据字典键值
setDataDict(order);
// 设置任务下发用户ID
String userId = stockInOrderMapper.queryWarehouseUserId(order.getOrganizationId(), order.getWarehouseId(), order.getTopOrganizationId());
order.setTaskIssueUserId(userId);
orderList.add(order);
}
@@ -1915,6 +2083,10 @@ public class StockInOrderApplicationService {
if (stockInOrderDO.getWarehouseId() == null) {
throw new ServiceException("仓库ID不能为空");
}
//任务下发用户ID
String userIds = stockInOrderMapper.queryWarehouseUserId(stockInOrderDO.getOrganizationId(), stockInOrderDO.getWarehouseId(), stockInOrderDO.getTopOrganizationId());
stockInOrderDO.setTaskIssueUserId(userIds);
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockInOrderDO.getWarehouseId());
if (ajaxResult == null) {
throw new ServiceException("获取仓库信息失败:返回结果为空,仓库ID:" + stockInOrderDO.getWarehouseId());
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.mhd.common.core.constant.SecurityConstants;
import com.mhd.common.core.constant.SnowFlakeConstants;
import com.mhd.common.core.domain.entity.R;
@@ -26,6 +27,8 @@ import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.domain.copyCodeReference.repository.po.CopyCodeReferencePO;
import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
import com.mhd.wms.domain.deliveryDetailsLink.entity.DeliveryDetailsLink;
import com.mhd.wms.domain.deliveryDetailsLink.repository.facade.IDeliveryDetailsLinkService;
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
@@ -47,9 +50,13 @@ import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMateri
import com.mhd.wms.domain.pickingMaterialDetail.repository.mapper.PickingMaterialDetailMapper;
import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingAggByOutOrderRow;
import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO;
import com.mhd.wms.domain.pickingOrder.entity.PickingOrder;
import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.receiptOrderAccount.entity.ReceiptOrderAccount;
import com.mhd.wms.domain.receiptOrderAccount.repository.facade.IReceiptOrderAccountService;
import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper;
@@ -109,6 +116,8 @@ public class StockOutOrderApplicationService {
@Autowired
private IPickingMaterialDetailService pickingMaterialDetailService;
@Autowired
private IPickingOrderService pickingOrderService;
@Autowired
private IReceiptOrderAccountService receiptOrderAccountService;
@Autowired
private IDeliveryDetailsLinkService deliveryDetailsLinkService;
@@ -117,7 +126,11 @@ public class StockOutOrderApplicationService {
@Autowired
private StockOutOrderMapper stockOutOrderMapper;
@Autowired
private StockInOrderMapper stockInOrderMapper;
@Autowired
private PickingMaterialDetailMapper pickingMaterialDetailMapper;
@Autowired
private IDeliveTaskService deliveTaskService;
private static final String PUSH_API_URL = "http://10.102.192.15/nagu-erp-api/transfer/pushData";
private static final String API_NAME = "save_order_e";
private static final String VERIFY = "ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD";
@@ -294,14 +307,20 @@ public class StockOutOrderApplicationService {
*/
public Boolean insert(StockOutOrderDO stockOutOrderDO) {
//设置仓库
//setWarehouseInfo(stockOutOrderDO);
setWarehouseInfo(stockOutOrderDO);
//设置货主信息
shipperParam(stockOutOrderDO);
//设置客户信息
customerParam(stockOutOrderDO);
stockOutOrderDO.setOrderTypeCode("pu_tong_chu_ku");
stockOutOrderDO.setBusinessType("pu_tong_chu_ku");
stockOutOrderDO.setOrderTypeName("普通出库");
if (stockOutOrderDO.getOrderTypeCode() == null) {
stockOutOrderDO.setOrderTypeCode("pu_tong_chu_ku");
}
if (stockOutOrderDO.getBusinessType() == null) {
stockOutOrderDO.setBusinessType("pu_tong_chu_ku");
}
if (stockOutOrderDO.getOrderTypeName() == null) {
stockOutOrderDO.setOrderTypeName("普通出库");
}
//设置数据字典键值
//setDataDict(stockOutOrderDO);
return stockOutOrderDomainService.insert(stockOutOrderDO);
@@ -311,6 +330,8 @@ public class StockOutOrderApplicationService {
* 修改出库单
*/
public Boolean update(StockOutOrderDO stockOutOrderDO) {
//设置仓库
setWarehouseInfo(stockOutOrderDO);
return stockOutOrderDomainService.update(stockOutOrderDO);
}
@@ -1128,6 +1149,28 @@ public class StockOutOrderApplicationService {
return b;
}
public Boolean adjustPicking(StockOutOrderDO stockOutOrderDO){
Boolean b = stockOutOrderDomainService.adjustPicking(stockOutOrderDO);
return b;
}
public Boolean checkUpload(StockOutOrderDO stockOutOrderDO){
//pda复核下发
// String outOrderNumber = stockOutOrderDO.getOutOrderNumber();
// StockOutOrder stockOutOrder = stockOutOrderService.getOne(new QueryWrapper<StockOutOrder>().lambda()
// .eq(StockOutOrder::getOutOrderNumber, outOrderNumber)
// .eq(StockOutOrder::getDelFlag, 1), false);
// stockOutOrderDO.setCheckOperatorsBy(stockOutOrder.getWorkUserId());
// List<Long> outOrderIds = new ArrayList<>();
// outOrderIds.add(stockOutOrder.getOutOrderId());
// stockOutOrderDO.setOutOrderIds(outOrderIds);
// checkTaskDistribution(stockOutOrderDO);
Boolean b = stockOutOrderDomainService.checkUpload(stockOutOrderDO);
return b;
}
public Boolean genPickingOrderByOms(StockOutOrderDO stockOutOrderDO){
Boolean b = stockOutOrderDomainService.genPickingOrderByOms(stockOutOrderDO);
// List<Long> outOrderIds = stockOutOrderDO.getOutOrderIds();
@@ -1354,6 +1397,9 @@ public class StockOutOrderApplicationService {
if (stockOutOrderDO.getWarehouseId() == null) {
throw new ServiceException("仓库ID不能为空");
}
// 获取任务下发用户ID
String userId = stockInOrderMapper.queryWarehouseUserId(stockOutOrderDO.getOrganizationId(), stockOutOrderDO.getWarehouseId(), stockOutOrderDO.getTopOrganizationId());
stockOutOrderDO.setTaskIssueUserId(userId);
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockOutOrderDO.getWarehouseId());
if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
throw new ServiceException("获取仓库信息失败");
@@ -1603,6 +1649,76 @@ public class StockOutOrderApplicationService {
public void acceptTask(StockOutOrder stockOutOrder){
Long workUserId = stockOutOrder.getWorkUserId();
String workUserName = stockOutOrder.getWorkUserName();
if (workUserId == null || workUserName == null) {
throw new ServiceException("作业人员id或名称为空!");
}
PickingOrder pickingOrder = pickingOrderService.getOne(new LambdaQueryWrapper<PickingOrder>()
.eq(PickingOrder::getOrderNumber, stockOutOrder.getOutOrderNumber())
.eq(PickingOrder::getDelFlag, 1),false);
if (pickingOrder != null) {
DeliveTask deliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, pickingOrder.getPickingOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (deliveTask != null) {
deliveTask.setOperatorsBy(workUserId);
deliveTask.setOperatorsName(workUserName);
deliveTask.setTaskStatus(2);
deliveTaskService.updateById(deliveTask);
}
}
stockOutOrderService.update(null, new LambdaUpdateWrapper<StockOutOrder>()
.set(StockOutOrder::getWorkUserId, workUserId)
.set(StockOutOrder::getWorkUserName, workUserName)
.set(StockOutOrder::getWorkTaskReceiveStatus, "1")
.eq(StockOutOrder::getOutOrderId, stockOutOrder.getOutOrderId()));
}
public void removeTask(StockOutOrderDO stockOutOrder){
Long outOrderId = stockOutOrder.getOutOrderId();
String removeUserId = stockOutOrder.getRemoveUserId();
if (removeUserId == null) {
throw new ServiceException("移除任务用户ID为空!");
}
if (outOrderId == null) {
throw new ServiceException("出库单不存在!");
}
StockOutOrder stock = stockOutOrderService.getById(outOrderId);
if (stock == null) {
throw new ServiceException("入库单不存在!");
}
String taskIssueUserId = stock.getTaskIssueUserId();
if (taskIssueUserId == null) {
return;
}
String[] split = taskIssueUserId.split(",");
List<String> taskIds = Arrays.asList(split);
if (taskIds != null && taskIds.size() > 0) {
// 删除匹配元素
//taskIds.removeIf(str -> removeUserId.equals(str));
taskIds = taskIds.stream()
.filter(str -> !Objects.equals(removeUserId, str))
.collect(Collectors.toList());
if (taskIds != null && taskIds.size() > 0) {
String newTaskIssueUserId = String.join(",", taskIds);
stock.setTaskIssueUserId(newTaskIssueUserId);
stockOutOrderService.updateById(stock);
} else {
stockOutOrderService.update(null ,new LambdaUpdateWrapper<StockOutOrder>()
.set(StockOutOrder::getTaskIssueUserId, null)
.eq(StockOutOrder::getOutOrderId, stockOutOrder.getOutOrderId()));
}
} else {
throw new ServiceException("当前订单不存在任务人员!");
}
}
public void omsOrderAdd(StockOutOrder stockOutOrder){
stockOutOrderDomainService.omsOrderAdd(stockOutOrder);
}
@@ -414,4 +414,8 @@ public class InMaterialDetail extends BaseVOEntity {
private BigDecimal erpPriceGw;
//申报总价
private BigDecimal amountGw;
//仓码简易模式收货上架
private BigDecimal collectQuantity;
private String shelfJson;
}
@@ -439,4 +439,8 @@ public class InMaterialDetailPO extends StockInOrderBasePO {
//申报总价
private BigDecimal amountGw;
private String khdm;
//仓码简易模式收货上架
private BigDecimal collectQuantity;
private String shelfJson;
}
@@ -404,4 +404,8 @@ public class InMaterialDetailDO extends StockInOrderBaseDO {
private BigDecimal erpPriceGw;
//申报总价
private BigDecimal amountGw;
//仓码简易模式收货上架
private BigDecimal collectQuantity;
private String shelfJson;
}
@@ -528,4 +528,17 @@ public class OutMaterialDetail extends BaseVOEntity {
private String bondInvtNoGw;
private String whNoGw;
private String seatNoGw;
//仓码简易模式
@ApiModelProperty("出库重量")
@Excel(name = "出库重量")
private BigDecimal outWeight;
@ApiModelProperty("出库体积")
@Excel(name = "出库体积")
private BigDecimal outVolume;
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outQuantity;
}
@@ -568,4 +568,16 @@ public class OutMaterialDetailPO extends StockOutOrderBaseDO {
private String whNoGw;
private String seatNoGw;
private String khdm;
//仓码简易模式
@ApiModelProperty("出库重量")
@Excel(name = "出库重量")
private BigDecimal outWeight;
@ApiModelProperty("出库体积")
@Excel(name = "出库体积")
private BigDecimal outVolume;
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outQuantity;
}
@@ -520,4 +520,16 @@ public class OutMaterialDetailDO extends BaseVOEntity {
private String bondInvtNoGw;
private String whNoGw;
private String seatNoGw;
//仓码简易模式
@ApiModelProperty("出库重量")
@Excel(name = "出库重量")
private BigDecimal outWeight;
@ApiModelProperty("出库体积")
@Excel(name = "出库体积")
private BigDecimal outVolume;
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outQuantity;
}
@@ -382,4 +382,14 @@ public class StockInOrder extends BaseVOEntity {
@ApiModelProperty("推送人姓名")
private String pushByName;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
}
@@ -30,4 +30,6 @@ public interface StockInOrderMapper extends BaseMapper<StockInOrder>
List<InMaterialDetailPO> queryNoticePrintDetail(StockInOrderDO stockInOrderDO);
StockInOrderPO selectByInOrderNumber(@Param("inOrderNumber") String inOrderNumber);
}
String queryWarehouseUserId(@Param("organizationId") Long organizationId, @Param("warehouseId") Long warehouseId, @Param("topOrganizationId") Long topOrganizationId);
}
@@ -444,4 +444,13 @@ public class StockInOrderPO extends BaseVOEntity {
private String pushByName;
private String khdm;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
}
@@ -428,4 +428,24 @@ public class StockInOrderDO extends BaseVOEntity {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
//仓码pda查询参数
@ApiModelProperty("pda查询用户ID")
private Long queryUserId;
@ApiModelProperty("状态列表")
private List<Integer> statusList;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
@ApiModelProperty("任务移除用户ID")
private String removeUserId;
}
@@ -1,14 +1,19 @@
package com.mhd.wms.domain.stockInOrder.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mhd.common.core.constant.SnowFlakeConstants;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.utils.IgnoreNullUtil;
import com.mhd.common.core.utils.OrderSequence;
import com.mhd.common.core.utils.StringUtils;
import com.mhd.common.core.utils.bean.BeanUtils;
import com.mhd.common.core.utils.uuid.IdGenerator;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.SystemServiceFeign;
@@ -27,9 +32,11 @@ import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWa
import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO;
import com.mhd.wms.domain.qualityInspection.repository.facade.IQualityInspectionService;
import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO;
import com.mhd.wms.domain.receiptMaterialDetail.entity.ReceiptMaterialDetail;
import com.mhd.wms.domain.receiptMaterialDetail.repository.facade.IReceiptMaterialDetailService;
import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO;
import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO;
import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail;
import com.mhd.wms.domain.shelfMaterialDetail.repository.facade.IShelfMaterialDetailService;
import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO;
import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO;
@@ -37,9 +44,13 @@ import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService;
import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockReceiptOrder.entity.StockReceiptOrder;
import com.mhd.wms.domain.stockReceiptOrder.repository.facade.IStockReceiptOrderService;
import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO;
import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO;
import com.mhd.wms.domain.stockReceiptOrder.service.StockReceiptOrderDomainService;
import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder;
import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService;
import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO;
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
import com.mhd.wms.domain.stockShelfOrder.service.StockShelfOrderDomainService;
@@ -50,8 +61,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -81,12 +95,18 @@ public class StockInOrderDomainService {
private IMaterialGoodsRuleService materialGoodsRuleService;
@Autowired
private IMaterialWarehouseControlService materialWarehouseControlService;
@Autowired
@Resource
private SystemServiceFeign systemServiceFeign;
@Autowired
private IReceiptMaterialDetailService receiptMaterialDetailService;
@Autowired
private IShelfMaterialDetailService shelfMaterialDetailService;
@Autowired
private IStockReceiptOrderService stockReceiptOrderService;
@Autowired
private IStockShelfOrderService stockShelfOrderService;
@Autowired
private IdGenerator idGenerator;
/**
* 分页查询入库单列表
@@ -107,7 +127,7 @@ public class StockInOrderDomainService {
// //设置物料信息
// setMaterialDetailInfo(stockInOrderDO);
// //统计总物料种数
// stockInOrderDO.setMaterialQuantity(stockInOrderDO.getMaterialDetailList().size());
stockInOrderDO.setMaterialQuantity(stockInOrderDO.getMaterialDetailList().size());
// //统计总计划数
// BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
// stockInOrderDO.setQuantity(quantity);
@@ -483,6 +503,295 @@ public class StockInOrderDomainService {
.in(StockInOrder::getInOrderId, stockInOrderDO.getInOrderIds()));
}
@Transactional(rollbackFor = Exception.class)
public Boolean receiptEasyMode(StockInOrderDO stockInOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null
? loginUser.getUserPo().getUserName()
: (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername());
String inOrderNumber = stockInOrderDO.getInOrderNumber();
// 查询当天创建的入库单数量,用于生成batchNo
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String todayStr = dateFormat.format(new Date());
String todayStart = todayStr + " 00:00:00";
String todayEnd = todayStr + " 23:59:59";
SimpleDateFormat fullDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date todayStartDate = null;
try {
todayStartDate = fullDateFormat.parse(todayStart);
} catch (ParseException e) {
throw new RuntimeException(e);
}
Date todayEndDate = null;
try {
todayEndDate = fullDateFormat.parse(todayEnd);
} catch (ParseException e) {
throw new RuntimeException(e);
}
long todayStockInOrderCount = stockInOrderService.count(new LambdaQueryWrapper<StockInOrder>()
.ge(StockInOrder::getCreateTime, todayStartDate)
.le(StockInOrder::getCreateTime, todayEndDate)
.eq(StockInOrder::getDelFlag, 1));
String batchNo = "PC"+inOrderNumber+"-"+todayStockInOrderCount;
List<InMaterialDetailDO> materialDetailList = stockInOrderDO.getMaterialDetailList();
List<InMaterialDetailDO> receiptMaterialDetailList = materialDetailList.stream()
.filter(m -> m.getCollectQuantity() != null && m.getCollectQuantity().compareTo(BigDecimal.ZERO) != 0)
.collect(Collectors.toList());
if (receiptMaterialDetailList!=null && receiptMaterialDetailList.size()>0) {
for (InMaterialDetailDO inMaterialDetailDO : receiptMaterialDetailList) {
BigDecimal collectQuantity = inMaterialDetailDO.getCollectQuantity();
Long materialBaseInfoId = inMaterialDetailDO.getMaterialBaseInfoId();
Long uniqueId = inMaterialDetailDO.getUniqueId();
InMaterialDetail materialDetail = materialDetailService.getById(inMaterialDetailDO.getMaterialDetailId());
materialDetail.setCollectQuantity(collectQuantity);
materialDetailService.updateById(materialDetail);
ReceiptMaterialDetail receiptMaterialDetail = receiptMaterialDetailService.getOne(new QueryWrapper<ReceiptMaterialDetail>().lambda()
.eq(ReceiptMaterialDetail::getMaterialBaseInfoId, materialBaseInfoId)
.eq(ReceiptMaterialDetail::getInUniqueId, uniqueId)
.eq(ReceiptMaterialDetail::getDelFlag, 1), false);
BigDecimal alreadyReceiptQuantity = receiptMaterialDetail.getAlreadyReceiptQuantity();
if (alreadyReceiptQuantity != null && alreadyReceiptQuantity.compareTo(collectQuantity) == 0) {
continue;
}
receiptMaterialDetail.setReceiptQuantity(collectQuantity);
receiptMaterialDetail.setAlreadyReceiptQuantity(collectQuantity);
receiptMaterialDetail.setBatchNo(batchNo);
BigDecimal quantity = receiptMaterialDetail.getQuantity();
if (quantity != null && quantity.compareTo(BigDecimal.ZERO) == 0) {
receiptMaterialDetail.setReceiptStatus(3);
}
receiptMaterialDetailService.updateById(receiptMaterialDetail);
StockReceiptOrder stockReceiptOrder = stockReceiptOrderService.getOne(new QueryWrapper<StockReceiptOrder>().lambda()
.eq(StockReceiptOrder::getInOrderNumber, inOrderNumber)
.eq(StockReceiptOrder::getDelFlag, 1), false);
if (stockReceiptOrder != null) {
stockReceiptOrder.setStatus(2);
stockReceiptOrder.setReceiptQuantity(stockReceiptOrder.getReceiptQuantity().add(collectQuantity));
stockReceiptOrder.setBatchNo(batchNo);
stockReceiptOrderService.updateById(stockReceiptOrder);
}
StockInOrder stockInOrder = stockInOrderService.getOne(new QueryWrapper<StockInOrder>().lambda()
.eq(StockInOrder::getInOrderNumber, inOrderNumber)
.eq(StockInOrder::getDelFlag, 1), false);
if (stockInOrder != null) {
stockInOrder.setStatus(3);
stockInOrderService.updateById(stockInOrder);
}
List<StockShelfOrder> list = stockShelfOrderService.list(new QueryWrapper<StockShelfOrder>().lambda()
.eq(StockShelfOrder::getInOrderNumber, inOrderNumber)
.eq(StockShelfOrder::getDelFlag, 1));
StockShelfOrder stockShelfOrder = new StockShelfOrder();
if (list!=null && list.size()>0) {
stockShelfOrder = list.get(0);
} else {
BeanUtils.copyProperties(stockReceiptOrder, stockShelfOrder);
stockShelfOrder.setShelfOrderNumber(OrderSequence.getOrderCode("SJ"));
stockShelfOrder.setBatchNo(batchNo);
stockShelfOrderService.save(stockShelfOrder);
}
log.info("生成上架单成功,上架单编号:{}", stockShelfOrder.getShelfOrderNumber());
ShelfMaterialDetail shelfMaterialDetail = new ShelfMaterialDetail();
ShelfMaterialDetail one = shelfMaterialDetailService.getOne(new QueryWrapper<ShelfMaterialDetail>().lambda()
.eq(ShelfMaterialDetail::getMaterialBaseInfoId, materialBaseInfoId)
.eq(ShelfMaterialDetail::getInUniqueId, uniqueId)
.eq(ShelfMaterialDetail::getLevel, 1)
.eq(ShelfMaterialDetail::getDelFlag, 1), false);
if (one != null) {
one.setQuantity(collectQuantity);
one.setBatchNo(batchNo);
// one.setLotNumber(receiptMaterialDetail.getLotNo());
shelfMaterialDetailService.updateById(one);
} else {
BeanUtils.copyProperties(inMaterialDetailDO, shelfMaterialDetail);
shelfMaterialDetail.setShelfOrderNumber(stockShelfOrder.getShelfOrderNumber());
shelfMaterialDetail.setQuantity(collectQuantity);
shelfMaterialDetail.setInUniqueId(uniqueId);
shelfMaterialDetail.setReceiptUniqueId(receiptMaterialDetail.getUniqueId());
shelfMaterialDetail.setBatchNo(batchNo);
shelfMaterialDetail.setLotNumber(receiptMaterialDetail.getLotNo());
shelfMaterialDetailService.save(shelfMaterialDetail);
}
log.info("生成上架单成功,上架单编号:{},上架单明细编号:{}", stockShelfOrder.getShelfOrderNumber(), shelfMaterialDetail.getShelfOrderNumber());
}
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public Boolean shelfEasyMode(StockInOrderDO stockInOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null
? loginUser.getUserPo().getUserName()
: (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername());
String inOrderNumber = stockInOrderDO.getInOrderNumber();
List<InMaterialDetailDO> materialDetailList = stockInOrderDO.getMaterialDetailList();
List<InMaterialDetailDO> receiptMaterialDetailList = materialDetailList.stream()
.filter(m -> StringUtils.isNotBlank(m.getShelfJson()))
.collect(Collectors.toList());
if (receiptMaterialDetailList!=null && receiptMaterialDetailList.size()>0) {
for (InMaterialDetailDO inMaterialDetailDO : receiptMaterialDetailList) {
Long materialDetailId1 = inMaterialDetailDO.getMaterialDetailId();
Long materialBaseInfoId = inMaterialDetailDO.getMaterialBaseInfoId();
Long uniqueId = inMaterialDetailDO.getUniqueId();
String shelfJson = inMaterialDetailDO.getShelfJson();
List<Map<String, Object>> shelfList = JSON.parseObject(shelfJson, new TypeReference<List<Map<String, Object>>>(){});
StockInOrder stockInOrder = stockInOrderService.getOne(new QueryWrapper<StockInOrder>().lambda()
.eq(StockInOrder::getInOrderNumber, inOrderNumber)
.eq(StockInOrder::getDelFlag, 1), false);
if (stockInOrder != null) {
stockInOrder.setStatus(4);
stockInOrderService.updateById(stockInOrder);
}
int index=0;
for (Map<String, Object> stringObjectMap : shelfList) {
Object shelvesQuantityObj = stringObjectMap.get("shelvesQuantity");
BigDecimal shelvesQuantity = shelvesQuantityObj != null ? new BigDecimal(String.valueOf(shelvesQuantityObj)) : null;
String shelfOrderNumber = (String) stringObjectMap.get("shelfOrderNumber");
String warehouseCode = (String) stringObjectMap.get("warehouseCode");
String warehouseName = (String) stringObjectMap.get("warehouseName");
String storageCode = (String) stringObjectMap.get("storageCode");
String storageName = (String) stringObjectMap.get("storageName");
String storageLocationCode = (String) stringObjectMap.get("storageLocationCode");
String storageLocationName = (String) stringObjectMap.get("storageLocationName");
Object warehouseIdObj = stringObjectMap.get("warehouseId");
Long warehouseId = warehouseIdObj != null ? Long.valueOf(String.valueOf(warehouseIdObj)) : null;
Object storageSectionIdObj = stringObjectMap.get("storageSectionId");
Long storageSectionId = storageSectionIdObj != null ? Long.valueOf(String.valueOf(storageSectionIdObj)) : null;
Object storageLocationIdObj = stringObjectMap.get("storageLocationId");
Long storageLocationId = storageLocationIdObj != null ? Long.valueOf(String.valueOf(storageLocationIdObj)) : null;
// Integer level = (Integer) stringObjectMap.get("level");
// 如果 materialDetailId 不为空则更新上架单明细
// if (stringObjectMap.containsKey("materialDetailId")) {
// Long materialDetailId = (Long) stringObjectMap.get("materialDetailId");
// ShelfMaterialDetail detail = shelfMaterialDetailService.getById(materialDetailId);
// detail.setShelvesQuantity(shelvesQuantity);
// detail.setAlreadyShelvesQuantity(shelvesQuantity);
// detail.setWarehouseId(warehouseId);
// detail.setStorageSectionId(storageSectionId);
// detail.setStorageLocationId(storageLocationId);
// detail.setWarehouseCode(warehouseCode);
// detail.setWarehouseName(warehouseName);
// detail.setStorageCode(storageCode);
// detail.setStorageName(storageName);
// detail.setStorageLocationCode(storageLocationCode);
// detail.setStorageLocationName(storageLocationName);
// shelfMaterialDetailService.updateById(detail);
// continue;
// }
StockReceiptOrder stockReceiptOrder = stockReceiptOrderService.getOne(new LambdaUpdateWrapper<StockReceiptOrder>()
.eq(StockReceiptOrder::getInOrderNumber, inOrderNumber)
.eq(StockReceiptOrder::getDelFlag, 1), false);
// 如果 materialDetailId 为空则创建上架单明细
List<StockShelfOrder> list = stockShelfOrderService.list(new QueryWrapper<StockShelfOrder>().lambda()
.eq(StockShelfOrder::getInOrderNumber, inOrderNumber)
.eq(StockShelfOrder::getDelFlag, 1));
StockShelfOrder stockShelfOrder = new StockShelfOrder();
if (list!=null && list.size()>0) {
stockShelfOrder = list.get(0);
stockShelfOrder.setStatus(2);
stockShelfOrderService.updateById(stockShelfOrder);
} else {
throw new RuntimeException("未找到上架单!");
}
ShelfMaterialDetail one = shelfMaterialDetailService.getOne(new QueryWrapper<ShelfMaterialDetail>().lambda()
.eq(ShelfMaterialDetail::getMaterialBaseInfoId, materialBaseInfoId)
.eq(ShelfMaterialDetail::getInUniqueId, uniqueId)
.eq(ShelfMaterialDetail::getDelFlag, 1), false);
shelfMaterialDetailService.remove(new QueryWrapper<ShelfMaterialDetail>().lambda()
.eq(ShelfMaterialDetail::getLevel, 2)
.ne(ShelfMaterialDetail::getParentUniqueId, 0l)
.eq(ShelfMaterialDetail::getDelFlag, 1));
if (one != null) {
if (index == 0) {
one.setShelvesQuantity(shelvesQuantity);
one.setAlreadyShelvesQuantity(shelvesQuantity);
one.setWarehouseId(warehouseId);
one.setStorageSectionId(storageSectionId);
one.setStorageLocationId(storageLocationId);
one.setShelfOrderNumber(stockShelfOrder.getShelfOrderNumber());
one.setWarehouseCode(warehouseCode);
one.setWarehouseName(warehouseName);
one.setStorageCode(storageCode);
one.setStorageName(storageName);
one.setStorageLocationCode(storageLocationCode);
one.setStorageLocationName(storageLocationName);
one.setLevel(1);
one.setParentUniqueId(0l);
one.setShelvesStatus(3);
shelfMaterialDetailService.updateById(one);
stringObjectMap.put("materialDetailId", one.getMaterialDetailId());
stringObjectMap.put("level",1);
} else {
ShelfMaterialDetail shelfMaterialDetail = new ShelfMaterialDetail();
BeanUtils.copyProperties(one, shelfMaterialDetail);
shelfMaterialDetail.setQuantity(BigDecimal.ZERO);
shelfMaterialDetail.setShelvesQuantity(shelvesQuantity);
shelfMaterialDetail.setAlreadyShelvesQuantity(shelvesQuantity);
shelfMaterialDetail.setShelfOrderNumber(stockShelfOrder.getShelfOrderNumber());
shelfMaterialDetail.setWarehouseCode(warehouseCode);
shelfMaterialDetail.setWarehouseName(warehouseName);
shelfMaterialDetail.setStorageCode(storageCode);
shelfMaterialDetail.setStorageName(storageName);
shelfMaterialDetail.setStorageLocationCode(storageLocationCode);
shelfMaterialDetail.setStorageLocationName(storageLocationName);
shelfMaterialDetail.setStorageSectionId(storageSectionId);
shelfMaterialDetail.setStorageLocationId(storageLocationId);
shelfMaterialDetail.setLevel(2);
shelfMaterialDetail.setParentUniqueId(one.getUniqueId());
shelfMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
shelfMaterialDetail.setInUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
shelfMaterialDetail.setReceiptUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
shelfMaterialDetail.setShelvesStatus(3);
shelfMaterialDetail.setLotNumber(one.getLotNumber());
if (stockReceiptOrder!= null) {
shelfMaterialDetail.setBatchNo(stockReceiptOrder.getBatchNo());
}
shelfMaterialDetailService.save(shelfMaterialDetail);
stringObjectMap.put("materialDetailId", shelfMaterialDetail.getMaterialDetailId());
stringObjectMap.put("level",2 );
}
} else {
throw new RuntimeException("未找到上架单明细!");
}
index++;
}
InMaterialDetail inMaterialDetail = materialDetailService.getById(materialDetailId1);
inMaterialDetail.setShelfJson(JSON.toJSONString(shelfList));
materialDetailService.updateById(inMaterialDetail);
}
}
StockShelfOrder stockShelfOrder = stockShelfOrderService.getOne(new QueryWrapper<StockShelfOrder>().lambda()
.eq(StockShelfOrder::getInOrderNumber, inOrderNumber)
.eq(StockShelfOrder::getDelFlag, 1), false);
if (stockShelfOrder != null) {
String shelfOrderNumber = stockShelfOrder.getShelfOrderNumber();
List<ShelfMaterialDetail> list = shelfMaterialDetailService.list(new LambdaQueryWrapper<ShelfMaterialDetail>()
.eq(ShelfMaterialDetail::getShelfOrderNumber, shelfOrderNumber)
.eq(ShelfMaterialDetail::getDelFlag, 1));
if (list!=null&&list.size() > 0) {
BigDecimal quantity = BigDecimal.ZERO;
for (ShelfMaterialDetail shelfMaterialDetail : list) {
quantity = quantity.add(shelfMaterialDetail.getAlreadyShelvesQuantity());
}
stockShelfOrder.setShelvesQuantity(quantity);
stockShelfOrderService.updateById(stockShelfOrder);
}
}
return true;
}
/**
* @description 取消入库单
@@ -424,4 +424,14 @@ public class StockOutOrder extends BaseVOEntity {
@ApiModelProperty("推送人姓名")
private String pushByName;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
}
@@ -25,6 +25,7 @@ import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMap
import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO;
import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO;
import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO;
import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper;
@@ -61,6 +62,8 @@ public class ExcelParseService {
private StockOutOrderDomainService stockOutOrderDomainService;
@Autowired
private StockOutOrderMapper stockOutOrderMapper;
@Autowired
private StockInOrderMapper stockInOrderMapper;
@Resource
private UserServiceFeign userServiceFeign;
/**
@@ -114,6 +117,7 @@ public class ExcelParseService {
stockOutOrder.setWarehouseName(warehouseName);
stockOutOrder.setWarehouseCode(warehouseCode);
stockOutOrder.setWarehouseId(warehouseId);
stockOutOrder.setSalesmanId(String.valueOf(loginUser.getUserPo().getUserId()));
stockOutOrder.setSalesmanName(loginUser.getUserPo().getUserName());
String settlementCurrency = stockOutOrderMapper.getSettlementCurrency(shipperId);
@@ -124,6 +128,9 @@ public class ExcelParseService {
stockOutOrder.setOrganizationId(loginUser.getUserPo().getOrganizationId());
stockOutOrder.setOrganizationName(loginUser.getUserPo().getOrganizationName());
}
// 获取任务下发用户ID
String userId = stockInOrderMapper.queryWarehouseUserId(stockOutOrder.getOrganizationId(), stockOutOrder.getWarehouseId(), stockOutOrder.getTopOrganizationId());
stockOutOrder.setTaskIssueUserId(userId);
initParam(stockOutOrder);
// 导入出库单时如果出库单类型为空默认设置为普通出库
if (StringUtils.isBlank(stockOutOrder.getOrderTypeCode())) {
@@ -451,4 +451,13 @@ public class StockOutOrderPO extends BaseVOEntity {
@ApiModelProperty("推送人姓名")
private String pushByName;
private String khdm;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
}
@@ -492,4 +492,25 @@ public class StockOutOrderDO extends BaseVOEntity {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
//仓码pda查询参数
@ApiModelProperty("pda查询用户ID")
private Long queryUserId;
@ApiModelProperty("状态列表")
private List<Integer> statusList;
@ApiModelProperty("任务移除用户ID")
private String removeUserId;
}
@@ -19,12 +19,19 @@ import com.mhd.system.api.domain.BatchDetailFeignPO;
import com.mhd.system.api.domain.DeliveryDetailsLink;
import com.mhd.system.api.domain.PackDetailFeignPO;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.application.service.handoverTaskOrder.HandoverTaskOrderApplicationService;
import com.mhd.wms.application.service.pickingOrder.PickingOrderApplicationService;
import com.mhd.wms.application.service.reviewOrder.ReviewOrderApplicationService;
import com.mhd.wms.application.service.stockOutOrder.StockOutOrderApplicationService;
import com.mhd.wms.domain.copyCodeReference.repository.po.CopyCodeReferencePO;
import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
import com.mhd.wms.domain.deliveryDetailsLink.repository.facade.IDeliveryDetailsLinkService;
import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
import com.mhd.wms.domain.handoverTaskOrder.service.HandoverTaskOrderDomainService;
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
import com.mhd.wms.domain.inventoryAdjustmentRecord.entity.InventoryAdjustmentRecord;
@@ -68,8 +75,15 @@ import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService;
import com.mhd.wms.domain.pushSyncBms.PushSyncBmsDomainService;
import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO;
import com.mhd.wms.domain.replenishmentNotice.service.ReplenishmentNoticeDomainService;
import com.mhd.wms.domain.reviewOrder.entity.ReviewMaterialDetail;
import com.mhd.wms.domain.reviewOrder.entity.ReviewOrder;
import com.mhd.wms.domain.reviewOrder.repository.mapper.ReviewMaterialDetailMapper;
import com.mhd.wms.domain.reviewOrder.repository.mapper.ReviewOrderMapper;
import com.mhd.wms.domain.reviewOrder.repository.po.ReviewMaterialDetailPO;
import com.mhd.wms.domain.reviewOrder.repository.todo.ReviewOrderDO;
import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
@@ -112,6 +126,8 @@ public class StockOutOrderDomainService {
@Autowired
private IHandoverTaskOrderService handoverTaskOrderService;
@Autowired
private HandoverTaskOrderDomainService handoverTaskOrderDomainService;
@Autowired
private IOutOrderAbnormalService outOrderAbnormalService;
@Autowired
private PickingOrderDomainService pickingOrderDomainService;
@@ -149,6 +165,19 @@ public class StockOutOrderDomainService {
private IPickingMaterialDetailService pickingMaterialDetailService;
@Autowired
private IPickingOrderService pickingOrderService;
@Autowired
private StockInOrderMapper stockInOrderMapper;
@Autowired
private PickingOrderApplicationService pickingOrderApplicationService;
@Autowired
private HandoverTaskOrderApplicationService handoverTaskOrderApplicationService;
@Autowired
private ReviewOrderApplicationService reviewOrderApplicationService;
@Autowired
private ReviewOrderMapper reviewOrderMapper;
@Autowired
private ReviewMaterialDetailMapper reviewMaterialDetailMapper;
/**
* 分页查询出库单列表
*/
@@ -166,7 +195,7 @@ public class StockOutOrderDomainService {
//设置物料信息
//setMaterialDetailInfo(stockOutOrderDO);
//统计种类
//stockOutOrderDO.setMaterialQuantity(stockOutOrderDO.getMaterialDetailList().size());
stockOutOrderDO.setMaterialQuantity(stockOutOrderDO.getMaterialDetailList().size());
//统计总数量
BigDecimal quantity = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getOutboundQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
stockOutOrderDO.setQuantity(quantity);
@@ -864,6 +893,205 @@ public class StockOutOrderDomainService {
return inserted;
}
@Transactional(rollbackFor = Exception.class)
public Boolean adjustPicking(StockOutOrderDO stockOutOrderDO){
String outOrderNumber = stockOutOrderDO.getOutOrderNumber();
StockOutOrder stockOutOrder = stockOutOrderService.getOne(new LambdaQueryWrapper<StockOutOrder>()
.eq(StockOutOrder::getOutOrderNumber, outOrderNumber)
.eq(StockOutOrder::getDelFlag, 1), false);
stockOutOrder.setStatus(6);
stockOutOrder.setUpdateTime(new Date());
stockOutOrderService.updateById(stockOutOrder);
PickingOrder pickingOrder = pickingOrderService.getOne(new QueryWrapper<PickingOrder>().lambda()
.eq(PickingOrder::getOrderNumber, outOrderNumber)
.eq(PickingOrder::getDelFlag, 1), false);
if (pickingOrder == null) {
throw new RuntimeException("拣货单不存在!");
}
pickingOrder.setStatus(2);
pickingOrderService.updateById(pickingOrder);
//拣货任务下发
PickingOrderDO pickingOrderDO = new PickingOrderDO();
pickingOrderDO.setOperatorsBy(stockOutOrder.getWorkUserId());
List<Long> ids = new ArrayList<>();
ids.add(pickingOrder.getPickingOrderId());
pickingOrderDO.setPickingOrderIdList(ids);
// pickingOrderApplicationService.allDistribution(pickingOrderDO);
List<OutMaterialDetailDO> materialDetailList = stockOutOrderDO.getMaterialDetailList();
if (CollectionUtils.isEmpty(materialDetailList)) {
throw new RuntimeException("出库单明细不存在!");
}
List<OutMaterialDetailDO> pickingMaterialDetailList = materialDetailList.stream()
.filter(m -> m.getOutWeight() != null || m.getOutVolume() != null || m.getOutQuantity() != null)
.collect(Collectors.toList());
if (pickingMaterialDetailList != null && pickingMaterialDetailList.size() > 0) {
for (OutMaterialDetailDO outMaterialDetailDO : pickingMaterialDetailList) {
Long uniqueId = outMaterialDetailDO.getUniqueId();
BigDecimal outWeight = outMaterialDetailDO.getOutWeight();
BigDecimal outVolume = outMaterialDetailDO.getOutVolume();
BigDecimal outQuantity = outMaterialDetailDO.getOutQuantity();
PickingMaterialDetail pickingMaterialDetail = pickingMaterialDetailService.getOne(new QueryWrapper<PickingMaterialDetail>().lambda()
.eq(PickingMaterialDetail::getOutUniqueId, uniqueId)
.eq(PickingMaterialDetail::getDelFlag, 1), false);
if (pickingMaterialDetail != null) {
pickingMaterialDetail.setWeightLimit(outWeight);
pickingMaterialDetail.setTotalNetWeight(outWeight);
pickingMaterialDetail.setTotalGrossWeight(outVolume);
pickingMaterialDetail.setVolumeLimit(outVolume);
pickingMaterialDetail.setTotalVolume(outVolume);
pickingMaterialDetail.setPickingQuantity(outQuantity == null || outQuantity.compareTo(BigDecimal.ZERO) == 0 ? outMaterialDetailDO.getOutQuantity() : outQuantity);
pickingMaterialDetail.setAlreadyPickingQuantity(outQuantity == null || outQuantity.compareTo(BigDecimal.ZERO) == 0 ? outMaterialDetailDO.getOutQuantity() : outQuantity);
pickingMaterialDetailService.updateById(pickingMaterialDetail);
OutMaterialDetail outMaterialDetail = outMaterialDetailService.getOne(new LambdaQueryWrapper<OutMaterialDetail>()
.eq(OutMaterialDetail::getUniqueId, uniqueId)
.eq(OutMaterialDetail::getDelFlag, 1), false);
if (outMaterialDetail != null) {
outMaterialDetail.setOutWeight(outWeight);
outMaterialDetail.setOutVolume(outVolume);
outMaterialDetail.setOutQuantity(outQuantity == null || outQuantity.compareTo(BigDecimal.ZERO) == 0 ? outMaterialDetailDO.getOutQuantity() : outQuantity);
outMaterialDetailService.updateById(outMaterialDetail);
}
}
}
}
return Boolean.TRUE;
}
@Transactional(rollbackFor = Exception.class)
public Boolean checkUpload(StockOutOrderDO stockOutOrderDO){
String outOrderNumber = stockOutOrderDO.getOutOrderNumber();
StockOutOrder stockOutOrder = stockOutOrderService.getOne(new QueryWrapper<StockOutOrder>().lambda()
.eq(StockOutOrder::getOutOrderNumber, outOrderNumber)
.eq(StockOutOrder::getDelFlag, 1), false);
if (stockOutOrder == null) {
throw new RuntimeException("出库单不存在!");
}
PickingOrder pickingOrder = pickingOrderService.getOne(new QueryWrapper<PickingOrder>().lambda()
.eq(PickingOrder::getOrderNumber, outOrderNumber)
.eq(PickingOrder::getDelFlag, 1), false);
if (pickingOrder == null) {
throw new RuntimeException("拣货单不存在!");
}
PickingOrderDO pickingOrderDO = new PickingOrderDO();
pickingOrderDO.setType(1);
pickingOrderDO.setPickingOrderId(pickingOrder.getPickingOrderId());
pickingOrderDomainService.completePicking(pickingOrderDO);
DeliveTask pickdeliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, pickingOrder.getPickingOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (pickdeliveTask != null) {
pickdeliveTask.setOperatorsBy(stockOutOrder.getWorkUserId());
pickdeliveTask.setOperatorsName(stockOutOrder.getWorkUserName());
pickdeliveTask.setTaskStatus(2);
deliveTaskService.updateById(pickdeliveTask);
}
//复核
// ReviewOrderDO reviewOrderDO = new ReviewOrderDO();
// List<OutMaterialDetailDO> materialDetailList = stockOutOrderDO.getMaterialDetailList();
// if (materialDetailList != null && materialDetailList.size() > 0) {
// for (OutMaterialDetailDO outMaterialDetailDO : materialDetailList) {
// Long uniqueId = outMaterialDetailDO.getUniqueId();
// PickingMaterialDetail pickingMaterialDetail = pickingMaterialDetailService.getOne(new QueryWrapper<PickingMaterialDetail>().lambda()
// .eq(PickingMaterialDetail::getOutUniqueId, uniqueId)
// .eq(PickingMaterialDetail::getDelFlag, 1), false);
// if (pickingMaterialDetail != null) {
// outMaterialDetailDO.setActualQuantity(pickingMaterialDetail.getPickingQuantity());
// outMaterialDetailDO.setCheckArea(pickingMaterialDetail.getTotalArea());
// outMaterialDetailDO.setCheckVolume(pickingMaterialDetail.getTotalVolume());
// outMaterialDetailDO.setCheckNetWeight(pickingMaterialDetail.getTotalNetWeight());
// outMaterialDetailDO.setCheckGrossWeight(pickingMaterialDetail.getTotalGrossWeight());
// }
// }
// }
// stockOutOrderDO.setMaterialDetailList(materialDetailList);
// batchCheck(stockOutOrderDO);
// checkConfirm(stockOutOrderDO);
ReviewOrderDO cmd1 = new ReviewOrderDO();
List<ReviewOrder> reviewOrders = reviewOrderMapper.selectList(new QueryWrapper<ReviewOrder>().lambda()
.eq(ReviewOrder::getOutOrderId, stockOutOrderDO.getOutOrderId())
.eq(ReviewOrder::getDelFlag, 1));
if (reviewOrders != null && reviewOrders.size() > 0) {
ReviewOrder reviewOrder = reviewOrders.get(0);
BeanUtils.copyProperties(reviewOrder,cmd1);
List<ReviewMaterialDetailPO> details = new ArrayList<>();
List<OutMaterialDetailDO> materialDetailList = stockOutOrderDO.getMaterialDetailList();
// 将每个明细的children提取出来与父级合并为一个扁平list
List<OutMaterialDetailDO> flatMaterialDetailList = new ArrayList<>();
for (OutMaterialDetailDO detail : materialDetailList) {
flatMaterialDetailList.add(detail);
if (!CollectionUtils.isEmpty(detail.getChildren())) {
flatMaterialDetailList.addAll(detail.getChildren());
}
}
materialDetailList = flatMaterialDetailList;
for (OutMaterialDetailDO outMaterialDetailDO : materialDetailList) {
ReviewMaterialDetailPO detailPO = new ReviewMaterialDetailPO();
Long materialDetailId = outMaterialDetailDO.getMaterialDetailId();
ReviewMaterialDetail reviewMaterialDetailPO = reviewMaterialDetailMapper.selectOne(new QueryWrapper<ReviewMaterialDetail>().lambda()
.eq(ReviewMaterialDetail::getMaterialDetailId, materialDetailId)
.eq(ReviewMaterialDetail::getDelFlag, 1));
// reviewMaterialDetailPO.setReviewedQty(BigDecimal.ZERO);
reviewMaterialDetailPO.setReviewQtyEa(reviewMaterialDetailPO.getMaterialPlanQty());
reviewMaterialDetailPO.setVolumeCbm(outMaterialDetailDO.getOutVolume());
reviewMaterialDetailPO.setNetWeightKg(outMaterialDetailDO.getOutWeight());
reviewMaterialDetailPO.setGrossWeightKg(outMaterialDetailDO.getOutVolume());
BeanUtils.copyProperties(reviewMaterialDetailPO, detailPO);
details.add(detailPO);
}
cmd1.setDetails(details);
}
reviewOrderApplicationService.batchCheck(cmd1);
ReviewOrderDO cmd2 = new ReviewOrderDO();
cmd2.setReviewOrderId(cmd1.getReviewOrderId());
reviewOrderApplicationService.checkConfirm(cmd2);
DeliveTask reviewdeliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, cmd1.getReviewOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (reviewdeliveTask != null) {
reviewdeliveTask.setOperatorsBy(stockOutOrder.getWorkUserId());
reviewdeliveTask.setOperatorsName(stockOutOrder.getWorkUserName());
reviewdeliveTask.setTaskStatus(2);
deliveTaskService.updateById(reviewdeliveTask);
}
//交接
HandoverTaskOrder handoverTaskOrder = handoverTaskOrderService.getOne(new LambdaQueryWrapper<HandoverTaskOrder>()
.eq(HandoverTaskOrder::getOrderNumber, outOrderNumber)
.eq(HandoverTaskOrder::getDelFlag, 1));
if (handoverTaskOrder != null) {
//交接pda下发
HandoverTaskOrderDO handoverTaskOrderDO1 = new HandoverTaskOrderDO();
handoverTaskOrderDO1.setOperatorsBy(stockOutOrder.getWorkUserId());
List<Long> ids = new ArrayList<>();
ids.add(handoverTaskOrder.getHandoverTaskOrderId());
handoverTaskOrderDO1.setHandoverTaskOrderIds(ids);
DeliveTask deliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, handoverTaskOrder.getTaskNumber())
.eq(DeliveTask::getDelFlag, 1));
if (deliveTask != null) {
deliveTask.setOperatorsBy(stockOutOrder.getWorkUserId());
deliveTask.setOperatorsName(stockOutOrder.getWorkUserName());
deliveTask.setTaskStatus(2);
deliveTaskService.updateById(deliveTask);
}
// handoverTaskOrderApplicationService.taskDistribution(handoverTaskOrderDO1);
//完成交接
HandoverTaskOrderDO handoverTaskOrderDO = new HandoverTaskOrderDO();
List<Long> handoverTaskOrderId = new ArrayList<>();
handoverTaskOrderId.add(handoverTaskOrder.getHandoverTaskOrderId());
handoverTaskOrderDO.setHandoverTaskOrderIds(handoverTaskOrderId);
handoverTaskOrderDomainService.completeHandover(handoverTaskOrderDO);
}
return Boolean.TRUE;
}
@Transactional(rollbackFor = Exception.class)
public Boolean genPickingOrderByOms(StockOutOrderDO stockOutOrderDO){
List<StockOutOrder> stockOutOrderList = stockOutOrderService.list(new QueryWrapper<StockOutOrder>().lambda()
@@ -1569,9 +1797,9 @@ public class StockOutOrderDomainService {
if (stockOutOrderDb.getStatus() > 8){
throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】已出库,请重新选择");
}
if (stockOutOrderDb.getUpdateTime().compareTo(stockOutOrderDO.getUpdateTime()) != 0){
throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】数据已被更新,请刷新后重新进行收货");
}
// if (stockOutOrderDb.getUpdateTime().compareTo(stockOutOrderDO.getUpdateTime()) != 0){
// throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】数据已被更新,请刷新后重新进行收货");
// }
LoginUser loginUser = SecurityUtils.getLoginUser();
stockOutOrderService.update(null, new UpdateWrapper<StockOutOrder>().lambda()
.set(StockOutOrder::getCheckStatus, 2)
@@ -1986,6 +2214,9 @@ public class StockOutOrderDomainService {
private static final String OMS_AUTO_AUDIT_REMARK = "OMS下发自动审核";
public void omsOrderAdd(StockOutOrder stockOutOrder) {
// 任务下发用户id
String userId = stockInOrderMapper.queryWarehouseUserId(stockOutOrder.getOrganizationId(), stockOutOrder.getWarehouseId(), stockOutOrder.getTopOrganizationId());
stockOutOrder.setTaskIssueUserId(userId);
stockOutOrderService.save(stockOutOrder);
}
@@ -401,4 +401,8 @@ public class InMaterialDetailDTO extends BaseVOEntity {
private BigDecimal erpPriceGw;
//申报总价
private BigDecimal amountGw;
//仓码简易模式收货上架
private BigDecimal collectQuantity;
private String shelfJson;
}
@@ -506,4 +506,16 @@ public class OutMaterialDetailDTO extends BaseVOEntity {
private String bondInvtNoGw;
private String whNoGw;
private String seatNoGw;
//仓码简易模式
@ApiModelProperty("出库重量")
@Excel(name = "出库重量")
private BigDecimal outWeight;
@ApiModelProperty("出库体积")
@Excel(name = "出库体积")
private BigDecimal outVolume;
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outQuantity;
}
@@ -426,4 +426,23 @@ public class StockInOrderDTO extends StockInOrderBaseDTO {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
//仓码pda查询参数
@ApiModelProperty("pda查询用户ID")
private Long queryUserId;
@ApiModelProperty("状态列表")
private List<Integer> statusList;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
@ApiModelProperty("任务移除用户ID")
private String removeUserId;
}
@@ -484,4 +484,22 @@ public class StockOutOrderDTO extends StockOutOrderBaseDTO {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
//仓码pda查询参数
@ApiModelProperty("pda查询用户ID")
private Long queryUserId;
@ApiModelProperty("状态列表")
private List<Integer> statusList;
@ApiModelProperty("任务移除用户ID")
private String removeUserId;
}
@@ -1,6 +1,7 @@
package com.mhd.wms.interfaces.facadeApi.stockInOrder;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.utils.bean.BeanUtils;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.common.core.exception.ServiceException;
@@ -8,12 +9,15 @@ import com.mhd.common.core.utils.StringUtils;
import com.mhd.wms.application.service.stockInOrder.StockInOrderApplicationService;
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO;
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO;
import com.mhd.wms.interfaces.assember.stockInOrder.StockInOrderAssembler;
import com.mhd.wms.interfaces.assember.stockOutOrder.StockOutOrderAssembler;
import com.mhd.wms.interfaces.dto.inMaterialDetail.InMaterialDetailDTO;
import com.mhd.wms.interfaces.dto.stockInOrder.StockInOrderDTO;
import com.mhd.wms.interfaces.dto.stockOutOrder.StockOutOrderDTO;
import io.swagger.annotations.ApiOperation;
@@ -22,6 +26,8 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -172,6 +178,87 @@ public class StockInOrderApi extends BaseController {
stockInOrderApplicationService.omsOrderAdd(stockInOrder);
}
/**
* oms下发单保存
*/
@ApiOperation("pda接收任务")
@PostMapping(value = "/acceptTask")
public AjaxResult acceptTask(@RequestBody StockInOrder stockInOrder) {
stockInOrderApplicationService.acceptTask(stockInOrder);
return AjaxResult.success();
}
/**
* oms下发单保存
*/
@ApiOperation("pda取消接收任务")
@PostMapping(value = "/removeTask")
public AjaxResult removeTask(@RequestBody StockInOrderDO stockInOrderDO) {
stockInOrderApplicationService.removeTask(stockInOrderDO);
return AjaxResult.success();
}
/**
* 审核入库单
*/
@ApiOperation("pda简易模式收货")
@PostMapping(value = "/receiptEasyMode")
public AjaxResult receiptEasyMode(@RequestBody StockInOrderDTO stockInOrderDTO) {
StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
List<InMaterialDetailDTO> materialDetailList = stockInOrderDTO.getMaterialDetailList();
if (materialDetailList != null && !materialDetailList.isEmpty()) {
List<InMaterialDetailDO> inMaterialDetailDOList = new ArrayList<>();
for (InMaterialDetailDTO dto : materialDetailList) {
InMaterialDetailDO detailDO = new InMaterialDetailDO();
BeanUtils.copyProperties(dto, detailDO);
inMaterialDetailDOList.add(detailDO);
}
stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList);
}
return AjaxResult.success(stockInOrderApplicationService.receiptEasyMode(stockInOrderDO));
}
@ApiOperation("pda简易模式修改计划数量")
@GetMapping(value = "/updateQuantity")
public AjaxResult updateQuantity(@RequestParam BigDecimal quantity,
@RequestParam Long materialDetailId,
@RequestParam BigDecimal area,
@RequestParam BigDecimal volume
,@RequestParam BigDecimal weight) {
return AjaxResult.success(stockInOrderApplicationService.updateQuantity(quantity, materialDetailId, area, volume, weight));
}
/**
* 审核入库单
*/
@ApiOperation("pda简易模式上架")
@PostMapping(value = "/shelfEasyMode")
public AjaxResult shelfEasyMode(@RequestBody StockInOrderDTO stockInOrderDTO) {
StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
List<InMaterialDetailDTO> materialDetailList = stockInOrderDTO.getMaterialDetailList();
if (materialDetailList != null && !materialDetailList.isEmpty()) {
List<InMaterialDetailDO> inMaterialDetailDOList = new ArrayList<>();
for (InMaterialDetailDTO dto : materialDetailList) {
InMaterialDetailDO detailDO = new InMaterialDetailDO();
BeanUtils.copyProperties(dto, detailDO);
inMaterialDetailDOList.add(detailDO);
}
stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList);
}
return AjaxResult.success(stockInOrderApplicationService.shelfEasyMode(stockInOrderDO));
}
/**
* 审核入库单
*/
@ApiOperation("pda简易模式核对上传")
@PostMapping(value = "/checkUploadEasyMode")
public AjaxResult checkUploadEasyMode(@RequestBody StockInOrderDTO stockInOrderDTO) {
StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
return AjaxResult.success(stockInOrderApplicationService.checkUploadEasyMode(stockInOrderDO));
}
/**
* oms下发单明细保存
*/
@@ -18,6 +18,7 @@ import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail;
import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO;
import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
import com.mhd.wms.domain.stockOutOrder.repository.listener.ExcelParseService;
@@ -346,6 +347,29 @@ public class StockOutOrderApi extends BaseController {
return toAjax(stockOutOrderApplicationService.genPickingOrder(stockOutOrderDO));
}
/**
* 生成拣货单
*/
@ApiOperation("简易模式拣货")
@PostMapping("/adjustPicking")
public AjaxResult adjustPicking(@RequestBody StockOutOrderDTO stockOutOrderDTO) {
StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class);
return toAjax(stockOutOrderApplicationService.adjustPicking(stockOutOrderDO));
}
/**
* 生成拣货单
*/
@ApiOperation("简易核对上传")
@PostMapping("/checkUpload")
public AjaxResult checkUpload(@RequestBody StockOutOrderDTO stockOutOrderDTO) {
StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class);
return toAjax(stockOutOrderApplicationService.checkUpload(stockOutOrderDO));
}
/**
* 生成拣货单
*/
@@ -464,6 +488,26 @@ public class StockOutOrderApi extends BaseController {
stockOutOrderApplicationService.omsOrderAdd(stockOutOrder);
}
/**
* oms下发单保存
*/
@ApiOperation("pda接收任务")
@PostMapping(value = "/acceptTask")
public AjaxResult acceptTask(@RequestBody StockOutOrder stockOutOrder) {
stockOutOrderApplicationService.acceptTask(stockOutOrder);
return AjaxResult.success();
}
/**
* oms下发单保存
*/
@ApiOperation("pda取消接收任务")
@PostMapping(value = "/removeTask")
public AjaxResult removeTask(@RequestBody StockOutOrderDO stockOutOrderDO) {
stockOutOrderApplicationService.removeTask(stockOutOrderDO);
return AjaxResult.success();
}
/**
* oms下发单明细保存
*/