Browse Source

Merge remote-tracking branch 'origin/dev' into dev

dev
王晓迪 3 months ago
parent
commit
63a5de13a2
  1. 6
      ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpMaterialController.java
  2. 5
      ruoyi-admin/src/main/java/com/ruoyi/erp/service/IErpMaterialService.java
  3. 45
      ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpMaterialServiceImpl.java
  4. 6
      ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseOrderMapper.java
  5. 5
      ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java
  6. 9
      ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java
  7. 14
      ruoyi-admin/src/main/java/com/ruoyi/system/domain/BaseRequisitioningOrderChild.java
  8. 7
      ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseRequisitioningOrderService.java
  9. 106
      ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseRequisitioningOrderServiceImpl.java
  10. 29
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseInventoryInquiryController.java
  11. 37
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiry.java
  12. 37
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseInventoryInquiryService.java
  13. 158
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryInquiryServiceImpl.java
  14. 284
      ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseStorageOrderServiceImpl.java
  15. 12
      ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml
  16. 10
      ruoyi-admin/src/main/resources/mapper/system/BaseRequisitioningOrderChildMapper.xml
  17. 5
      ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryDetailMapper.xml
  18. 17
      ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryMapper.xml
  19. 3
      ruoyi-admin/src/main/resources/templates/system/requisitioning/add.html
  20. 5
      ruoyi-admin/src/main/resources/templates/system/requisitioning/requisitioning.html
  21. 83
      ruoyi-admin/src/main/resources/templates/warehouse/inventoryInquiry/editAvailableStock.html
  22. 37
      ruoyi-admin/src/main/resources/templates/warehouse/inventoryInquiry/inventoryInquiry.html

6
ruoyi-admin/src/main/java/com/ruoyi/erp/controller/ErpMaterialController.java

@ -228,13 +228,15 @@ public class ErpMaterialController extends BaseController
if (processIsFinish) {
// 审核通过
erpMaterialVo.setAuditStatus("1");
//审核通过添加物料库存查询记录
erpMaterialService.addInventoryInquiry(erpMaterialVo);
// 提交
if("submit".equals(instanceType)){
//物料审核通过后,填写通过后库存物料信息初始化,填写对应的信息
// 使用状态-是
erpMaterialVo.setUseStatus("1");
//审核通过后添加库存物料信息
erpMaterialService.addStockMaterial(erpMaterialVo);
}
// 作废
else if("cancel".equals(instanceType)){

5
ruoyi-admin/src/main/java/com/ruoyi/erp/service/IErpMaterialService.java

@ -151,7 +151,10 @@ public interface IErpMaterialService
*/
public ProcessInstance submitApply(ErpMaterial erpMaterial);
Integer addStockMaterial(ErpMaterialVo erpMaterialVo);
/**
* 审核通过添加物料库存查询记录
* */
void addInventoryInquiry(ErpMaterialVo erpMaterialVo);
/**

45
ruoyi-admin/src/main/java/com/ruoyi/erp/service/impl/ErpMaterialServiceImpl.java

@ -754,31 +754,36 @@ public class ErpMaterialServiceImpl implements IErpMaterialService
}
/*审核通过添加库存物料信息*/
/**
*
* 审核通过添加物料库存查询记录
* */
@Override
@Transactional(rollbackFor = Exception.class)
public Integer addStockMaterial(ErpMaterialVo erpMaterialVo) {
public void addInventoryInquiry(ErpMaterialVo erpMaterialVo) {
String materialNo = erpMaterialVo.getMaterialNo();
ErpMaterialVo oldErpMaterialVo = erpMaterialMapper.selectErpMaterialByMaterialNo(materialNo);
WarehouseInventoryInquiry warehouseInventoryInquiry = new WarehouseInventoryInquiry();
warehouseInventoryInquiry.setMaterialNo(erpMaterialVo.getMaterialNo());
warehouseInventoryInquiry.setMaterialName(erpMaterialVo.getMaterialName());
warehouseInventoryInquiry.setMaterialDescribe(erpMaterialVo.getDescribe());
warehouseInventoryInquiry.setMaterialBrand(erpMaterialVo.getBrand());
warehouseInventoryInquiry.setMaterialProcessMethod(erpMaterialVo.getProcessMethod());
warehouseInventoryInquiry.setMaterialUnit(erpMaterialVo.getUnit());
warehouseInventoryInquiry.setMaterialPhotourl(erpMaterialVo.getPhotoUrl());
warehouseInventoryInquiry.setMaterialType(erpMaterialVo.getMaterialType());
warehouseInventoryInquiry.setMaterialNo(oldErpMaterialVo.getMaterialNo());
warehouseInventoryInquiry.setMaterialName(oldErpMaterialVo.getMaterialName());
warehouseInventoryInquiry.setMaterialDescribe(oldErpMaterialVo.getDescribe());
warehouseInventoryInquiry.setMaterialBrand(oldErpMaterialVo.getBrand());
warehouseInventoryInquiry.setMaterialProcessMethod(oldErpMaterialVo.getProcessMethod());
warehouseInventoryInquiry.setMaterialModel(oldErpMaterialVo.getMaterialModel());
warehouseInventoryInquiry.setMaterialUnit(oldErpMaterialVo.getUnit());
warehouseInventoryInquiry.setMaterialPhotourl(oldErpMaterialVo.getPhotoUrl());
warehouseInventoryInquiry.setMaterialType(oldErpMaterialVo.getMaterialType());
warehouseInventoryInquiry.setMaterialUseStatus(erpMaterialVo.getUseStatus());
warehouseInventoryInquiry.setWarehouseDept(erpMaterialVo.getWarehouseDept());
if(erpMaterialVo.getDescribe().contains(",")){
warehouseInventoryInquiry.setMaterialSpecification(erpMaterialVo.getDescribe().split(" ")[0]);
warehouseInventoryInquiry.setMaterialModel(erpMaterialVo.getDescribe().split(",")[1]);
}
String user = ShiroUtils.getLoginName();
warehouseInventoryInquiry.setCreateBy(user);
warehouseInventoryInquiry.setWarehouseDept(oldErpMaterialVo.getWarehouseDept());
String loginName = ShiroUtils.getLoginName();
warehouseInventoryInquiry.setCreateBy(loginName);
warehouseInventoryInquiry.setCreateTime(DateUtils.getNowDate());
warehouseInventoryInquiry.setUpdateBy(user);
warehouseInventoryInquiry.setUpdateTime(DateUtils.getNowDate());
return inventoryInquiryMapper.insertWarehouseInventoryInquiry(warehouseInventoryInquiry);
int insertResult = inventoryInquiryMapper.insertWarehouseInventoryInquiry(warehouseInventoryInquiry);
if (insertResult <= 0){
throw new BusinessException("添加物料库存查询记录失败");
}
}

6
ruoyi-admin/src/main/java/com/ruoyi/purchase/mapper/PurchaseOrderMapper.java

@ -36,6 +36,11 @@ public interface PurchaseOrderMapper
List<PurchaseOrder> selectAllPurchaseOrderList(PurchaseOrder purchaseOrder);
/**
* 通过采购订单编号查询采购订单集合
* */
List<PurchaseOrder> selectPurchaseOrderChildListByPurchaseCodeList(List<String> purchaseCodeList);
/**
* 通过采购订单号数组查询采购订单集合
@ -103,4 +108,5 @@ public interface PurchaseOrderMapper
//校验采购订单编号是否唯一
public Integer checkPurchaseOrderCodeUnique(String purchaseOrderCode);
}

5
ruoyi-admin/src/main/java/com/ruoyi/purchase/service/IPurchaseOrderService.java

@ -125,4 +125,9 @@ public interface IPurchaseOrderService
int addPurchaseStorageSave(PurchaseOrder purchaseOrder);
int detailSave(PurchaseOrder purchaseOrder);
/**
* 通过采购订单号集合查询采购订单集合
* */
List<PurchaseOrder> selectPurchaseOrderChildListByPurchaseCodeList(List<String> purchaseCodeList);
}

9
ruoyi-admin/src/main/java/com/ruoyi/purchase/service/impl/PurchaseOrderServiceImpl.java

@ -252,6 +252,15 @@ public class PurchaseOrderServiceImpl implements IPurchaseOrderService
return purchaseOrderList;
}
/**
* 通过采购订单号集合查询采购订单集合
* */
@Override
public List<PurchaseOrder> selectPurchaseOrderChildListByPurchaseCodeList(List<String> purchaseCodeList) {
List<PurchaseOrder> purchaseOrderList = purchaseOrderMapper.selectPurchaseOrderChildListByPurchaseCodeList(purchaseCodeList);
return purchaseOrderList;
}
/**
* 通过采购订单号数组查询采购订单集合
* */

14
ruoyi-admin/src/main/java/com/ruoyi/system/domain/BaseRequisitioningOrderChild.java

@ -72,7 +72,7 @@ public class BaseRequisitioningOrderChild extends BaseEntity
/** 物料的数量 */
@Excel(name = "物料的数量")
private Long materialNum;
private Integer materialNum;
/** 物料的不含税单价(RMB) */
@Excel(name = "物料的不含税单价(RMB)")
@ -217,8 +217,12 @@ public class BaseRequisitioningOrderChild extends BaseEntity
this.unit = unit;
}
public void setMaterialNum(Long materialNum)
{
public Integer getMaterialNum() {
return materialNum;
}
public void setMaterialNum(Integer materialNum) {
this.materialNum = materialNum;
}
@ -230,10 +234,6 @@ public class BaseRequisitioningOrderChild extends BaseEntity
this.warehouseDept = warehouseDept;
}
public Long getMaterialNum()
{
return materialNum;
}
public void setMaterialRmb(BigDecimal materialRmb)
{
this.materialRmb = materialRmb;

7
ruoyi-admin/src/main/java/com/ruoyi/system/service/IBaseRequisitioningOrderService.java

@ -102,6 +102,9 @@ public interface IBaseRequisitioningOrderService
Object getRequisitioningOrder();
/*生成采购计划*/
Integer generatePurchasePlan(BaseRequisitioningOrder baseRequisitioningOrder);
/**
*
* 请购单审核通过后生成采购计划
* */
void generatePurchasePlan(BaseRequisitioningOrder baseRequisitioningOrder);
}

