feat(wms): 样品处置库存修改

dev
wanghao 1 week ago
parent be42558fa5
commit 4399b58749

@ -81,4 +81,5 @@ public class WmsSampleDisposalRecord extends TenantEntity {
*/
@TableField(exist = false)
private String productSpe;
}

@ -125,6 +125,7 @@ public class WmsSampleLedger extends TenantEntity {
*/
private String projectCode;
@TableField(exist = false)
/**
*

@ -55,8 +55,9 @@ public class WmsSampleDisposalRecordBo extends BaseEntity {
* ID
*/
private Long sampleLedgerId;
private Long warehouseId;
private Long inventoryDetailsId;
}

@ -22,4 +22,6 @@ public interface WmsInventoryDetailsMapper extends BaseMapperPlus<WmsInventoryDe
int updataDetailsByInventoryId(WmsInventoryDetails inventoryDetails);
int workAddUpdateInventory(WmsInventoryDetails inventoryDetails);
}

@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param;
import org.dromara.wms.domain.WmsSampleDisposalRecord;
import org.dromara.wms.domain.vo.WmsSampleDisposalRecordVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.springframework.stereotype.Repository;
/**
* Mapper
@ -15,6 +16,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
* @author Yinq
* @date 2025-11-21
*/
@Repository
public interface WmsSampleDisposalRecordMapper extends BaseMapperPlus<WmsSampleDisposalRecord, WmsSampleDisposalRecordVo> {
/**

@ -73,4 +73,8 @@ public interface IWmsInventoryDetailsService {
WmsInventoryDetails queryInventory(WmsInventoryDetailsBo inventory);
Double workUpdateInventory(Long inventoryDetailsId, Double disposalQty);
WmsInventoryDetails selectDetailsById(Long sampleLedgerId);
Boolean workAddUpdateInventory(WmsInventoryDetails inventoryDetails);
}

@ -166,6 +166,7 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi
public WmsInventoryDetails queryInventory(WmsInventoryDetailsBo bo) {
MPJLambdaWrapper<WmsInventoryDetails> lqw = JoinWrappers.lambda(WmsInventoryDetails.class)
.selectAll(WmsInventoryDetails.class)
.eq(WmsInventoryDetails::getDelFlag, "0")
.eq(StringUtils.isNotBlank(bo.getLocationCode()), WmsInventoryDetails::getLocationCode, bo.getLocationCode())
.eq(bo.getWarehouseId() != null, WmsInventoryDetails::getWarehouseId, bo.getWarehouseId())
.eq(bo.getMaterielId() != null, WmsInventoryDetails::getMaterielId, bo.getMaterielId())
@ -195,4 +196,18 @@ public class WmsInventoryDetailsServiceImpl implements IWmsInventoryDetailsServi
baseMapper.updataDetailsByInventoryId(inventory);
return inventoryAmount;
}
@Override
public WmsInventoryDetails selectDetailsById(Long sampleLedgerId) {
MPJLambdaWrapper<WmsInventoryDetails> lqw = JoinWrappers.lambda(WmsInventoryDetails.class)
.selectAll(WmsInventoryDetails.class)
.eq(WmsInventoryDetails::getInventoryDetailsId, sampleLedgerId);
return baseMapper.selectOne(lqw);
}
@Override
public Boolean workAddUpdateInventory(WmsInventoryDetails inventoryDetails) {
return baseMapper.workAddUpdateInventory(inventoryDetails) > 0;
}
}

@ -4,15 +4,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.wms.domain.WmsBaseProduct;
import org.dromara.wms.domain.WmsInventoryDetails;
import org.dromara.wms.domain.WmsInventoryLedger;
import org.dromara.wms.domain.WmsSampleDisposalRecord;
import org.dromara.wms.domain.bo.WmsSampleDisposalRecordBo;
import org.dromara.wms.domain.vo.WmsSampleDisposalRecordVo;
import org.dromara.wms.mapper.WmsInventoryLedgerMapper;
import org.dromara.wms.mapper.WmsSampleDisposalRecordMapper;
import org.dromara.wms.service.IWmsInventoryDetailsService;
import org.dromara.wms.service.IWmsSampleDisposalRecordService;
import org.springframework.stereotype.Service;
@ -31,6 +37,8 @@ import java.util.Map;
public class WmsSampleDisposalRecordServiceImpl implements IWmsSampleDisposalRecordService {
private final WmsSampleDisposalRecordMapper baseMapper;
private final IWmsInventoryDetailsService inventoryDetailsService;
private final WmsInventoryLedgerMapper wmsInventoryLedgerMapper;
/**
*
@ -91,10 +99,34 @@ public class WmsSampleDisposalRecordServiceImpl implements IWmsSampleDisposalRec
@Override
public Boolean insertByBo(WmsSampleDisposalRecordBo bo) {
WmsSampleDisposalRecord add = MapstructUtils.convert(bo, WmsSampleDisposalRecord.class);
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setSampleRecordId(add.getSampleRecordId());
// bo.setSampleRecordId(add.getSampleRecordId());
if (add.getDisposalType().equals("0")) {
WmsInventoryDetails inventoryDetails = inventoryDetailsService.selectDetailsById(bo.getInventoryDetailsId());
Double inventoryAmount = 0.0;
if (inventoryDetails != null) {//不直接操作数据库的情况下都有库存详情
inventoryAmount = inventoryDetails.getInventoryAmount();
inventoryDetails.setInventoryAmount(inventoryAmount + bo.getDisposalQty());
inventoryDetails.setUpdateBy(LoginHelper.getUserId());
inventoryDetails.setUpdateTime(DateUtils.getNowDate());
inventoryDetailsService.workAddUpdateInventory(inventoryDetails);
}else {
}
//库存变动
WmsInventoryLedger wmsInventoryLedger = new WmsInventoryLedger();
wmsInventoryLedger.setWarehouseId(bo.getWarehouseId());
wmsInventoryLedger.setBatchNumber(bo.getBatchNumber());
wmsInventoryLedger.setMaterielId(bo.getMaterielId());
wmsInventoryLedger.setChangeType("5");//变动类型
wmsInventoryLedger.setLedgerState("1");
wmsInventoryLedger.setChangeAmount(bo.getDisposalQty());
wmsInventoryLedger.setInventoryAmount(inventoryAmount);
wmsInventoryLedgerMapper.insert(wmsInventoryLedger);
}
}
return flag;
}
@ -108,16 +140,9 @@ public class WmsSampleDisposalRecordServiceImpl implements IWmsSampleDisposalRec
@Override
public Boolean updateByBo(WmsSampleDisposalRecordBo bo) {
WmsSampleDisposalRecord update = MapstructUtils.convert(bo, WmsSampleDisposalRecord.class);
validEntityBeforeSave(update);
return baseMapper.updateById(update) > 0;
}
/**
*
*/
private void validEntityBeforeSave(WmsSampleDisposalRecord entity) {
//TODO 做一些数据校验,如唯一约束
}
/**
*
@ -128,9 +153,7 @@ public class WmsSampleDisposalRecordServiceImpl implements IWmsSampleDisposalRec
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteByIds(ids) > 0;
}
}

@ -139,6 +139,7 @@ public class WmsSampleLedgerServiceImpl implements IWmsSampleLedgerService {
double obj = bo.getReturnQty() - disposalQty;
update.setReturnQty(obj);
update.setSampleState(obj == 0 ? "2" : "1");
return baseMapper.updateById(update) > 0;
}

@ -18,4 +18,15 @@
where inventory_details_id = #{inventoryDetailsId}
</update>
<update id="workAddUpdateInventory" parameterType="org.dromara.wms.domain.WmsInventoryDetails">
update wms_inventory_details
set inventory_amount = #{inventoryAmount},
del_flag =0,
update_by = #{updateBy},
update_time = #{updateTime}
where inventory_details_id = #{inventoryDetailsId}
</update>
</mapper>

Loading…
Cancel
Save