Browse Source

[feat]

仓库管理 入库单
修改退料入库页面,新增隐藏字段入库单类型;
修改退料入库controller接口,根据退料入库不同类型调用不同入库方法;
新增员工退料入库service方法,修改更新退料单库存查询service方法,添加员工退料和委外退料类型入库处理;
dev
王晓迪 2 months ago
parent
commit
b304dfb659
  1. 5
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java
  2. 5
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java
  3. 161
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java
  4. 1
      ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageReturnOrder.html

5
ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseStorageOrderController.java

@ -695,7 +695,12 @@ public class WarehouseStorageOrderController extends BaseController
@ResponseBody @ResponseBody
public AjaxResult storageReturnOrderSave(@RequestBody WarehouseStorageOrder warehouseStorageOrder) public AjaxResult storageReturnOrderSave(@RequestBody WarehouseStorageOrder warehouseStorageOrder)
{ {
String storageOrderType = warehouseStorageOrder.getWarehouseOrderType();
if(storageOrderType.equals("6")){//生产退料单
return toAjax(warehouseStorageOrderService.updateReturnOrder(warehouseStorageOrder)); return toAjax(warehouseStorageOrderService.updateReturnOrder(warehouseStorageOrder));
}else {//其他退料单
return toAjax(warehouseStorageOrderService.updateBaseReturnOrder(warehouseStorageOrder));
}
} }

5
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseStorageOrderService.java