106
ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/BaseRequisitioningOrderServiceImpl.java

@ -587,50 +587,76 @@ public class BaseRequisitioningOrderServiceImpl implements IBaseRequisitioningOr
}
}
/**
* 请购单审核通过后生成采购计划
* */
@Transactional(rollbackFor = Exception.class)
@Override
public Integer generatePurchasePlan(BaseRequisitioningOrder requisitioningOrder){
/*请购的物料信息,封装为采购计划需求的采购信息*/
public void generatePurchasePlan(BaseRequisitioningOrder requisitioningOrder){
String loginName = ShiroUtils.getLoginName();
List<BaseRequisitioningOrderChild> requisitioningOrderDetailList =
baseRequisitioningOrderChildMapper.selectBaseRequisitioningOrderChildByCode(requisitioningOrder.getRequisitioningCode());
//先将请购物料转换为采购物料需求
List<PurchasePlanChild> purchasePlanChildList = new ArrayList<>();
PurchasePlan purchasePlan = new PurchasePlan();
BigDecimal noRmbSum = BigDecimal.ZERO;
BigDecimal rmbSum = BigDecimal.ZERO;
Integer materialAmount = requisitioningOrderDetailList.size();
Long materialSum = 0L;
//采购计划关联单号
purchasePlan.setPurchasePlanCode(redisCache.generateBillNo("CGJH"));
purchasePlan.setPurchasePlanStatus("0");
purchasePlan.setCorrelationCode(requisitioningOrder.getRequisitioningCode());
purchasePlan.setPurchasePlanType("2");
purchasePlan.setMaterialSum(materialAmount);
for (BaseRequisitioningOrderChild requisitioningOrderDetail : requisitioningOrderDetailList) {
PurchasePlanChild purchasePlanChild = new PurchasePlanChild();
purchasePlanChild.setPurchasePlanCode(purchasePlan.getPurchasePlanCode());
purchasePlanChild.setWarehouseDept(requisitioningOrderDetail.getWarehouseDept());
purchasePlanChild.setMaterialNo(requisitioningOrderDetail.getMaterialCode());
purchasePlanChild.setMaterialName(requisitioningOrderDetail.getMaterialName());
purchasePlanChild.setMaterialDescribe(requisitioningOrderDetail.getDescribe());
purchasePlanChild.setMaterialBrand(requisitioningOrderDetail.getBrand());
purchasePlanChild.setMaterialUnit(requisitioningOrderDetail.getUnit());
purchasePlanChild.setMaterialPhotourl(requisitioningOrderDetail.getPhotoUrl());
purchasePlanChild.setMaterialProcessMethod(requisitioningOrderDetail.getProcessMethod());
// purchasePlanChild.setMaterialNum(Double.valueOf(requisitioningOrderDetail.getMaterialNum()));
purchasePlanChild.setMaterialType(requisitioningOrderDetail.getMaterialType());
purchasePlanChild.setMaterialNoRmbSum(requisitioningOrderDetail.getMaterialNoRmb());
purchasePlanChild.setMaterialRmbSum(requisitioningOrderDetail.getMaterialRmb());
// noRmbSum = noRmbSum.add(requisitioningOrderDetail.getMaterialNoRmb());
rmbSum = rmbSum.add(requisitioningOrderDetail.getMaterialRmbSum());
materialSum += requisitioningOrderDetail.getMaterialNum();
planChildMapper.insertPurchasePlanChild(purchasePlanChild);
purchasePlanChildList.add(purchasePlanChild);
//保留加工方式为采购的
requisitioningOrderDetailList = requisitioningOrderDetailList.stream().filter(item -> "0".equals(item.getProcessMethod())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(requisitioningOrderDetailList)){
int materialNumSum = requisitioningOrderDetailList.stream().mapToInt(BaseRequisitioningOrderChild::getMaterialNum).sum();
List<PurchasePlanChild> purchasePlanChildList = new ArrayList<>();
PurchasePlan purchasePlan = new PurchasePlan();
Integer materialAmount = requisitioningOrderDetailList.size();
String purchasePlanCode = redisCache.generateBillNo("CGJH");
//采购计划单号
purchasePlan.setPurchasePlanCode(purchasePlanCode);
for (BaseRequisitioningOrderChild requisitioningOrderDetail : requisitioningOrderDetailList) {
PurchasePlanChild purchasePlanChild = new PurchasePlanChild();
purchasePlanChild.setPurchasePlanCode(purchasePlanCode);
purchasePlanChild.setPurchasePlanStatus("0");
purchasePlanChild.setWarehouseDept(requisitioningOrderDetail.getWarehouseDept());
purchasePlanChild.setMaterialNo(requisitioningOrderDetail.getMaterialCode());
purchasePlanChild.setMaterialName(requisitioningOrderDetail.getMaterialName());
purchasePlanChild.setMaterialDescribe(requisitioningOrderDetail.getDescribe());
purchasePlanChild.setMaterialBrand(requisitioningOrderDetail.getBrand());
purchasePlanChild.setMaterialModel(requisitioningOrderDetail.getMaterialModel());
purchasePlanChild.setMaterialUnit(requisitioningOrderDetail.getUnit());
purchasePlanChild.setMaterialPhotourl(requisitioningOrderDetail.getPhotoUrl());
purchasePlanChild.setMaterialProcessMethod(requisitioningOrderDetail.getProcessMethod());
purchasePlanChild.setMaterialType(requisitioningOrderDetail.getMaterialType());
purchasePlanChild.setPlanPurchaseNum(requisitioningOrderDetail.getMaterialNum());
purchasePlanChild.setPurchaseNum(requisitioningOrderDetail.getMaterialNum());
purchasePlanChild.setCreateTime(new Date());
purchasePlanChild.setCreateBy(loginName);
purchasePlanChildList.add(purchasePlanChild);
}
int batchInsertPurchasePlanChildResult = planChildMapper.batchInsertPurchasePlanChild(purchasePlanChildList);
if (batchInsertPurchasePlanChildResult <= 0){
throw new BusinessException("插入采购计划子表数据失败");
}
purchasePlan.setPurchasePlanStatus("0");
purchasePlan.setCorrelationCode(requisitioningOrder.getRequisitioningCode());
purchasePlan.setPurchasePlanType("2");
purchasePlan.setMaterialSum(materialAmount);
purchasePlan.setPlanPurchaseSum(materialNumSum);
purchasePlan.setPurchaseSum(materialNumSum);
purchasePlan.setCreateBy(requisitioningOrder.getCreateBy());
purchasePlan.setApplyUser(requisitioningOrder.getApplyUser());
purchasePlan.setCreateTime(DateUtils.getNowDate());
int insertPurchasePlanResult = purchasePlanMapper.insertPurchasePlan(purchasePlan);
if (insertPurchasePlanResult <= 0){
throw new BusinessException("插入采购计划数据失败");
}
}
purchasePlan.setMaterialSum(Math.toIntExact(materialSum));
purchasePlan.setCreateBy(requisitioningOrder.getCreateBy());
purchasePlan.setApplyUser(requisitioningOrder.getApplyUser());
purchasePlan.setCreateTime(DateUtils.getNowDate());
return purchasePlanMapper.insertPurchasePlan(purchasePlan);
}
}

29
ruoyi-admin/src/main/java/com/ruoyi/warehouse/controller/WarehouseInventoryInquiryController.java

@ -1,10 +1,7 @@
package com.ruoyi.warehouse.controller;
import java.util.List;
import com.ruoyi.system.domain.OutsourceQuoteChild;
import com.ruoyi.warehouse.domain.WarehouseInventoryInquiryDetail;
import com.ruoyi.warehouse.domain.WarehouseInventoryReportDamage;
import com.ruoyi.warehouse.service.IWarehouseInventoryInquiryDetailService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
@ -163,4 +160,30 @@ public class WarehouseInventoryInquiryController extends BaseController
return getDataTable(list);
}
/**
* 修改可用库存
* */
@GetMapping("/editAvailableStock/{inventoryInquiryId}")
public String editAvailableStock(@PathVariable("inventoryInquiryId") Long inventoryInquiryId, ModelMap mmap)
{
WarehouseInventoryInquiry warehouseInventoryInquiry = warehouseInventoryInquiryService.showEditAvailableStock(inventoryInquiryId);
mmap.put("warehouseInventoryInquiry", warehouseInventoryInquiry);
return prefix + "/editAvailableStock";
}
/**
* 修改保存可用库存
*/
@RequiresPermissions("warehouse:inventoryInquiry:editAvailableStock")
@Log(title = "仓库库存查询", businessType = BusinessType.UPDATE)
@PostMapping("/editAvailableStock")
@ResponseBody
public AjaxResult editAvailableStockSave(WarehouseInventoryInquiry warehouseInventoryInquiry)
{
return toAjax(warehouseInventoryInquiryService.updateAvailableStock(warehouseInventoryInquiry));
}
}

