rev:库存更新,入库确认

This commit is contained in:
2023-05-24 20:05:05 +08:00
parent 1ce759c718
commit 84ecbf0b83
14 changed files with 385 additions and 64 deletions

View File

@@ -1,6 +1,8 @@
package org.nl.wms.masterdata_manage.service.material.dao;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
@@ -26,6 +28,7 @@ public class MdMeMaterialbase implements Serializable {
/**
* 物料标识
*/
@TableId
private String material_id;
/**

View File

@@ -3,8 +3,11 @@ package org.nl.wms.masterdata_manage.service.vehicle.dao;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
@@ -15,6 +18,7 @@ import lombok.EqualsAndHashCode;
* @since 2023-05-10
*/
@Data
@Builder
@EqualsAndHashCode(callSuper = false)
@TableName("md_pb_bucketrecord")
public class MdPbBucketrecord implements Serializable {

View File

@@ -19,8 +19,10 @@ import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService;
@@ -34,8 +36,6 @@ import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM;
import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.basedata.service.record.dto.StIvtStructivtflowDto;
import org.nl.wms.storage_manage.basedata.service.record.service.IStIvtStructivtflowService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService;
@@ -46,6 +46,8 @@ import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostor
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvCpMapper;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery;
import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService;
import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil;
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
import org.springframework.beans.factory.annotation.Autowired;
@@ -94,20 +96,23 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
@Autowired
protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务
@Autowired
private IStIvtStructivtflowService structivtflowService; // 仓位变动记录服务
@Autowired
private ISchBaseTaskService iSchBaseTaskService; // 任务表服务
@Autowired
private ISchBasePointService iSchBasePointService; // 点位服务
@Autowired
private IStIvtStructivtCpService iStIvtStructivtCpService; // 库存服务
@Autowired
protected IMdPbBucketrecordService iMdPbBucketrecordService; // 包装箱记录表服务
@Override
public Object pageQuery(IostorInvQuery query, PageQuery page) {
// 查询条件
query.setIo_type(IOSEnum.IO_TYPE.code("入库"));
page.setSort("bill_code,ASC");
page.setSort("bill_code,DESC");
// 分页查询
Page<StIvtIostorinvCp> pageQuery = this.page(page.build(), query.build());
@@ -231,7 +236,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.map(StIvtIostorinvdisdtlCp::getReal_qty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 插入分配明细
// 插入分配
StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp()
.setIostorinvdis_id(IdUtil.getStringId())
.setIostorinv_id(param.getString("iostorinv_id"))
@@ -383,7 +388,10 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
attrDao.setInv_code(mstDao.getBill_code());
iStIvtStructattrService.updateById(attrDao);
// TODO 更新库存、物流等
// 4.更新库存
disDao.setStruct_id(attrDao.getStruct_id());
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.ADDWAREHOUSING_QTY));
}
@Override
@@ -439,6 +447,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.eq(StIvtStructattr::getStruct_code, disDao.getStruct_code())
);
// 更新库存
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.SUBWAREHOUSING_QTY));
// 4.更新分配
iostorinvdisCpService.updateById(
disDao.setStruct_name("").setStruct_code("")
@@ -535,43 +546,49 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
);
// 3.更新任务为完成、更新库存
// 4.更新箱记录表状态为入库
List<StIvtIostorinvdisdtlCp> disDtlList = iStIvtIostorinvdisdtlCpService.list(
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
.eq(StIvtIostorinvdisdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
);
for (StIvtIostorinvdisdtlCp disDtlDao : disDtlList) {
// 更新箱记录表
iMdPbBucketrecordService.update(
MdPbBucketrecord.builder()
.status("03") // TODO 暂时写死
.instor_optid(Long.getLong(SecurityUtils.getCurrentUserId()))
.instor_optname(SecurityUtils.getCurrentNickName())
.instor_time(DateUtil.now())
.build(),
new QueryWrapper<MdPbBucketrecord>().lambda()
.eq(MdPbBucketrecord::getBucketunique, disDtlDao.getBucketunique())
);
}
// 5.更新任务为完成、更新库存、解锁点位
List<StIvtIostorinvdisCp> disDaoList = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
);
Map<String, List<StIvtIostorinvdisCp>> collect = disDaoList.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getTask_id));
for (String task_id : collect.keySet()) {
for (StIvtIostorinvdisCp dao : disDaoList) {
// 1更新任务为完成
SchBaseTask taskDao = iSchBaseTaskService.getById(task_id);
// 已完成则不更新
if (StrUtil.equals(taskDao.getTask_id(), TaskStatusEnum.FINISHED.getCode())) continue;
SchBaseTask taskDao = iSchBaseTaskService.getById(dao.getTask_id());
taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode());
iSchBaseTaskService.updateById(taskDao);
if (ObjectUtil.isNotEmpty(taskDao)) {
// 更新有任务分配
if (!StrUtil.equals(taskDao.getTask_id(), TaskStatusEnum.FINISHED.getCode())) {
taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode());
iSchBaseTaskService.updateById(taskDao);
}
}
// 2更新库存
List<StIvtIostorinvdisCp> disList = collect.get(task_id);
for (StIvtIostorinvdisCp dao : disList) {
// 根据托盘对应货位更新
structivtflowService.recordStructivtFlow(
StIvtStructivtflowDto.builder()
.bill_code(mstDao.getBill_code())
.change_type_scode(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_SEND)
.bill_table("st_ivt_iostorinv_cp")
.material_id(dao.getMaterial_id())
.pcsn(dao.getPcsn())
.struct_code(dao.getStruct_code())
.result_qty(dao.getReal_qty())
.change_qty(dao.getReal_qty())
.task_id(dao.getTask_id())
.storagevehicle_code(dao.getStoragevehicle_code())
.build()
);
}
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY));
// 3解锁终点
unLockNext(dao.getStruct_id(),dao.getStoragevehicle_code());
}
}
@@ -721,4 +738,34 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
this.updateById(mstDao);
}
public JSONObject ivtDataParam(StIvtIostorinvdisCp disDao,String type) {
JSONObject ivtParam = new JSONObject();
ivtParam.put("struct_id", disDao.getStruct_id());
ivtParam.put("material_id", disDao.getMaterial_id());
ivtParam.put("pcsn", disDao.getPcsn());
ivtParam.put("quality_scode", disDao.getQuality_scode());
ivtParam.put("ivt_level", disDao.getIvt_level());
ivtParam.put("change_qty", disDao.getReal_qty());
ivtParam.put("change_type", type);
return ivtParam;
}
/*
解锁终点
*/
public void unLockNext(String struct_id, String storagevehicle_code) {
StIvtStructattr attrDao = iStIvtStructattrService.getById(struct_id);
if (ObjectUtil.isEmpty(attrDao)) throw new BadRequestException("仓位不存在!");
attrDao.setInv_code("");
attrDao.setInv_type("");
attrDao.setInv_id("");
attrDao.setStoragevehicle_code(storagevehicle_code);
attrDao.setLock_type("1");
iStIvtStructattrService.updateById(attrDao);
}
}

