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