37
ruoyi-admin/src/main/java/com/ruoyi/warehouse/domain/WarehouseInventoryInquiry.java

@ -85,6 +85,16 @@ public class WarehouseInventoryInquiry extends BaseEntity
@Excel(name = "可用库存数", sort = 9)
private Integer availableStockNum;
/** 未占用共享可用库存*/
private Integer noOccupancyNum;
/** 修改库存数量*/
private Integer editStockNum;
/** 修改类型(0增加固定可用库存、1减少固定可用库存)*/
private String inventoryEditType;
/** 物料归属可用库存数 */
// @Excel(name = "物料归属可用库存数")
private Integer attributionAvailableStockNum;
@ -262,6 +272,30 @@ public class WarehouseInventoryInquiry extends BaseEntity
this.availableStockNum = availableStockNum;
}
public Integer getNoOccupancyNum() {
return noOccupancyNum;
}
public void setNoOccupancyNum(Integer noOccupancyNum) {
this.noOccupancyNum = noOccupancyNum;
}
public Integer getEditStockNum() {
return editStockNum;
}
public void setEditStockNum(Integer editStockNum) {
this.editStockNum = editStockNum;
}
public String getInventoryEditType() {
return inventoryEditType;
}
public void setInventoryEditType(String inventoryEditType) {
this.inventoryEditType = inventoryEditType;
}
public Integer getAttributionAvailableStockNum() {
return attributionAvailableStockNum;
}
@ -352,6 +386,9 @@ public class WarehouseInventoryInquiry extends BaseEntity
.append("lockStockNum", getLockStockNum())
.append("stockLossesNum", getStockLossesNum())
.append("availableStockNum", getAvailableStockNum())
.append("noOccupancyNum", getNoOccupancyNum())
.append("editStockNum", getEditStockNum())
.append("inventoryEditType", getInventoryEditType())
.append("attributionAvailableStockNum", getAttributionAvailableStockNum())
.append("noattributionAvailableStockNum", getNoattributionAvailableStockNum())
.append("useNum", getUseNum())

37
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/IWarehouseInventoryInquiryService.java