View File

@@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
@@ -44,6 +46,10 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
@Autowired
protected IMdPbBucketrecordService iMdPbBucketrecordService; // 包装箱记录表服务
@Autowired
protected IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务
@Override
public void batchInsert(Collection<StIvtIostorinvdisdtlCp> list) {
if (!CollectionUtils.isEmpty(list)){
@@ -67,13 +73,18 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
.eq("storagevehicle_code", item.getString("storagevehicle_code"))
);
MdMeMaterialbase mataDao = iMdMeMaterialbaseService.getOne(
new QueryWrapper<MdMeMaterialbase>().lambda()
.eq(MdMeMaterialbase::getMaterial_code, item.getString("material_code"))
);
StIvtIostorinvdisdtlCp disDtlDao = new StIvtIostorinvdisdtlCp()
.setIostorinv_id(json.getString("iostorinv_id"))
.setIostorinvdtl_id(json.getString("iostorinvdtl_id"))
.setIostorinvdis_id(json.getString("iostorinvdis_id"))
.setIostorinvdisdtl_id(IdUtil.getStringId())
.setSeq_no(new BigDecimal(1))
.setMaterial_id(item.getString("material_id"))
.setMaterial_id(mataDao.getMaterial_id())
.setPcsn(item.getString("pcsn"))
.setQuality_scode("00") // TODO 暂时写
.setIvt_level("01") // TODO 暂时写
@@ -88,16 +99,17 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
result.add(disDtlDao);
// 更新箱记录表
MdPbBucketrecord recodDao = new MdPbBucketrecord();
recodDao.setStoragevehicle_id(Long.getLong(vehicleDao.getStoragevehicle_id()));
recodDao.setStatus("02"); // TODO 暂时写死
recodDao.setStoragevehicle_code(vehicleDao.getStoragevehicle_code());
recodDao.setMakeup_optid(Long.getLong(SecurityUtils.getCurrentUserId()));
recodDao.setMakeup_optname(SecurityUtils.getCurrentNickName());
recodDao.setMakeup_time(DateUtil.now());
iMdPbBucketrecordService.update(
recodDao,new QueryWrapper<MdPbBucketrecord>().eq("bucketunique", item.getString("bucketunique"))
MdPbBucketrecord.builder()
.storagevehicle_id(Long.getLong(vehicleDao.getStoragevehicle_id()))
.status("02") // TODO 暂时写死
.storagevehicle_code(vehicleDao.getStoragevehicle_code())
.makeup_optid(Long.getLong(SecurityUtils.getCurrentUserId()))
.makeup_optname(SecurityUtils.getCurrentNickName())
.makeup_time(DateUtil.now())
.build(),
new QueryWrapper<MdPbBucketrecord>()
.eq("bucketunique", item.getString("bucketunique"))
);
});