@ -103,7 +103,7 @@ public interface IWarehouseStorageOrderService
* */ * */
int temporaryOutsourceSave(WarehouseStorageOrder warehouseStorageOrder); int temporaryOutsourceSave(WarehouseStorageOrder warehouseStorageOrder);
@Transactional(rollbackFor = Exception.class)
int updateOutsourceStorageSave(WarehouseStorageOrder warehouseStorageOrder); int updateOutsourceStorageSave(WarehouseStorageOrder warehouseStorageOrder);
/** /**
@ -145,4 +145,7 @@ public interface IWarehouseStorageOrderService
List<WarehouseStorageOrder> selectStorageOrderListByCodes(String[] ids); List<WarehouseStorageOrder> selectStorageOrderListByCodes(String[] ids);
int updateReturnOrder(WarehouseStorageOrder warehouseStorageOrder); int updateReturnOrder(WarehouseStorageOrder warehouseStorageOrder);
//入库-员工退料单
int updateBaseReturnOrder(WarehouseStorageOrder warehouseStorageOrder);
} }

161
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java

@ -126,6 +126,15 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
@Autowired @Autowired
private MakeReturnOrderDetailMapper returnOrderDetailMapper; private MakeReturnOrderDetailMapper returnOrderDetailMapper;
@Autowired
private BaseReturnOrderMapper baseReturnOrderMapper;
@Autowired
private BaseReturnOrderDetailMapper baseReturnOrderDetailMapper;
@Autowired
private OutsourceRequisitionMapper outsourceRequisitionMapper;
@Autowired @Autowired
private SysMakeorderPickDetailMapper makeorderPickDetailMapper; private SysMakeorderPickDetailMapper makeorderPickDetailMapper;
@ -1467,7 +1476,7 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
return warehouseStorageOrderMapper.selectStorageOrderListByCodes(ids); return warehouseStorageOrderMapper.selectStorageOrderListByCodes(ids);
} }
//入库-退料单 //入库-生产退料单
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public int updateReturnOrder(WarehouseStorageOrder warehouseStorageOrder) { public int updateReturnOrder(WarehouseStorageOrder warehouseStorageOrder) {
@ -1574,6 +1583,110 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
} }
//入库-员工退料单
@Transactional(rollbackFor = Exception.class)
@Override
public int updateBaseReturnOrder(WarehouseStorageOrder warehouseStorageOrder) {
String loginName = ShiroUtils.getLoginName();
String storageCode = warehouseStorageOrder.getWarehouseStorageCode();
String relatedOrderCode = warehouseStorageOrder.getRelatedOrderCode();
WarehouseStorageOrder oldStorageOrder = warehouseStorageOrderMapper.selectStorageOrderByCode(storageCode);
List<WarehouseStorageOrderDetail> warehouseStorageOrderDetailList = warehouseStorageOrder.getWarehouseStorageOrderDetailList();
if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){
log.warn("入库单详情数据为空:{}",warehouseStorageOrderDetailList);
throw new BusinessException("入库单详情数据为空");
}
//插入主表入库数量
int orderStorageNum = Optional.ofNullable(oldStorageOrder.getStorageNum())
.orElse(0);
int storageSum = warehouseStorageOrderDetailList.stream()
.mapToInt(WarehouseStorageOrderDetail::getStorageNum)
.sum();
storageSum = storageSum + orderStorageNum;
warehouseStorageOrder.setStorageNum(storageSum);
warehouseStorageOrder.setWarehouseStorageStatus("3");//部分入库
//品质合格数和总入库数相等,全部入库
int qualifiedNum = oldStorageOrder.getQualityQualifiedNum();
if(storageSum == qualifiedNum){
warehouseStorageOrder.setWarehouseStorageStatus("4");//全部入库
}
for (WarehouseStorageOrderDetail storageOrderDetail : warehouseStorageOrderDetailList) {
//更新入库单详情的数据
storageOrderDetail.setUpdateBy(loginName);
storageOrderDetail.setUpdateTime(DateUtils.getNowDate());
//更新已入库数
int hasStorageNum = Optional.ofNullable(storageOrderDetail.getHasStorageNum())
.orElse(0);
hasStorageNum = hasStorageNum + storageOrderDetail.getStorageNum();
storageOrderDetail.setHasStorageNum(hasStorageNum);
int updateWarehouseStorageOrderDetailResult = storageOrderDetailMapper.updateWarehouseStorageOrderDetail(storageOrderDetail);
if (updateWarehouseStorageOrderDetailResult <= 0){
throw new BusinessException("更新仓库入库单详情失败,未影响任何行");
}
WarehouseStorageOrderDetail updatedStorageDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(storageOrderDetail.getWarehouseStorageDetailId());
//更新库存查询
int inquiryUpdateResult = updateReturnInventoryInquiry(updatedStorageDetail);
if (inquiryUpdateResult <= 0){
throw new BusinessException("更新库存查询数据失败");
}
/*更新退料单详情已退料数*/
BaseReturnOrderDetail tempReturnDetail = new BaseReturnOrderDetail();
tempReturnDetail.setBaseReturnOrderCode(relatedOrderCode);
tempReturnDetail.setMaterialNo(storageOrderDetail.getMaterialNo());
BaseReturnOrderDetail returnOrderDetail = baseReturnOrderDetailMapper.selectBaseReturnOrderDetailList(tempReturnDetail).get(0);
int actualReturnNum = Optional.ofNullable(returnOrderDetail.getHasReturnNum()).orElse(0);
actualReturnNum = actualReturnNum + storageOrderDetail.getStorageNum();
returnOrderDetail.setHasReturnNum(actualReturnNum);
returnOrderDetail.setUpdateBy(loginName);
returnOrderDetail.setUpdateTime(DateUtils.getNowDate());
int returnDeUpdateResult = baseReturnOrderDetailMapper.updateBaseReturnOrderDetail(returnOrderDetail);
if (returnDeUpdateResult <= 0){
throw new BusinessException("更新退料单详情数据失败");
}
}
//更新退料单的数据
BaseReturnOrder baseReturnOrder = baseReturnOrderMapper.selectBaseReturnOrderByCode(relatedOrderCode);
//入库数
int returnStorageNum = Optional.ofNullable(baseReturnOrder.getStorageNum())
.orElse(0);
returnStorageNum = returnStorageNum + storageSum;
baseReturnOrder.setStorageNum(returnStorageNum);
int returnQualifiedNum = Optional.ofNullable(baseReturnOrder.getQualifiedNum())
.orElse(0);
int returnUnQualifiedNum = Optional.ofNullable(baseReturnOrder.getUnqualifiedNum())
.orElse(0);
int qualityNum = returnQualifiedNum + returnUnQualifiedNum;
/*退料状态*/
if(returnStorageNum < returnQualifiedNum){
baseReturnOrder.setReturnStatus("1");//部分退料
}else if(qualityNum < baseReturnOrder.getReturnSum()){//未品质完
baseReturnOrder.setReturnStatus("1");//部分退料
}else if(qualityNum == baseReturnOrder.getReturnSum() && returnStorageNum == returnQualifiedNum){
baseReturnOrder.setReturnStatus("2");//全部退料
}
baseReturnOrder.setUpdateBy(ShiroUtils.getLoginName());
baseReturnOrder.setUpdateTime(DateUtils.getNowDate());
int updateReturnOrderResult = baseReturnOrderMapper.updateBaseReturnOrder(baseReturnOrder);
if (updateReturnOrderResult <= 0){
throw new BusinessException("更新退料单数据失败");
}
//更新入库单的数据
warehouseStorageOrder.setStorageTime(DateUtils.getNowDate());
warehouseStorageOrder.setWarehouseEmployee(loginName);
warehouseStorageOrder.setUpdateBy(loginName);
warehouseStorageOrder.setUpdateTime(DateUtils.getNowDate());
int updateResult = warehouseStorageOrderMapper.updateWarehouseStorageOrder(warehouseStorageOrder);
if (updateResult <= 0){
throw new BusinessException("更新入库单数据失败,未影响任何行");
}
return updateResult;
}
/* /*
* 更新退料单库存查询*/ * 更新退料单库存查询*/
public int updateReturnInventoryInquiry(WarehouseStorageOrderDetail storageOrderDetail){ public int updateReturnInventoryInquiry(WarehouseStorageOrderDetail storageOrderDetail){
@ -1620,6 +1733,48 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
if(insertResult <=0){ if(insertResult <=0){
throw new BusinessException("新增库存查询履历失败"); throw new BusinessException("新增库存查询履历失败");
} }
}else if(returnOrderType.equals("4")||returnOrderType.equals("7")){//委外退料
BaseReturnOrder baseReturnOrder = baseReturnOrderMapper.selectBaseReturnOrderByCode(returnOrderCode);
String pickNo = baseReturnOrder.getPickNo();
/*获取领料单占用共享、固定库存数*/
if(pickNo.startsWith("WWLL")){
OutsourceRequisitionDetail tempOutPick = new OutsourceRequisitionDetail();
tempOutPick.setOutsourceRequisitionNo(pickNo);
tempOutPick.setMaterialNo(storageOrderDetail.getMaterialNo());
tempOutPick.setLevel(1);
List<OutsourceRequisitionDetail> pickDetails = outsourceRequisitionMapper.selectOutsourceRequisitionDetailList(tempOutPick);
sharedNum = Optional.ofNullable(pickDetails.get(0).getSharedStockNum())
.orElse(0);
}else if(pickNo.startsWith("YGLL")){
}
/*获取该领料单关联所有退料单详情实际总退料数,以便计算归还固定和共享库存数*/
BaseReturnOrderDetail tempReturnDetail = new BaseReturnOrderDetail();
tempReturnDetail.setPickNo(pickNo);
tempReturnDetail.setMaterialNo(materialNo);
List<BaseReturnOrderDetail> returnOrderDetails = baseReturnOrderDetailMapper.selectBaseReturnOrderDetailList(tempReturnDetail);
//总已入库数
allStorage = returnOrderDetails.stream().mapToInt(item -> item.getHasReturnNum()).sum();
/*新增库存查询历史*/
WarehouseInventoryInquiryDetail inquiryDetail = createMakeInOrderInquiryDetail(storageOrderDetail);
if(pickNo.startsWith("WWLL")){
inquiryDetail.setInquiryBusinessType("2");//委外
inquiryDetail.setInquiryOrderType("8");//订单类型-委外退料
inquiryDetail.setInquiryWarehouseType("8");//入库类型-委外退料
}else if(pickNo.startsWith("YGLL")){
inquiryDetail.setInquiryBusinessType("7");//员工服务
inquiryDetail.setInquiryOrderType("9");//订单类型-员工退料
inquiryDetail.setInquiryWarehouseType("9");//入库类型-员工退料
}
inquiryDetail.setIncreaseDecreaseNum(storageNum);
inquiryDetail.setCreateBy(loginName);
inquiryDetail.setCreateTime(DateUtils.getNowDate());
int insertResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if(insertResult <=0){
throw new BusinessException("新增库存查询履历失败");
}
} }
if(allStorage >= sharedNum){//总已入库数 >= 占用共享库存数,全部返还为固定 if(allStorage >= sharedNum){//总已入库数 >= 占用共享库存数,全部返还为固定
fixedReturnNum = storageNum; fixedReturnNum = storageNum;
@ -1640,14 +1795,18 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
.orElse(0); .orElse(0);
int sharedAvaliableNum = Optional.ofNullable(inquiry.getSharedAvailableStockNum()) int sharedAvaliableNum = Optional.ofNullable(inquiry.getSharedAvailableStockNum())
.orElse(0); .orElse(0);
int useNum = Optional.ofNullable(inquiry.getUseNum())
.orElse(0);
availableNum = availableNum + storageNum; availableNum = availableNum + storageNum;
fixedAvailableNum = fixedAvailableNum + fixedReturnNum; fixedAvailableNum = fixedAvailableNum + fixedReturnNum;
sharedAvaliableNum = sharedAvaliableNum + sharedReturnNum; sharedAvaliableNum = sharedAvaliableNum + sharedReturnNum;
useNum = useNum - storageNum;
inquiry.setAvailableStockNum(availableNum); inquiry.setAvailableStockNum(availableNum);
inquiry.setFixedAvailableStockNum(fixedAvailableNum); inquiry.setFixedAvailableStockNum(fixedAvailableNum);
inquiry.setSharedAvailableStockNum(sharedAvaliableNum); inquiry.setSharedAvailableStockNum(sharedAvaliableNum);
inquiry.setUseNum(useNum);
inquiry.setUpdateBy(ShiroUtils.getLoginName()); inquiry.setUpdateBy(ShiroUtils.getLoginName());
inquiry.setUpdateTime(DateUtils.getNowDate()); inquiry.setUpdateTime(DateUtils.getNowDate());

1
ruoyi-admin/src/main/resources/templates/warehouse/storageOrder/storageReturnOrder.html

@ -9,6 +9,7 @@
<div class="wrapper wrapper-content animated fadeInRight ibox-content"> <div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-storageOutsource-save" th:object="${warehouseStorageOrder}"> <form class="form-horizontal m" id="form-storageOutsource-save" th:object="${warehouseStorageOrder}">
<input name="warehouseStorageId" th:field="*{warehouseStorageId}" type="hidden"> <input name="warehouseStorageId" th:field="*{warehouseStorageId}" type="hidden">
<input name="warehouseOrderType" th:field="*{warehouseOrderType}" type="hidden">
<div class="form-group"> <div class="form-group">
<label class="col-sm-4 control-label">入库单号:</label> <label class="col-sm-4 control-label">入库单号:</label>
<div class="col-sm-8"> <div class="col-sm-8">

Loading…
Cancel
Save