@ -9,8 +9,7 @@ import com.ruoyi.warehouse.domain.WarehouseInventoryInquiry;
* @author 刘晓旭
* @date 2024-06-06
*/
public interface IWarehouseInventoryInquiryService
{
public interface IWarehouseInventoryInquiryService {
/**
* 查询仓库库存查询
*
@ -63,6 +62,7 @@ public interface IWarehouseInventoryInquiryService
/**
* 作废仓库库存查询
*
* @param inventoryInquiryId 仓库库存查询ID
* @return
*/
@ -70,13 +70,42 @@ public interface IWarehouseInventoryInquiryService
/**
* 恢复仓库库存查询
*
* @param inventoryInquiryId 仓库库存查询ID
* @return
*/
int restoreWarehouseInventoryInquiryById(Long inventoryInquiryId);
/*
* 根据物料号查询库存查询信息
* */
* 根据物料号查询库存查询信息
* */
public WarehouseInventoryInquiry selectWarehouseInventoryInquiryByMaterialNo(String materialNo);
/**
* 修改可用库存信息
*/
int updateAvailableStock(WarehouseInventoryInquiry warehouseInventoryInquiry);
/**
* 显示修改可用库存信息页面
*/
WarehouseInventoryInquiry showEditAvailableStock(Long inventoryInquiryId);
/**
* 计算可用库存数
* */
Integer calculateAvailableStockNum(String materialNo);
/**
* 计算共享可用库存数
* */
Integer calculateSharedAvailableStockNum(String materialNo);
/**
* 计算固定可用库存数
* */
Integer calculateFixedAvailableStockNum(String materialNo);
}

158
ruoyi-admin/src/main/java/com/ruoyi/warehouse/service/impl/WarehouseInventoryInquiryServiceImpl.java

@ -1,14 +1,25 @@
package com.ruoyi.warehouse.service.impl;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.ShiroUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.purchase.domain.PurchaseOrder;
import com.ruoyi.purchase.mapper.PurchaseOrderMapper;
import com.ruoyi.warehouse.domain.WarehouseInventoryInquiryDetail;
import com.ruoyi.warehouse.mapper.WarehouseInventoryInquiryDetailMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.warehouse.mapper.WarehouseInventoryInquiryMapper;
import com.ruoyi.warehouse.domain.WarehouseInventoryInquiry;
import com.ruoyi.warehouse.service.IWarehouseInventoryInquiryService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.util.CollectionUtils;
/**
* 仓库库存查询Service业务层处理
@ -22,6 +33,14 @@ public class WarehouseInventoryInquiryServiceImpl implements IWarehouseInventory
@Autowired
private WarehouseInventoryInquiryMapper warehouseInventoryInquiryMapper;
@Autowired
private WarehouseInventoryInquiryDetailMapper warehouseInventoryInquiryDetailMapper;
@Autowired
private PurchaseOrderMapper purchaseOrderMapper;
/**
* 查询仓库库存查询
*
@ -137,4 +156,143 @@ public class WarehouseInventoryInquiryServiceImpl implements IWarehouseInventory
return warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
}
/**
* 修改可用库存信息
* @param warehouseInventoryInquiry
* @return
*/
@Override
public int updateAvailableStock(WarehouseInventoryInquiry warehouseInventoryInquiry) {
if (StringUtils.isEmpty(warehouseInventoryInquiry.getInventoryEditType())){
throw new BusinessException("请选择修改类型");
}
Long inventoryInquiryId = warehouseInventoryInquiry.getInventoryInquiryId();
WarehouseInventoryInquiry oldWarehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryById(inventoryInquiryId);
if (warehouseInventoryInquiry.getInventoryEditType().equals("0")){
//增加固定可用库存 【共享可用库存】修改为【固定可用库存】
Integer editStockNum = warehouseInventoryInquiry.getEditStockNum();
Integer noOccupancyNum = warehouseInventoryInquiry.getNoOccupancyNum();
Integer fixedAvailableStockNum = warehouseInventoryInquiry.getFixedAvailableStockNum();
Integer sharedAvailableStockNum = oldWarehouseInventoryInquiry.getSharedAvailableStockNum();
if (editStockNum > noOccupancyNum){
editStockNum = sharedAvailableStockNum;
fixedAvailableStockNum += editStockNum;
sharedAvailableStockNum = 0;
}else {
sharedAvailableStockNum -= editStockNum;
fixedAvailableStockNum += editStockNum;
}
warehouseInventoryInquiry.setFixedAvailableStockNum(fixedAvailableStockNum);
warehouseInventoryInquiry.setSharedAvailableStockNum(sharedAvailableStockNum);
}else {
//减少固定可用库存 【固定可用库存】修改为【共享可用库存】
Integer editStockNum = warehouseInventoryInquiry.getEditStockNum();
Integer fixedAvailableStockNum = warehouseInventoryInquiry.getFixedAvailableStockNum();
Integer sharedAvailableStockNum = oldWarehouseInventoryInquiry.getSharedAvailableStockNum();
if (editStockNum > fixedAvailableStockNum){
editStockNum = fixedAvailableStockNum;
sharedAvailableStockNum += editStockNum;
fixedAvailableStockNum = 0;
}else {
fixedAvailableStockNum -= editStockNum;
sharedAvailableStockNum += editStockNum;
}
warehouseInventoryInquiry.setFixedAvailableStockNum(fixedAvailableStockNum);
warehouseInventoryInquiry.setSharedAvailableStockNum(sharedAvailableStockNum);
}
return warehouseInventoryInquiryMapper.updateWarehouseInventoryInquiry(warehouseInventoryInquiry);
}
/**
* 显示修改可用库存信息
* @param inventoryInquiryId
* @return
*/
@Override
public WarehouseInventoryInquiry showEditAvailableStock(Long inventoryInquiryId) {
WarehouseInventoryInquiry warehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryById(inventoryInquiryId);
String materialNo = warehouseInventoryInquiry.getMaterialNo();
List<WarehouseInventoryInquiryDetail> warehouseInventoryInquiryDetails = warehouseInventoryInquiryDetailMapper.selectWarehouseInventoryInquiryDetailByMaterialNo(materialNo);
//只保留采购订单
List<WarehouseInventoryInquiryDetail> filterInventoryInquiryDetails = warehouseInventoryInquiryDetails.stream().filter(item -> "0".equals(item.getInquiryBusinessType())).collect(Collectors.toList());
List<String> purchaseCodeList = filterInventoryInquiryDetails.stream().map(WarehouseInventoryInquiryDetail::getCorrelationCode).collect(Collectors.toList());
List<PurchaseOrder> purchaseOrders = purchaseOrderMapper.selectPurchaseOrderChildListByPurchaseCodeList(purchaseCodeList);
//审核中的采购订单
List<PurchaseOrder> filterPurchaseOrders = purchaseOrders.stream().filter(item -> "0".equals(item.getAuditStatus())).collect(Collectors.toList());
int sharedInventoryOccupancySum = filterPurchaseOrders.stream().mapToInt(PurchaseOrder::getSharedInventoryOccupancySum).sum();
Integer sharedAvailableStockNum = warehouseInventoryInquiry.getSharedAvailableStockNum();
Integer noOccupancyNum = 0;
if (sharedAvailableStockNum != null && sharedAvailableStockNum > sharedInventoryOccupancySum){
noOccupancyNum = sharedAvailableStockNum - sharedInventoryOccupancySum;
}else {
noOccupancyNum = 0;
}
warehouseInventoryInquiry.setNoOccupancyNum(noOccupancyNum);
return warehouseInventoryInquiry;
}
/**
* 计算可用库存数
* */
@Override
public Integer calculateAvailableStockNum(String materialNo){
//可用库存数=所有【库存履历增加】的数量-【锁定数】-【使用数】-【盘亏数】
WarehouseInventoryInquiry warehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
if (warehouseInventoryInquiry == null){
return 0;
}
List<WarehouseInventoryInquiryDetail> warehouseInventoryInquiryDetails = warehouseInventoryInquiryDetailMapper.selectWarehouseInventoryInquiryDetailByMaterialNo(materialNo);
List<WarehouseInventoryInquiryDetail> filterInventoryInquiryDetails = warehouseInventoryInquiryDetails.stream().filter(item -> "1".equals(item.getInventoryIncreaseDecrease())).collect(Collectors.toList());
int totalIncreaseDecreaseNum = CollectionUtils.isEmpty(filterInventoryInquiryDetails) ? 0 : filterInventoryInquiryDetails.stream().mapToInt(WarehouseInventoryInquiryDetail::getIncreaseDecreaseNum).sum();
Integer useNum = Optional.ofNullable(warehouseInventoryInquiry.getUseNum()).orElse(0);//使用数
Integer lockStockNum = Optional.ofNullable(warehouseInventoryInquiry.getLockStockNum()).orElse(0);//锁定数
Integer stockLossesNum = Optional.ofNullable(warehouseInventoryInquiry.getStockLossesNum()).orElse(0);//盘亏数
return totalIncreaseDecreaseNum - lockStockNum - useNum - stockLossesNum;
}
/**
* 计算共享可用库存数
* */
@Override
public Integer calculateSharedAvailableStockNum(String materialNo) {
return null;
}
/**
* 计算固定可用库存数
* */
@Override
public Integer calculateFixedAvailableStockNum(String materialNo) {
//【可用库存数】-【共享可用库存数】
return null;
}
}

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