View File

@@ -1,5 +1,6 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -65,7 +66,9 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
row.setIostorinv_id(iostorinvCp_id);
row.setIostorinvdtl_id(org.nl.common.utils.IdUtil.getStringId());
row.setSeq_no(i+1);
row.setPcsn(DateUtil.today());
row.setIs_active(true);
row.setIvt_level("01"); // TODO 暂时写死
row.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
row.setReal_qty(row.getPlan_qty());
row.setUnassign_qty(row.getPlan_qty());

View File

@@ -1,5 +1,6 @@
package org.nl.wms.storage_manage.productmanage.service.structIvt;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
@@ -13,4 +14,19 @@ import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStruct
*/
public interface IStIvtStructivtCpService extends IService<StIvtStructivtCp> {
/**
* 成品库存更新
* @param json
* {
* struct_id仓位标识
* material_id物料标识
* pcsn批次
* quality_scode品质类型
* ivt_level库存等级
* change_qty变动数量
* change_type变动类型
* }
*/
void UpdateIvt(JSONObject json);
}

View File

@@ -1,5 +1,6 @@
package org.nl.wms.storage_manage.productmanage.service.structIvt.dao;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -25,6 +26,7 @@ public class StIvtStructivtCp implements Serializable {
/**
* 库存记录标识
*/
@TableId
private String stockrecord_id;
/**

View File

@@ -1,10 +1,26 @@
package org.nl.wms.storage_manage.productmanage.service.structIvt.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.IdUtil;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService;
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.mapper.StIvtStructivtCpMapper;
import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
/**
* <p>
@@ -17,4 +33,173 @@ import org.springframework.stereotype.Service;
@Service
public class StIvtStructivtCpServiceImpl extends ServiceImpl<StIvtStructivtCpMapper, StIvtStructivtCp> implements IStIvtStructivtCpService {
@Autowired
protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务
@Autowired
protected IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务
@Override
@Transactional(rollbackFor = Exception.class)
public void UpdateIvt(JSONObject json) {
// 校验数据
checkParam(json);
String change_type = json.getString("change_type"); // 变动类型
switch (change_type) {
case ChangeIvtUtil.ADDWAREHOUSING_QTY:
// 加待入
addWrehousingQty(json);
break;
case ChangeIvtUtil.SUBWAREHOUSING_QTY:
// 减待入
subWrehousingQty(json);
break;
case ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY:
// 减待入、加库存、加可用
subWrehousingAddQty(json);
break;
default:
throw new BadRequestException("变动类型异常!");
}
}
/*
加待入
*/
private void addWrehousingQty(JSONObject json) {
// 查询是否有库存
StIvtStructivtCp ivtDao = this.getOne(
new QueryWrapper<StIvtStructivtCp>().lambda()
.eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id"))
.eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id"))
.eq(StIvtStructivtCp::getPcsn, json.getString("pcsn"))
);
if (ObjectUtil.isEmpty(ivtDao)) {
// 为空插入
StIvtStructattr attrDao = iStIvtStructattrService.getById(json.getString("struct_id"));
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById(json.getString("material_id"));
StIvtStructivtCp dao = new StIvtStructivtCp();
dao.setStockrecord_id(org.nl.common.utils.IdUtil.getStringId());
dao.setStruct_id(attrDao.getStruct_id());
dao.setStruct_code(attrDao.getStruct_code());
dao.setStruct_name(attrDao.getStruct_name());
dao.setMaterial_id(materDao.getMaterial_id());
dao.setQuality_scode(json.getString("quality_scode"));
dao.setIvt_level(json.getString("ivt_level"));
dao.setIs_active(true);
dao.setPcsn(json.getString("pcsn"));
dao.setCanuse_qty(BigDecimal.valueOf(0));
dao.setFrozen_qty(BigDecimal.valueOf(0));
dao.setIvt_qty(BigDecimal.valueOf(0));
dao.setWarehousing_qty(json.getBigDecimal("change_qty"));
dao.setQty_unit_id(materDao.getBase_unit_id());
this.save(dao);
} else {
// 更新待入数
ivtDao.setWarehousing_qty(NumberUtil.add(ivtDao.getWarehousing_qty(),json.getDoubleValue("change_qty")));
this.updateById(ivtDao);
}
}
/*
减待入
*/
private void subWrehousingQty(JSONObject json) {
// 查询是否有库存
StIvtStructivtCp ivtDao = this.getOne(
new QueryWrapper<StIvtStructivtCp>().lambda()
.eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id"))
.eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id"))
.eq(StIvtStructivtCp::getPcsn, json.getString("pcsn"))
);
if (ObjectUtil.isEmpty(ivtDao)) {
// 为空报错
throw new BadRequestException("库存不存在,请检查!");
} else {
// 判断库存是否异常
double change_qty = NumberUtil.sub(ivtDao.getWarehousing_qty(), json.getDoubleValue("change_qty")).doubleValue();
if (change_qty < 0) {
throw new BadRequestException("库存异常,请检查!");
} else if (change_qty == 0 && ivtDao.getCanuse_qty().doubleValue() == 0 &&
ivtDao.getFrozen_qty().doubleValue() == 0 && ivtDao.getIvt_qty().doubleValue() == 0) {
// 待入数、库存数、冻结数、可用数都为0时删除库存记录
this.removeById(ivtDao.getStockrecord_id());
} else {
ivtDao.setWarehousing_qty(BigDecimal.valueOf(change_qty));
this.updateById(ivtDao);
}
}
}
/*
减待入、加库存、加可用
*/
private void subWrehousingAddQty(JSONObject json) {
// 查询是否有库存
StIvtStructivtCp ivtDao = this.getOne(
new QueryWrapper<StIvtStructivtCp>().lambda()
.eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id"))
.eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id"))
.eq(StIvtStructivtCp::getPcsn, json.getString("pcsn"))
);
if (ObjectUtil.isEmpty(ivtDao)) {
throw new BadRequestException("库存不存在,请检查!");
} else {
double change_qty = NumberUtil.sub(ivtDao.getWarehousing_qty(), json.getDoubleValue("change_qty")).doubleValue();
// 判断待入数是否为负数
if (change_qty < 0) throw new BadRequestException("库存异常,请检查!");
// 减去待入
ivtDao.setWarehousing_qty(BigDecimal.valueOf(change_qty));
// 加库存
BigDecimal ivt_qty = NumberUtil.add(ivtDao.getIvt_qty(), json.getDoubleValue("change_qty"));
// 加可用
BigDecimal canuse_qty = NumberUtil.add(ivtDao.getCanuse_qty(), json.getDoubleValue("change_qty"));
ivtDao.setCanuse_qty(canuse_qty);
ivtDao.setIvt_qty(ivt_qty);
ivtDao.setInstorage_time(DateUtil.now());
this.updateById(ivtDao);
}
}
/*
校验数据
*/
private void checkParam(JSONObject json) {
if (ObjectUtil.isEmpty(json.getString("struct_id")))
throw new BadRequestException("更新库存失败:仓位不能为空!");
if (ObjectUtil.isEmpty(json.getString("material_id")))
throw new BadRequestException("更新库存失败:物料不能为空!");
if (ObjectUtil.isEmpty(json.getString("pcsn")))
throw new BadRequestException("更新库存失败:批次不能为空!");
if (ObjectUtil.isEmpty(json.getString("quality_scode")))
throw new BadRequestException("更新库存失败:品质类型不能为空!");
if (ObjectUtil.isEmpty(json.getString("ivt_level")))
throw new BadRequestException("更新库存失败:库存等级不能为空!");
if (ObjectUtil.isEmpty(json.getString("change_qty")))
throw new BadRequestException("更新库存失败:变动数量不能为空!");
if (ObjectUtil.isEmpty(json.getString("change_type")))
throw new BadRequestException("更新库存失败:变动类型不能为空!");
}
}

View File

@@ -0,0 +1,21 @@
package org.nl.wms.storage_manage.productmanage.util;
public class ChangeIvtUtil {
/*
* 加待入
*/
public static final String ADDWAREHOUSING_QTY = "1";
/*
* 减待入
*/
public static final String SUBWAREHOUSING_QTY = "2";
/*
* 减待入、加库存、加可用
*/
public static final String SUBWAREHOUSING_ADDIVT_QTY = "3";
}