PDA上架,复核拣货查询修改
This commit is contained in:
+60
-1
@@ -461,11 +461,13 @@ public class InvestigationManageApplicationService {
|
||||
}
|
||||
|
||||
/**
|
||||
* 按物料盘点 获取盘点单详细信息(动态返回物料绑定的批次属性)
|
||||
* 按物料盘点 获取盘点单详细信息(动态返回物料绑定的批次属性、监盘人、盘点进度)
|
||||
*/
|
||||
public InvestigationManagePO getInfoByMaterial(Long investigationManageId) {
|
||||
InvestigationManagePO po = investigationManageDomainService.getInfoByMaterial(investigationManageId);
|
||||
enrichInvestigationWithBatchAttributes(po);
|
||||
enrichInvestigationManName(po);
|
||||
enrichInvestigationProgress(po);
|
||||
return po;
|
||||
}
|
||||
|
||||
@@ -519,6 +521,63 @@ public class InvestigationManageApplicationService {
|
||||
setMaterialMoreDetailListFromInventory(detailList, batchDetailMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充监盘人姓名(investigationManName为空时根据investigationManBy从用户服务获取)
|
||||
*/
|
||||
private void enrichInvestigationManName(InvestigationManagePO po) {
|
||||
if (po == null) {
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isBlank(po.getInvestigationManName()) && po.getInvestigationManBy() != null) {
|
||||
try {
|
||||
AjaxResult ajaxResult = userServiceFeign.getInfo(po.getInvestigationManBy());
|
||||
if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) {
|
||||
UserPo userPo = JSON.parseObject(JSONObject.toJSONString(ajaxResult.get("data")), UserPo.class);
|
||||
if (userPo != null && StringUtils.isNotBlank(userPo.getUserName())) {
|
||||
po.setInvestigationManName(userPo.getUserName());
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.warn("获取监盘人姓名失败,investigationManBy={},错误:{}", po.getInvestigationManBy(), e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充盘点进度(investigationProgress=已盘点状态的库存数量/盘点单库存总数量)
|
||||
*/
|
||||
private void enrichInvestigationProgress(InvestigationManagePO po) {
|
||||
if (po == null || StringUtils.isBlank(po.getInvestigationNumber())) {
|
||||
return;
|
||||
}
|
||||
InvestigetionManageDetailDO queryDO = new InvestigetionManageDetailDO();
|
||||
queryDO.setInvestigationNumber(po.getInvestigationNumber());
|
||||
List<InvestigetionManageDetailPO> detailList = investigetionManageDetailDomainService.queryList(queryDO);
|
||||
if (CollectionUtils.isEmpty(detailList)) {
|
||||
po.setTotalInventoryQuantity(BigDecimal.ZERO);
|
||||
po.setInvestigatedInventoryQuantity(BigDecimal.ZERO);
|
||||
po.setInvestigationProgress(BigDecimal.ZERO);
|
||||
return;
|
||||
}
|
||||
BigDecimal totalQuantity = BigDecimal.ZERO;
|
||||
BigDecimal investigatedQuantity = BigDecimal.ZERO;
|
||||
for (InvestigetionManageDetailPO detail : detailList) {
|
||||
if (detail.getInventoryQuantity() != null) {
|
||||
totalQuantity = totalQuantity.add(detail.getInventoryQuantity());
|
||||
if (Integer.valueOf(4).equals(detail.getInvestigationStatus())) {
|
||||
investigatedQuantity = investigatedQuantity.add(detail.getInventoryQuantity());
|
||||
}
|
||||
}
|
||||
}
|
||||
po.setTotalInventoryQuantity(totalQuantity);
|
||||
po.setInvestigatedInventoryQuantity(investigatedQuantity);
|
||||
if (totalQuantity.compareTo(BigDecimal.ZERO) > 0) {
|
||||
po.setInvestigationProgress(investigatedQuantity.divide(totalQuantity, 4, RoundingMode.HALF_UP));
|
||||
} else {
|
||||
po.setInvestigationProgress(BigDecimal.ZERO);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 按物料分组 盘点
|
||||
* @author ZhouGY
|
||||
|
||||
+15
-2
@@ -1046,6 +1046,7 @@ public class StockReceiptOrderApplicationService {
|
||||
public Boolean receivingGoods(StockReceiptOrderDO stockReceiptOrderDO){
|
||||
//收货装配参数
|
||||
StockReceiptOrderDO assembleStockReceiptOrderDO = assembleParamByReceipt(stockReceiptOrderDO);
|
||||
assembleStockReceiptOrderDO.setFromPda(false); // PC收货完成,上架单是否下发=否
|
||||
return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO);
|
||||
}
|
||||
|
||||
@@ -1073,6 +1074,7 @@ public class StockReceiptOrderApplicationService {
|
||||
if (CollectionUtils.isEmpty(assembleStockReceiptOrderDO.getMaterialDetailList())) {
|
||||
throw new ServiceException("无有效收货数据,请确认已填写收货数量(收货数量不能全部为0)");
|
||||
}
|
||||
assembleStockReceiptOrderDO.setFromPda(true); // PDA收货完成,上架单是否下发=是
|
||||
return stockReceiptOrderDomainService.receivingGoods(assembleStockReceiptOrderDO);
|
||||
}
|
||||
|
||||
@@ -1154,14 +1156,25 @@ public class StockReceiptOrderApplicationService {
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 完成收货
|
||||
* @description 完成收货(PC端)
|
||||
* @author ZhouGY
|
||||
* @date 2024/5/22 16:20
|
||||
* @param receiptOrderId
|
||||
* @return Boolean
|
||||
*/
|
||||
public Boolean completeReceipt(Long receiptOrderId){
|
||||
return stockReceiptOrderDomainService.completeReceipt(receiptOrderId);
|
||||
return stockReceiptOrderDomainService.completeReceipt(receiptOrderId, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 完成收货(PDA端,上架单是否下发=是)
|
||||
* @author ZhouGY
|
||||
* @date 2024/5/22 16:20
|
||||
* @param receiptOrderId
|
||||
* @return Boolean
|
||||
*/
|
||||
public Boolean completeReceiptByApp(Long receiptOrderId){
|
||||
return stockReceiptOrderDomainService.completeReceipt(receiptOrderId, true);
|
||||
}
|
||||
|
||||
public Boolean genStockShelfOrder(Long receiptOrderId){
|
||||
|
||||
+3
@@ -166,4 +166,7 @@ public class StockReceiptOrderDO extends StockInOrderBaseDO {
|
||||
|
||||
@ApiModelProperty(name = "创建时间查询条件结束日期")
|
||||
private String createTimeEnd;
|
||||
|
||||
@ApiModelProperty("是否来自PDA收货:true-PDA收货完成,false-PC收货完成(用于上架单是否下发:PDA=是,PC=否)")
|
||||
private Boolean fromPda;
|
||||
}
|
||||
|
||||
+13
-9
@@ -624,7 +624,7 @@ public class StockReceiptOrderDomainService {
|
||||
long receiptMaterialQuantity = stockReceiptOrderDO.getMaterialDetailList().stream().filter(receiptMaterialDetailDO -> receiptMaterialDetailDO.getReceiptStatus() < 3).count();
|
||||
//收货数量大于等于计划数量 直接完成收货
|
||||
if (stockReceiptOrder.getReceiptQuantity().compareTo(stockReceiptOrderPO.getQuantity()) >= 0 && receiptMaterialQuantity == 0){
|
||||
completeReceipt(stockReceiptOrderPO.getReceiptOrderId());
|
||||
completeReceipt(stockReceiptOrderPO.getReceiptOrderId(), stockReceiptOrderDO.getFromPda());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -650,14 +650,15 @@ public class StockReceiptOrderDomainService {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param receiptOrderId
|
||||
* @param receiptOrderId 收货单ID
|
||||
* @param fromPda 是否来自PDA:true-PDA收货完成(上架单是否下发=是),false/null-PC收货完成(上架单是否下发=否)
|
||||
* @return Boolean
|
||||
* @description 完成收货
|
||||
* @author ZhouGY
|
||||
* @date 2024/5/22 16:20
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean completeReceipt(Long receiptOrderId) {
|
||||
public Boolean completeReceipt(Long receiptOrderId, Boolean fromPda) {
|
||||
StockReceiptOrderPO stockReceiptOrderPO = stockReceiptOrderService.getInfo(receiptOrderId);
|
||||
if (stockReceiptOrderPO == null) {
|
||||
throw new ServiceException("收货单不存在");
|
||||
@@ -677,8 +678,8 @@ public class StockReceiptOrderDomainService {
|
||||
if (stockReceiptOrderPO.getReceiptQuantity().compareTo(stockReceiptOrderPO.getQuantity()) != 0){
|
||||
abnormal = 1;
|
||||
}
|
||||
//根据收货数量生成上架
|
||||
genStockShelfOrder(stockReceiptOrderPO);
|
||||
//根据收货数量生成上架(PDA=是否下发是,PC=是否下发否)
|
||||
genStockShelfOrder(stockReceiptOrderPO, fromPda);
|
||||
|
||||
//生成上架单后,更新入库单状态为4(上架中)
|
||||
if (StringUtils.isNotBlank(stockReceiptOrderPO.getInOrderNumber())) {
|
||||
@@ -725,8 +726,8 @@ public class StockReceiptOrderDomainService {
|
||||
if (stockReceiptOrderPO == null) {
|
||||
throw new ServiceException("收货单不存在");
|
||||
}
|
||||
|
||||
return genStockShelfOrder(stockReceiptOrderPO);
|
||||
// 手动生成上架单:仅App(PDA)调用,是否下发=是
|
||||
return genStockShelfOrder(stockReceiptOrderPO, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -953,14 +954,15 @@ public class StockReceiptOrderDomainService {
|
||||
}
|
||||
|
||||
/**
|
||||
* @param stockReceiptOrderPO
|
||||
* @param stockReceiptOrderPO 收货单
|
||||
* @param fromPda 是否来自PDA:true-是否下发=是(1),false/null-是否下发=否(2)
|
||||
* @return Boolean
|
||||
* @description 生成上架单
|
||||
* @author ZhouGY
|
||||
* @date 2024/5/24 15:47
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean genStockShelfOrder(StockReceiptOrderPO stockReceiptOrderPO) {
|
||||
public Boolean genStockShelfOrder(StockReceiptOrderPO stockReceiptOrderPO, Boolean fromPda) {
|
||||
//构造上架单信息
|
||||
List<StockShelfOrderDO> stockShelfOrderDOList = new ArrayList<>();
|
||||
StockShelfOrderDO stockShelfOrderDO = new StockShelfOrderDO();
|
||||
@@ -1093,6 +1095,8 @@ public class StockReceiptOrderDomainService {
|
||||
stockShelfOrderDO.setReceiptQuantity(receiptQuantity);
|
||||
stockShelfOrderDO.setMaterialDetailList(shelfMaterialDetailDOList);
|
||||
stockShelfOrderDO.setMaterialQuantity(shelfMaterialDetailDOList.size());
|
||||
// PDA收货完成=是否下发是(1),PC收货完成=是否下发否(2)
|
||||
stockShelfOrderDO.setTaskDistribution(fromPda != null && fromPda ? 1 : 2);
|
||||
stockShelfOrderDOList.add(stockShelfOrderDO);
|
||||
return stockShelfOrderDomainService.genStockShelfOrder(stockShelfOrderDOList);
|
||||
}
|
||||
|
||||
+2
-2
@@ -162,8 +162,8 @@ public class StockShelfOrderDomainService {
|
||||
if (StringUtils.isBlank(stockShelfOrder.getShelfOrderNumber())){
|
||||
stockShelfOrder.setShelfOrderNumber(OrderSequence.getOrderCode("SJ"));
|
||||
}
|
||||
// 收货完成生成上架任务时,任务下发默认值为否(2-未下发),强制覆盖避免从收货单复制到错误值
|
||||
stockShelfOrder.setTaskDistribution(2);
|
||||
// PDA收货完成=是否下发是(1),PC收货完成/无单收货/整单收货=是否下发否(2),DO未设置时默认2
|
||||
stockShelfOrder.setTaskDistribution(stockShelfOrderDO.getTaskDistribution() != null ? stockShelfOrderDO.getTaskDistribution() : 2);
|
||||
stockShelfOrder.setCreateBy(loginUser.getUserid());
|
||||
stockShelfOrder.setCreateByName(userRealName);
|
||||
stockShelfOrder.setCreateTime(new Date());
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ public class StockReceiptOrderAppApi extends BaseController {
|
||||
@ApiOperation("完成收货")
|
||||
@PostMapping("/completeReceipt")
|
||||
public AjaxResult completeReceipt(@RequestBody StockReceiptOrderDTO stockReceiptOrderDTO) {
|
||||
return toAjax(stockReceiptOrderApplicationService.completeReceipt(stockReceiptOrderDTO.getReceiptOrderId()));
|
||||
return toAjax(stockReceiptOrderApplicationService.completeReceiptByApp(stockReceiptOrderDTO.getReceiptOrderId()));
|
||||
}
|
||||
|
||||
@ApiOperation("生成上架单")
|
||||
|
||||
@@ -29,6 +29,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="unitName" column="unit_name" />
|
||||
<result property="materialWarehouseControlId" column="material_warehouse_control_id" />
|
||||
<result property="serialNumberManage" column="serial_number_manage" />
|
||||
<result property="materialInventoryId" column="material_inventory_id" />
|
||||
<result property="warehouseId" column="warehouse_id" />
|
||||
<result property="warehouseCode" column="warehouse_code" />
|
||||
<result property="warehouseName" column="warehouse_name" />
|
||||
|
||||
Reference in New Issue
Block a user