@ -5,6 +5,7 @@ import java.util.Date;
import java.util.List;
import java.util.Optional;
import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.BusinessException;
import com.ruoyi.common.utils.DateUtils;
@ -16,8 +17,10 @@ import com.ruoyi.erp.mapper.ErpDevelopModifyorderMapper;
import com.ruoyi.erp.mapper.ErpMaterialMapper;
import com.ruoyi.purchase.domain.PurchaseOrder;
import com.ruoyi.purchase.domain.PurchaseOrderChild;
import com.ruoyi.purchase.domain.PurchasePlan;
import com.ruoyi.purchase.mapper.PurchaseOrderChildMapper;
import com.ruoyi.purchase.mapper.PurchaseOrderMapper;
import com.ruoyi.purchase.mapper.PurchasePlanMapper;
import com.ruoyi.quality.domain.QualityOrder;
import com.ruoyi.quality.domain.QualityOrderDetail;
import com.ruoyi.quality.domain.QualityRefundsExchanges;
@ -36,6 +39,7 @@ import com.ruoyi.system.service.ISysMakeOrderService;
import com.ruoyi.system.service.ISysSalesOrderService;
import com.ruoyi.warehouse.domain.*;
import com.ruoyi.warehouse.mapper.*;
import com.ruoyi.warehouse.service.IWarehouseInventoryInquiryService;
import lombok.extern.slf4j.Slf4j;
import org.activiti.editor.language.json.converter.util.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -91,6 +95,9 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
@Autowired
private WarehouseInventoryInquiryMapper warehouseInventoryInquiryMapper;
@Autowired
private IWarehouseInventoryInquiryService warehouseInventoryInquiryService;
@Autowired
private WarehouseInventoryInquiryDetailMapper inventoryInquiryDetailMapper;
@ -101,6 +108,9 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
@Autowired
private PurchaseOrderMapper purchaseOrderMapper;
@Autowired
private PurchasePlanMapper purchasePlanMapper;
@Autowired
private ErpMaterialMapper erpMaterialMapper;
@ -112,6 +122,10 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
@Autowired
private QualityRefundsExchangesMapper exchangesMapper;
@Autowired
private AfterSalesShippingDeviceMapper afterSalesShippingDeviceMapper;
/**
* 查询仓库入库单
*
@ -542,10 +556,8 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
}
WarehouseStorageOrderDetail updateStorageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(storageOrderDetail.getWarehouseStorageDetailId());
int inventoryInquiryResult = createWarehouseInventoryInquiry(updateStorageOrderDetail);
if (inventoryInquiryResult <= 0){
throw new BusinessException("更新/新增库存查询失败,未影响任何行");
}
createWarehouseInventoryInquiry(updateStorageOrderDetail);
}
//更新入库单的数据
@ -658,25 +670,23 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
throw new BusinessException("更新仓库入库单详情失败,未影响任何行");
}
WarehouseStorageOrderDetail storageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(warehouseStorageOrderDetail.getWarehouseStorageDetailId());
int inventoryInquiryResult = createWarehouseInventoryInquiry(storageOrderDetail);
if (inventoryInquiryResult <= 0){
throw new BusinessException("更新/新增库存查询失败,未影响任何行");
}
}
createWarehouseInventoryInquiry(storageOrderDetail);
//更新生产单数据
int updateMakeOrderResult = sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder,oldWarehouseStorageOrder, warehouseStorageOrderDetailList);
if (updateMakeOrderResult <= 0){
throw new BusinessException("更新生产订单失败,未影响任何行");
}
//更新开发修改单数据
String relatedOrderCode = warehouseStorageOrder.getRelatedOrderCode();
ErpDevelopModifyorder erpDevelopModifyorder = developModifyorderMapper.selectErpDevelopModifyorderByCode(relatedOrderCode);
if (erpDevelopModifyorder != null){
erpDevelopModifyorder.setPurchaseStorageStatus("8");
developModifyorderMapper.updateErpDevelopModifyorder(erpDevelopModifyorder);
}
// //更新生产单数据
// int updateMakeOrderResult = sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder,oldWarehouseStorageOrder, warehouseStorageOrderDetailList);
// if (updateMakeOrderResult <= 0){
// throw new BusinessException("更新生产订单失败,未影响任何行");
// }
//
// //更新开发修改单数据
// String relatedOrderCode = warehouseStorageOrder.getRelatedOrderCode();
// ErpDevelopModifyorder erpDevelopModifyorder = developModifyorderMapper.selectErpDevelopModifyorderByCode(relatedOrderCode);
// if (erpDevelopModifyorder != null){
// erpDevelopModifyorder.setPurchaseStorageStatus("8");
// developModifyorderMapper.updateErpDevelopModifyorder(erpDevelopModifyorder);
// }
if (warehouseStorageOrder.getStorageNum().equals(oldWarehouseStorageOrder.getTemporaryQualifiedNum())){
@ -708,29 +718,121 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
}
// 生成/修改库存查询
public int createWarehouseInventoryInquiry(WarehouseStorageOrderDetail warehouseStorageOrderDetail){
public void createWarehouseInventoryInquiry(WarehouseStorageOrderDetail warehouseStorageOrderDetail){
String materialNo = warehouseStorageOrderDetail.getMaterialNo();
String correlationCode = warehouseStorageOrderDetail.getRelatedOrderCode();
String storageCode = warehouseStorageOrderDetail.getWarehouseStorageCode();
WarehouseStorageOrder warehouseStorageOrder = warehouseStorageOrderMapper.selectWarehouseStorageOrderByCode(storageCode);
String warehouseStorageType = warehouseStorageOrder.getWarehouseStorageType();
if(warehouseStorageType.equals("0")) {
// 新增采购入库库存历史记录
// PurchaseOrder purchaseOrder = purchaseOrderMapper.selectPurchaseOrderByOrderCode()
List<PurchaseOrderChild> purchaseOrderChild = purchaseOrderChildMapper.selectPurchaseOrderChildByOrderCode(correlationCode);
for (PurchaseOrderChild child : purchaseOrderChild) {
if(child.getMaterialNo().equals(materialNo)){
int storageNum = warehouseStorageOrderDetail.getStorageNum();
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail = generateInquiryDetailByPurchaseChild(child,storageNum);
// inquiryDetail.setInventoryHistoricalType("0");
// if (correlationCode.startsWith("QG")) {
//// 有无归属分类
// }
inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
Integer storageNum = warehouseStorageOrderDetail.getStorageNum();
if("0".equals(warehouseStorageType)) {
// 新增采购入库库存历史记录
String purchasePlanCode = purchaseOrderMapper.selectPurchasePlanCodeByCode(correlationCode);
PurchasePlan purchasePlan = purchasePlanMapper.selectPurchasePlanByPlanCode(purchasePlanCode);
if ("2".equals(purchasePlan.getPurchasePlanType())){ //来源为请购单
List<PurchaseOrderChild> purchaseOrderChildList = purchaseOrderChildMapper.selectPurchaseOrderChildByOrderCode(correlationCode);
for (PurchaseOrderChild purchaseOrderChild : purchaseOrderChildList) {
if(purchaseOrderChild.getMaterialNo().equals(materialNo)){
WarehouseInventoryInquiry oldWarehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
Integer historicalTotal = oldWarehouseInventoryInquiry.getHistoricalTotal();
historicalTotal += storageNum;
oldWarehouseInventoryInquiry.setHistoricalTotal(historicalTotal);
Integer availableStockNum = oldWarehouseInventoryInquiry.getAvailableStockNum();
if (availableStockNum == null || availableStockNum == 0){
availableStockNum = storageNum;
}else {
availableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setAvailableStockNum(availableStockNum);
// Integer oldAvailableStockNum = warehouseInventoryInquiryService.calculateAvailableStockNum(materialNo);
// oldWarehouseInventoryInquiry.setAvailableStockNum(oldAvailableStockNum + storageNum); //加上本次入库的数量
Integer sharedAvailableStockNum = oldWarehouseInventoryInquiry.getSharedAvailableStockNum();//共享可用库存
if (sharedAvailableStockNum == null || sharedAvailableStockNum == 0){
sharedAvailableStockNum = storageNum;
}else {
sharedAvailableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setSharedAvailableStockNum(sharedAvailableStockNum);
Integer oldAvailableStockNum = oldWarehouseInventoryInquiry.getAvailableStockNum();
oldWarehouseInventoryInquiry.setFixedAvailableStockNum(oldAvailableStockNum - sharedAvailableStockNum); //固定可用库存
int updateResult = warehouseInventoryInquiryService.updateWarehouseInventoryInquiry(oldWarehouseInventoryInquiry);
if (updateResult <= 0){
throw new BusinessException("更新库存查询记录失败!");
}
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(materialNo);
inquiryDetail.setInquiryWarehouseType("0");//采购入库
inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate());
inquiryDetail.setInquiryOrderType("0");
inquiryDetail.setInquiryBusinessType("0");
inquiryDetail.setCorrelationCode(storageCode);
inquiryDetail.setIncreaseDecreaseNum(warehouseStorageOrderDetail.getStorageNum());
inquiryDetail.setInventoryIncreaseDecrease("1");
int insertDetailResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if (insertDetailResult <= 0){
throw new BusinessException("新增库存履历失败!");
}
}
}
}else if ("1".equals(purchasePlan.getPurchasePlanType())){ //生产订单
List<PurchaseOrderChild> purchaseOrderChildList = purchaseOrderChildMapper.selectPurchaseOrderChildByOrderCode(correlationCode);
for (PurchaseOrderChild purchaseOrderChild : purchaseOrderChildList) {
if (purchaseOrderChild.getMaterialNo().equals(materialNo)) {
WarehouseInventoryInquiry oldWarehouseInventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
Integer historicalTotal = oldWarehouseInventoryInquiry.getHistoricalTotal();
historicalTotal += storageNum;
oldWarehouseInventoryInquiry.setHistoricalTotal(historicalTotal);
Integer availableStockNum = oldWarehouseInventoryInquiry.getAvailableStockNum();
if (availableStockNum == null || availableStockNum == 0){
availableStockNum = storageNum;
}else {
availableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setAvailableStockNum(availableStockNum);
// Integer oldAvailableStockNum = warehouseInventoryInquiryService.calculateAvailableStockNum(materialNo);
// oldWarehouseInventoryInquiry.setAvailableStockNum(oldAvailableStockNum + storageNum); //加上本次入库的数量
Integer sharedAvailableStockNum = oldWarehouseInventoryInquiry.getSharedAvailableStockNum();//共享可用库存
if (sharedAvailableStockNum == null || sharedAvailableStockNum == 0){
sharedAvailableStockNum = storageNum;
}else {
sharedAvailableStockNum += storageNum;
}
oldWarehouseInventoryInquiry.setSharedAvailableStockNum(sharedAvailableStockNum);
Integer oldAvailableStockNum = oldWarehouseInventoryInquiry.getAvailableStockNum();
oldWarehouseInventoryInquiry.setFixedAvailableStockNum(oldAvailableStockNum - sharedAvailableStockNum); //固定可用库存
int updateResult = warehouseInventoryInquiryService.insertWarehouseInventoryInquiry(oldWarehouseInventoryInquiry);
if (updateResult <= 0) {
throw new BusinessException("更新库存查询记录失败!");
}
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail.setMaterialNo(materialNo);
inquiryDetail.setInquiryWarehouseType("0");//采购入库
inquiryDetail.setInventoryHistoricalTime(DateUtils.getNowDate());
inquiryDetail.setInquiryOrderType("0");
inquiryDetail.setInquiryBusinessType("0");
inquiryDetail.setCorrelationCode(storageCode);
inquiryDetail.setIncreaseDecreaseNum(warehouseStorageOrderDetail.getStorageNum());
inquiryDetail.setInventoryIncreaseDecrease("1");
int insertDetailResult = inventoryInquiryDetailMapper.insertWarehouseInventoryInquiryDetail(inquiryDetail);
if (insertDetailResult <= 0) {
throw new BusinessException("新增库存履历失败!");
}
}
}
}
}else if(warehouseStorageType.equals("5")){//新增生产入库库存历史记录
WarehouseInventoryInquiryDetail inquiryDetail = new WarehouseInventoryInquiryDetail();
inquiryDetail = createMakeInOrderInquiryDetail(warehouseStorageOrderDetail);
@ -751,48 +853,48 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
scrapSum += scrapSum;
}
}
// 存在库存查询记录,更新可用库存数
if(warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo)!=null){
WarehouseInventoryInquiry inventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
// 增加可用库存数
Integer storage = warehouseStorageOrderDetail.getStorageNum();
Integer storagenum = storage;
Integer avaliableStorage = inventoryInquiry.getAvailableStockNum();
avaliableStorage += storagenum;
inventoryInquiry.setAvailableStockNum(avaliableStorage);
inventoryInquiry.setReportDamageNum(scrapSum);
// 设置历史总数
Integer historicalTotal = inventoryInquiry.getHistoricalTotal();
historicalTotal += storagenum;
inventoryInquiry.setHistoricalTotal(historicalTotal);
inventoryInquiry.setUpdateBy(ShiroUtils.getLoginName());
inventoryInquiry.setUpdateTime(DateUtils.getNowDate());
return warehouseInventoryInquiryMapper.updateWarehouseInventoryInquiry(inventoryInquiry);
}else{
WarehouseInventoryInquiry inventoryInquiry = new WarehouseInventoryInquiry();
inventoryInquiry.setMaterialNo(materialNo);
inventoryInquiry.setMaterialName(warehouseStorageOrderDetail.getMaterialName());
inventoryInquiry.setMaterialPhotourl(warehouseStorageOrderDetail.getMaterialPhotourl());
inventoryInquiry.setMaterialBrand(warehouseStorageOrderDetail.getMaterialBrand());
inventoryInquiry.setMaterialDescribe(warehouseStorageOrderDetail.getMaterialDescribe());
inventoryInquiry.setMaterialUnit(warehouseStorageOrderDetail.getMaterialUnit());
inventoryInquiry.setMaterialType(warehouseStorageOrderDetail.getMaterialType());
inventoryInquiry.setMaterialProcessMethod(warehouseStorageOrderDetail.getMaterialProcessMethod());
Integer storage = warehouseStorageOrderDetail.getStorageNum();
Integer storagenum = storage;
// 设置历史总数
inventoryInquiry.setHistoricalTotal(storagenum);
inventoryInquiry.setAvailableStockNum(storagenum);
inventoryInquiry.setReportDamageNum(scrapSum);
ErpMaterial material = erpMaterialMapper.selectErpMaterialByMaterialNo(materialNo);
inventoryInquiry.setMaterialUseStatus(material.getUseStatus());
inventoryInquiry.setCreateBy(ShiroUtils.getLoginName());
inventoryInquiry.setCreateTime(DateUtils.getNowDate());
inventoryInquiry.setUpdateBy(ShiroUtils.getLoginName());
inventoryInquiry.setUpdateTime(DateUtils.getNowDate());
return warehouseInventoryInquiryMapper.insertWarehouseInventoryInquiry(inventoryInquiry);
}
//// 存在库存查询记录,更新可用库存数
// if(warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo)!=null){
// WarehouseInventoryInquiry inventoryInquiry = warehouseInventoryInquiryMapper.selectWarehouseInventoryInquiryByMaterialNo(materialNo);
//// 增加可用库存数
// Integer storage = warehouseStorageOrderDetail.getStorageNum();
// Integer storagenum = storage;
// Integer avaliableStorage = inventoryInquiry.getAvailableStockNum();
// avaliableStorage += storagenum;
// inventoryInquiry.setAvailableStockNum(avaliableStorage);
// inventoryInquiry.setReportDamageNum(scrapSum);
//// 设置历史总数
// Integer historicalTotal = inventoryInquiry.getHistoricalTotal();
// historicalTotal += storagenum;
// inventoryInquiry.setHistoricalTotal(historicalTotal);
// inventoryInquiry.setUpdateBy(ShiroUtils.getLoginName());
// inventoryInquiry.setUpdateTime(DateUtils.getNowDate());
// return warehouseInventoryInquiryMapper.updateWarehouseInventoryInquiry(inventoryInquiry);
// }else{
// WarehouseInventoryInquiry inventoryInquiry = new WarehouseInventoryInquiry();
// inventoryInquiry.setMaterialNo(materialNo);
// inventoryInquiry.setMaterialName(warehouseStorageOrderDetail.getMaterialName());
// inventoryInquiry.setMaterialPhotourl(warehouseStorageOrderDetail.getMaterialPhotourl());
// inventoryInquiry.setMaterialBrand(warehouseStorageOrderDetail.getMaterialBrand());
// inventoryInquiry.setMaterialDescribe(warehouseStorageOrderDetail.getMaterialDescribe());
// inventoryInquiry.setMaterialUnit(warehouseStorageOrderDetail.getMaterialUnit());
// inventoryInquiry.setMaterialType(warehouseStorageOrderDetail.getMaterialType());
// inventoryInquiry.setMaterialProcessMethod(warehouseStorageOrderDetail.getMaterialProcessMethod());
// Integer storage = warehouseStorageOrderDetail.getStorageNum();
// Integer storagenum = storage;
// // 设置历史总数
// inventoryInquiry.setHistoricalTotal(storagenum);
// inventoryInquiry.setAvailableStockNum(storagenum);
// inventoryInquiry.setReportDamageNum(scrapSum);
//
// ErpMaterial material = erpMaterialMapper.selectErpMaterialByMaterialNo(materialNo);
// inventoryInquiry.setMaterialUseStatus(material.getUseStatus());
// inventoryInquiry.setCreateBy(ShiroUtils.getLoginName());
// inventoryInquiry.setCreateTime(DateUtils.getNowDate());
// inventoryInquiry.setUpdateBy(ShiroUtils.getLoginName());
// inventoryInquiry.setUpdateTime(DateUtils.getNowDate());
// return warehouseInventoryInquiryMapper.insertWarehouseInventoryInquiry(inventoryInquiry);
// }
}
// 生成采购订单库存历史记录
@ -959,18 +1061,16 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
throw new BusinessException("更新仓库入库单详情失败,未影响任何行");
}
WarehouseStorageOrderDetail storageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(warehouseStorageOrderDetail.getWarehouseStorageDetailId());
int inventoryInquiryResult = createWarehouseInventoryInquiry(storageOrderDetail);
if (inventoryInquiryResult <= 0){
throw new BusinessException("更新/新增库存查询失败,未影响任何行");
}
}
createWarehouseInventoryInquiry(storageOrderDetail);
//更新生产单数据
int updateMakeOrderResult = sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder,oldWarehouseStorageOrder, warehouseStorageOrderDetailList);
if (updateMakeOrderResult <= 0){
throw new BusinessException("更新生产订单失败,未影响任何行");
}
// //更新生产单数据
// int updateMakeOrderResult = sysMakeOrderService.updateSysMakeOrderByWarehouseStorageOrder(warehouseStorageOrder,oldWarehouseStorageOrder, warehouseStorageOrderDetailList);
// if (updateMakeOrderResult <= 0){
// throw new BusinessException("更新生产订单失败,未影响任何行");
// }
//更新开发修改单数据
// String relatedOrderCode = warehouseStorageOrder.getRelatedOrderCode();
// ErpDevelopModifyorder erpDevelopModifyorder = developModifyorderMapper.selectErpDevelopModifyorderByCode(relatedOrderCode);
@ -1090,10 +1190,8 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
throw new BusinessException("更新仓库入库单详情失败,未影响任何行");
}else{
WarehouseStorageOrderDetail storageOrderDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(warehouseStorageOrderDetail.getWarehouseStorageDetailId());
int inventoryInquiryResult = createWarehouseInventoryInquiry(storageOrderDetail);
if (inventoryInquiryResult <= 0){
throw new BusinessException("更新/新增库存查询失败,未影响任何行");
}
createWarehouseInventoryInquiry(storageOrderDetail);
}
}
//更新入库单的数据
@ -1423,10 +1521,8 @@ public class WarehouseStorageOrderServiceImpl implements IWarehouseStorageOrderS
}
//更新库存查询
WarehouseStorageOrderDetail storageOrderInquiryDetail = storageOrderDetailMapper.selectWarehouseStorageOrderDetailById(storageOrderDetail.getWarehouseStorageDetailId());
int inquiryResult = createWarehouseInventoryInquiry(storageOrderInquiryDetail);
if (inquiryResult <= 0){
throw new BusinessException("更新仓库库存查询失败,未影响任何行");
}
createWarehouseInventoryInquiry(storageOrderInquiryDetail);
}
//更新销售订单子表的数据

12
ruoyi-admin/src/main/resources/mapper/purchase/PurchaseOrderMapper.xml

@ -93,6 +93,18 @@
WHERE purchase_order_code = #{purchaseOrderCode}
</select>
<select id="selectPurchaseOrderChildListByPurchaseCodeList" parameterType="list" resultMap="PurchaseOrderResult">
<include refid="selectPurchaseOrderVo"/>
<where>
<if test="list != null and list.size > 0">
purchase_order_code in
<foreach collection="list" item="purchaseOrderCode" open="(" separator="," close=")">
#{purchaseOrderCode}
</foreach>
</if>
</where>
</select>
<insert id="insertPurchaseOrder" parameterType="PurchaseOrder" useGeneratedKeys="true" keyProperty="purchaseOrderId">
insert into purchase_order

10
ruoyi-admin/src/main/resources/mapper/system/BaseRequisitioningOrderChildMapper.xml

@ -52,15 +52,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="photoUrl != null and photoUrl != ''"> and photoUrl = #{photoUrl}</if>
<if test="materialName != null and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
<if test="materialType != null and materialType != ''"> and material_type = #{materialType}</if>
<if test="materialModel != null and materialModel != ''"> and material_model = #{materilaModel}</if>
<if test="specifications != null and specifications != ''"> and specifications = #{specifications}</if>
<if test="brand != null and brand != ''"> and brand = #{brand}</if>
<if test="describe != null and describe != ''"> and `describe` = #{describe}</if>
<if test="materialNum != null "> and materialNum = #{materialNum}</if>
<if test="materialRmb != null "> and materialRmb = #{materialRmb}</if>
<if test="materialNoRmb != null "> and materialNoRmb = #{materialNoRmb}</if>
<if test="materialNoRmbSum != null "> and materialNoRmbSum = #{materialNoRmbSum}</if>
<if test="materialRmbSum != null "> and materialRmbSum = #{materialRmbSum}</if>
<if test="remark != null and remark != ''"> and remark = #{remark}</if>
<if test="createBy != null and createBy != ''"> and create_by = #{createBy}</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if>
@ -68,6 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="useStatus != null and useStatus != ''"> and use_status = #{useStatus}</if>
<if test="auditStatus != null and auditStatus != ''"> and audit_status = #{auditStatus}</if>
</where>
order by create_time desc
</select>
<select id="selectBaseRequisitioningOrderChildById" parameterType="Long" resultMap="BaseRequisitioningOrderChildResult">

5
ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryDetailMapper.xml

@ -37,6 +37,11 @@
where inventory_inquiry_detail_id = #{inventoryInquiryDetailId}
</select>
<select id="selectWarehouseInventoryInquiryDetailByMaterialNo" parameterType="String" resultMap="WarehouseInventoryInquiryDetailResult" >
<include refid="selectWarehouseInventoryInquiryDetailVo"/>
where material_no = #{materialNo}
</select>
<insert id="insertWarehouseInventoryInquiryDetail" parameterType="WarehouseInventoryInquiryDetail" useGeneratedKeys="true" keyProperty="inventoryInquiryDetailId">
insert into warehouse_inventory_inquiry_detail
<trim prefix="(" suffix=")" suffixOverrides=",">

17
ruoyi-admin/src/main/resources/mapper/warehouse/WarehouseInventoryInquiryMapper.xml

@ -23,6 +23,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="fixedAvailableStockNum" column="fixed_available_stock_num" />
<result property="stockLossesNum" column="stock_losses_num" />
<result property="availableStockNum" column="available_stock_num" />
<result property="noOccupancyNum" column="no_occupancy_num" />
<result property="editStockNum" column="edit_stock_num" />
<result property="inventoryEditType" column="inventory_edit_type" />
<result property="attributionAvailableStockNum" column="attribution_available_stock_num" />
<result property="noattributionAvailableStockNum" column="noattribution_available_stock_num" />
<result property="useNum" column="use_num" />
@ -39,7 +42,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
select inventory_inquiry_id, material_no, material_name, material_type,
material_photoUrl, material_brand, material_unit, material_describe,
material_process_method, material_model, material_specification,warehouse_dept,
historical_total, shared_available_stock_num, lock_stock_num, fixed_available_stock_num, stock_losses_num,available_stock_num, attribution_available_stock_num,
historical_total, shared_available_stock_num, lock_stock_num, fixed_available_stock_num,
stock_losses_num,available_stock_num, attribution_available_stock_num,
no_occupancy_num, inventory_edit_type, edit_stock_num,
noattribution_available_stock_num, use_num, report_damage_num, material_use_status,
remark, create_time, create_by, update_by, update_time
from warehouse_inventory_inquiry
@ -52,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="materialName != null and materialName != ''"> and material_name like concat('%', #{materialName}, '%')</if>
<if test="params.beginCreateTime != null and params.beginCreateTime != '' and params.endCreateTime != null and params.endCreateTime != ''"> and create_time between #{params.beginCreateTime} and #{params.endCreateTime}</if>
</where>
order by create_time desc
</select>
<select id="selectWarehouseInventoryInquiryById" parameterType="Long" resultMap="WarehouseInventoryInquiryResult">
@ -92,6 +98,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fixedAvailableStockNum != null">fixed_available_stock_num,</if>
<if test="stockLossesNum != null">stock_losses_num,</if>
<if test="availableStockNum != null">available_stock_num,</if>
<if test="noOccupancyNum != null">no_occupancy_num,</if>
<if test="editStockNum != null">edit_stock_num,</if>
<if test="inventoryEditType != null">inventory_edit_type,</if>
<if test="attributionAvailableStockNum != null">attribution_available_stock_num,</if>
<if test="noattributionAvailableStockNum != null">noattribution_available_stock_num,</if>
<if test="useNum != null">use_num,</if>
@ -121,6 +130,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fixedAvailableStockNum != null">#{fixedAvailableStockNum},</if>
<if test="stockLossesNum != null">#{stockLossesNum},</if>
<if test="availableStockNum != null">#{availableStockNum},</if>
<if test="noOccupancyNum != null">#{noOccupancyNum},</if>
<if test="editStockNum != null">#{editStockNum},</if>
<if test="inventoryEditType != null">#{inventoryEditType},</if>
<if test="attributionAvailableStockNum != null">#{attributionAvailableStockNum},</if>
<if test="noattributionAvailableStockNum != null">#{noattributionAvailableStockNum},</if>
<if test="useNum != null">#{useNum},</if>
@ -154,6 +166,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="fixedAvailableStockNum != null">fixed_available_stock_num = #{fixedAvailableStockNum},</if>
<if test="stockLossesNum != null">stock_losses_num = #{stockLossesNum},</if>
<if test="availableStockNum != null">available_stock_num = #{availableStockNum},</if>
<if test="noOccupancyNum != null">no_occupancy_num = #{noOccupancyNum},</if>
<if test="editStockNum != null">edit_stock_num = #{editStockNum},</if>
<if test="inventoryEditType != null">inventory_edit_type = #{inventoryEditType},</if>
<if test="attributionAvailableStockNum != null">attribution_available_stock_num = #{attributionAvailableStockNum},</if>
<if test="noattributionAvailableStockNum != null">noattribution_available_stock_num = #{noattributionAvailableStockNum},</if>
<if test="useNum != null">use_num = #{useNum},</if>

3
ruoyi-admin/src/main/resources/templates/system/requisitioning/add.html

@ -85,7 +85,7 @@
return $.table.selectCategoryLabel(materialTypeDatas, value);
}
},
{title: '型号',field: 'materialModel',visible: false,align: 'center'},
{title: '型号',field: 'materialModel',align: 'center'},
{title: '规格',field: 'specification',visible: false,align: 'center'},
{ title: '描述',field: 'describe',align: 'center'},
{title: '品牌',field: 'brand',align: 'center'},
@ -229,6 +229,7 @@
materialName: rowData.materialName,
materialType: rowData.materialType,
describe: rowData.describe,
materialModel: rowData.materialModel,
brand: rowData.brand,
unit: rowData.unit,
processMethod: rowData.processMethod,

5
ruoyi-admin/src/main/resources/templates/system/requisitioning/requisitioning.html

@ -158,7 +158,7 @@
}
},
{title: '物料合计',field: 'materialAmount',align: 'center',
formatter: function(value) {
footerFormatter: function(value) {
var sum = 0;
for (var i in value) {
sum += parseFloat(value[i].materialAmount) || 0;
@ -167,7 +167,7 @@
}
},
{title: '数量总计',field: 'materialSum',align: 'center',
formatter: function(value){
footerFormatter: function(value){
var sum = 0;
for (var i in value) {
@ -202,6 +202,7 @@
}
},
{title: '备注',field: 'remark',align: 'center',},
{title: '创建时间',field: 'createTime',align: 'center',},
{title: '上次更新时间',field: 'updateTime',align: 'center',},
{title: '操作',align: 'center',
formatter: function (value, row, index) {

83
ruoyi-admin/src/main/resources/templates/warehouse/inventoryInquiry/editAvailableStock.html

@ -0,0 +1,83 @@
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
<th:block th:include="include :: header('修改可用库存')" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-inventoryInquiry-editAvailableStock" th:object="${warehouseInventoryInquiry}">
<input name="inventoryInquiryId" th:field="*{inventoryInquiryId}" type="hidden">
<div class="form-group">
<label class="col-sm-4 control-label">料号:</label>
<div class="col-sm-8">
<input name="materialNo" th:field="*{materialNo}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">物料名称:</label>
<div class="col-sm-8">
<input name="materialName" th:field="*{materialName}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">固定可用库存数:</label>
<div class="col-sm-8">
<input name="fixedAvailableStockNum" th:field="*{fixedAvailableStockNum}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">未占用共享可用库存数:</label>
<div class="col-sm-8">
<input name="noOccupancyNum" th:field="*{noOccupancyNum}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label is-required">修改类型:</label>
<div class="col-sm-8">
<select name="inventoryEditType" class="form-control m-b" th:with="type=${@dict.getType('inventory_edit_type')}">
<!-- 默认选项 -->
<option value="" selected="selected">请选择</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{inventoryEditType}" required></option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label is-required">修改数量:</label>
<div class="col-sm-8">
<input name="editStockNum" th:field="*{editStockNum}" class="form-control" type="text" required>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var prefix = ctx + "warehouse/inventoryInquiry";
$("#form-inventoryInquiry-editAvailableStock").validate({
rules: {
editStockNum: {
number: true,
min: 1
},
},
messages: {
editStockNum: {
number: "请输入有效的数字",
min: "修改数量必须大于0"
}
},
focusCleanup: true
});
function submitHandler() {
if ($.validate.form()) {
$.operate.save(prefix + "/editAvailableStock", $('#form-inventoryInquiry-editAvailableStock').serialize());
}
}
</script>
</body>
</html>

37
ruoyi-admin/src/main/resources/templates/warehouse/inventoryInquiry/inventoryInquiry.html

@ -49,6 +49,10 @@
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('warehouse:inventoryInquiry:edit')}]];
var editAvailableStockFlag = [[${@permission.hasPermi('warehouse:inventoryInquiry:editAvailableStockFlag')}]];
var materialUseStatusDatas = [[${@dict.getType('useStatus')}]];
var auditStatusDatas = [[${@dict.getType('auditStatus')}]];
var useStatusDatas = [[${@dict.getType('useStatus')}]];
@ -108,9 +112,13 @@
},
{title: '历史总数量', field: 'historicalTotal',},
{title: '可用库存数', field: 'availableStockNum',},
{title: '有归属可用库存数', field: 'attributionAvailableStockNum',visible: false},
{title: '无归属可用库存数', field: 'noattributionAvailableStockNum',visible: false},
{title: '固定可用库存数', field: 'fixedAvailableStockNum',},
{title: '共享可用库存数', field: 'sharedAvailableStockNum',},
{title: '锁定库存数', field: 'lockStockNum',},
{title: '使用数', field: 'useNum',},
{title: '盘亏数', field: 'stockLossesNum',},
{title: '报损数', field: 'reportDamageNum',},
{title: '使用状态', field: 'materialUseStatus',
formatter: function(value, row, index) {
@ -121,13 +129,17 @@
{title: '录入人', field: 'createBy',visible: false},
{title: '更新人', field: 'updateBy',},
{title: '上次更新时间', field: 'updateTime',},
// {title: '操作', align: 'center',
// formatter: function(value, row, index) {
// var actions = [];
// actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.edit(\'' + row.inventoryInquiryId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
// return actions.join('');
// }
// }
{title: '操作', align: 'center',
formatter: function(value, row, index) {
var actions = [];
if (row.materialProcessMethod != 1 && row.materialProcessMethod != 3){
//生产加工和生产装配的不支持转化
actions.push('<a class=" ' + editAvailableStockFlag + '" href="javascript:void(0)" onclick="editAvailableStock(\'' + row.inventoryInquiryId + '\')"><i class="fa fa-edit"></i>修改可用库存</a> ');
}
var actionLinks = actions.join('');
return $.table.dropdownToggle(actionLinks);
}
}
]
};
$.table.init(options);
@ -167,6 +179,13 @@
});
});
}
//修改可用库存
function editAvailableStock(inventoryInquiryId) {
var url = prefix + "/editAvailableStock/" + inventoryInquiryId;
$.modal.open("修改可用库存", url);
}
</script>
</body>
</html>
Loading…
Cancel
Save