解决给商品批量修正库存的bug

This commit is contained in:
jishenghua
2025-07-02 16:16:24 +08:00
parent 89f58636ee
commit 7f7e87accc
3 changed files with 13 additions and 6 deletions

View File

@@ -1049,9 +1049,10 @@ public class DepotItemService {
*/
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public void updateCurrentStock(DepotItem depotItem) throws Exception {
updateCurrentStockFun(depotItem.getMaterialId(), depotItem.getDepotId());
BigDecimal currentUnitPrice = materialCurrentStockMapperEx.getCurrentUnitPriceByMId(depotItem.getMaterialId());
updateCurrentStockFun(depotItem.getMaterialId(), depotItem.getDepotId(), currentUnitPrice);
if(depotItem.getAnotherDepotId()!=null){
updateCurrentStockFun(depotItem.getMaterialId(), depotItem.getAnotherDepotId());
updateCurrentStockFun(depotItem.getMaterialId(), depotItem.getAnotherDepotId(), currentUnitPrice);
}
}
@@ -1136,7 +1137,7 @@ public class DepotItemService {
* @param mId
* @param dId
*/
public void updateCurrentStockFun(Long mId, Long dId) throws Exception {
public void updateCurrentStockFun(Long mId, Long dId, BigDecimal currentUnitPrice) throws Exception {
if(mId!=null && dId!=null) {
MaterialCurrentStockExample example = new MaterialCurrentStockExample();
example.createCriteria().andMaterialIdEqualTo(mId).andDepotIdEqualTo(dId)
@@ -1146,6 +1147,7 @@ public class DepotItemService {
materialCurrentStock.setMaterialId(mId);
materialCurrentStock.setDepotId(dId);
materialCurrentStock.setCurrentNumber(getStockByParam(dId,mId,null,null));
materialCurrentStock.setCurrentUnitPrice(currentUnitPrice);
if(list!=null && list.size()>0) {
Long mcsId = list.get(0).getId();
materialCurrentStock.setId(mcsId);

View File

@@ -209,6 +209,7 @@ public class MaterialService {
materialMapperEx.setExpiryNumToNull(material.getId());
}
materialExtendService.saveDetials(obj, obj.getString("sortList"),material.getId(), "update");
BigDecimal currentUnitPrice = materialCurrentStockMapperEx.getCurrentUnitPriceByMId(material.getId());
if(obj.get("stock")!=null) {
JSONArray stockArr = obj.getJSONArray("stock");
for (int i = 0; i < stockArr.size(); i++) {
@@ -232,7 +233,7 @@ public class MaterialService {
insertInitialStockByMaterialAndDepot(depotId, material.getId(), parseBigDecimalEx(number), lowSafeStock, highSafeStock);
}
//更新当前库存
depotItemService.updateCurrentStockFun(material.getId(), depotId);
depotItemService.updateCurrentStockFun(material.getId(), depotId, currentUnitPrice);
}
}
}
@@ -1432,8 +1433,9 @@ public class MaterialService {
List<Long> idList = StringUtil.strToLongList(ids);
List<Depot> depotList = depotService.getAllList();
for(Long mId: idList) {
BigDecimal currentUnitPrice = materialCurrentStockMapperEx.getCurrentUnitPriceByMId(mId);
for(Depot depot: depotList) {
depotItemService.updateCurrentStockFun(mId, depot.getId());
depotItemService.updateCurrentStockFun(mId, depot.getId(), currentUnitPrice);
res = 1;
}
}

View File

@@ -28,7 +28,10 @@
</update>
<select id="getCurrentUnitPriceByMId" resultType="java.math.BigDecimal">
select ifnull(mcs.current_unit_price,0) as current_unit_price from jsh_material_current_stock mcs where mcs.material_id=#{materialId} limit 1
select mcs.current_unit_price as current_unit_price from jsh_material_current_stock mcs
where mcs.material_id=#{materialId}
and mcs.current_unit_price is not null
limit 1
</select>
<update id="batchDeleteByDepots">