rev: 成品出入库修改

This commit is contained in:
2023-06-17 09:24:46 +08:00
parent 3b1e1a7194
commit 804ecd9b74
24 changed files with 529 additions and 126 deletions

View File

@@ -1,6 +1,8 @@
package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
@@ -24,7 +26,8 @@ public class MpsSaleOrder implements Serializable {
/**
* 销售单标识
*/
private Long sale_id;
@TableId
private String sale_id;
/**
* 销售单号
@@ -44,7 +47,7 @@ public class MpsSaleOrder implements Serializable {
/**
* 物料标识
*/
private Long material_id;
private String material_id;
/**
* 状态
@@ -64,7 +67,7 @@ public class MpsSaleOrder implements Serializable {
/**
* 客户标识
*/
private Long cust_id;
private String cust_id;
/**
* 客户编码
@@ -79,7 +82,7 @@ public class MpsSaleOrder implements Serializable {
/**
* 计量单位标识
*/
private Long qty_unit_id;
private String qty_unit_id;
/**
* 计划交期
@@ -89,7 +92,7 @@ public class MpsSaleOrder implements Serializable {
/**
* 创建人
*/
private Long create_id;
private String create_id;
/**
* 创建人姓名
@@ -104,7 +107,7 @@ public class MpsSaleOrder implements Serializable {
/**
* 提交人
*/
private Long audit_optid;
private String audit_optid;
/**
* 提交时间
@@ -119,7 +122,7 @@ public class MpsSaleOrder implements Serializable {
/**
* 确认人
*/
private Long confirm_optid;
private String confirm_optid;
/**
* 确认人姓名
@@ -144,7 +147,7 @@ public class MpsSaleOrder implements Serializable {
/**
* 车间标识
*/
private Long workshop_id;
private String workshop_id;
/**
* 生产数量

View File

@@ -29,6 +29,8 @@ public class IostorInvQuery extends BaseQuery<StIvtIostorinvCp> {
private String io_type;
private String product_area;
private Boolean is_delete = false;

View File

@@ -29,8 +29,6 @@ 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;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
@@ -40,7 +38,6 @@ import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
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.productmanage.service.iostorInv.IStIvtIostorinvCpOutService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService;
@@ -209,6 +206,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
List<StIvtIostorinvdtlCp> dtlDaoList = new ArrayList<>();
if (whereJson.getBoolean("type")) {
// 全部分配
dtlDaoList = iostorinvdtlCpService.list(
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
@@ -216,6 +214,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
.orderByAsc(StIvtIostorinvdtlCp::getSeq_no)
);
} else {
// 单条分配
dtlDaoList = iostorinvdtlCpService.list(
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
@@ -237,8 +236,8 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
param.put("stor_id", whereJson.getString("stor_id"));
param.put("sect_id", whereJson.getString("sect_id"));
param.put("material_id", dtlDao.getMaterial_id());
param.put("sale_id", dtlDao.getSource_billdtl_id());
if (ObjectUtil.isEmpty(dtlDao.getSource_billdtl_id())) {
param.put("sale_id", dtlDao.getBase_billdtl_id());
if (ObjectUtil.isEmpty(dtlDao.getBase_billdtl_id())) {
param.put("rule_type", RuleUtil.PRODUCTION_OUT_2);
} else {
param.put("rule_type", RuleUtil.PRODUCTION_OUT_1);
@@ -295,12 +294,14 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
// 1.找出所有分配
List<StIvtIostorinvdisCp> disDaoList = new ArrayList<>();
if (whereJson.getBoolean("type")) {
// 全部取消
disDaoList = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
.orderByAsc(StIvtIostorinvdisCp::getSeq_no)
);
} else {
// 单条取消
disDaoList = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
@@ -397,11 +398,15 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
BussEventMulticaster.Publish(event);
// 3.更新分配表
iostorinvdisCpService.updateById(
disDao.setPoint_id(pointDao.getPoint_id())
.setPoint_code(pointDao.getPoint_code())
.setPoint_name(pointDao.getPoint_name())
.setWork_status(IOSEnum.WORK_STATUS.code("生成"))
iostorinvdisCpService.update(
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
.set(StIvtIostorinvdisCp::getPoint_id, pointDao.getPoint_id())
.set(StIvtIostorinvdisCp::getPoint_code, pointDao.getPoint_code())
.set(StIvtIostorinvdisCp::getPoint_name, pointDao.getPoint_name())
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("生成"))
.set(StIvtIostorinvdisCp::getTask_id, disDao.getTask_id())
.eq(StIvtIostorinvdisCp::getIostorinv_id, disDao.getIostorinv_id())
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, disDao.getStoragevehicle_code())
);
}
@@ -458,21 +463,12 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
StIvtIostorinvdtlCp dtlDao = dtlDaoList.stream()
.filter(row -> row.getIostorinvdtl_id().equals(dao.getIostorinvdtl_id()))
.findAny().get();
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY,dtlDao.getSource_billdtl_id()));
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY,dtlDao.getBase_billdtl_id()));
// 3解锁起点
// 3解锁起点 / 将此托盘上的库存全部出掉
unLockNext(dao.getStruct_id());
// 4) 更新载具扩展属性
iMdPbStoragevehicleextService.update(
new MdPbStoragevehicleext()
.setMaterial_id("")
.setStorage_qty(BigDecimal.valueOf(0)),
new QueryWrapper<MdPbStoragevehicleext>().lambda()
.eq(MdPbStoragevehicleext::getStoragevehicle_code,dao.getStoragevehicle_code())
);
// 5) 更新箱记录表为出库
// 4) 更新箱记录表为出库
iMdPbBucketrecordService.update(
MdPbBucketrecord.builder()
.status(MasterEnum.BOX_STATUS.code("出库"))
@@ -480,7 +476,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
new QueryWrapper<MdPbBucketrecord>().lambda()
.eq(MdPbBucketrecord::getStoragevehicle_code, dao.getStoragevehicle_code())
.eq(MdPbBucketrecord::getMaterial_id, dao.getMaterial_id())
.eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code(""))
.eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code(""))
);
}
@@ -491,7 +487,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
JSONObject param = new JSONObject();
param.put("material_id", whereJson.getString("material_id"));
param.put("stor_id", whereJson.getString("stor_id"));
if (ObjectUtil.isNotEmpty(whereJson.getString("source_billdtl_id"))) param.put("sale_id", whereJson.getString("source_billdtl_id"));
if (ObjectUtil.isNotEmpty(whereJson.getString("base_billdtl_id"))) param.put("sale_id", whereJson.getString("base_billdtl_id"));
if (ObjectUtil.isNotEmpty(whereJson.getString("search"))) param.put("remark", whereJson.getString("search"));
if (ObjectUtil.isNotEmpty(whereJson.getString("sect_id"))) param.put("sect_id", whereJson.getString("sect_id"));
@@ -550,7 +546,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
String status = form.getString("status");
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getOne(new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id));
.eq(StIvtIostorinvdisCp::getTask_id, task_id),false);
// 更新任务状态为完成
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
@@ -567,12 +563,23 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
.eq(StIvtIostorinvdisCp::getTask_id, task_id)
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("完成"))
);
// 调用分配完成
JSONObject mst_jo = new JSONObject();
mst_jo.put("iostorinvdtl_id", disDao.getIostorinvdtl_id());
mst_jo.put("iostorinv_id", disDao.getIostorinv_id());
mst_jo.put("is_out", true);
iostorinvdisCpService.confirm(mst_jo);
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id)
)
.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id));
for(List<StIvtIostorinvdisCp> list : collect.values()) {
StIvtIostorinvdisCp disDao_2 = list.get(0);
JSONObject mst_jo = new JSONObject();
mst_jo.put("iostorinvdtl_id", disDao_2.getIostorinvdtl_id());
mst_jo.put("iostorinv_id", disDao_2.getIostorinv_id());
mst_jo.put("is_out", true);
iostorinvdisCpService.confirm(mst_jo);
}
} else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
// 更新任务为执行中
@@ -609,12 +616,15 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
);
// 2.更新分配
disDao.setTask_id("");
disDao.setPoint_code("");
disDao.setPoint_id("");
disDao.setPoint_name("");
disDao.setWork_status(IOSEnum.WORK_STATUS.code("未生成"));
iostorinvdisCpService.updateById(disDao);
iostorinvdisCpService.update(
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
.set(StIvtIostorinvdisCp::getTask_id, "")
.set(StIvtIostorinvdisCp::getPoint_id, "")
.set(StIvtIostorinvdisCp::getPoint_code,"")
.set(StIvtIostorinvdisCp::getPoint_name,"")
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("未生成"))
.eq(StIvtIostorinvdisCp::getTask_id, disDao.getTask_id())
);
}
@Override
@@ -719,6 +729,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
stIvtIostorinvCp.setStor_id(bsrealDao.getStor_id());
stIvtIostorinvCp.setStor_code(bsrealDao.getStor_code());
stIvtIostorinvCp.setStor_name(bsrealDao.getStor_name());
stIvtIostorinvCp.setProduct_area(bsrealDao.getProduct_area());
stIvtIostorinvCp.setTotal_qty(whereJson.getBigDecimal("total_qty"));
stIvtIostorinvCp.setDetail_count(rows.size());
stIvtIostorinvCp.setRemark(whereJson.getString("remark"));
@@ -818,7 +829,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
param.put("ivt_level", dao.getIvt_level());
param.put("quality_scode", dao.getQuality_scode());
param.put("change_qty", dao.getReal_qty());
param.put("sale_id", dtlDao.getSource_billdtl_id());
param.put("sale_id", dtlDao.getBase_billdtl_id());
param.put("change_type", type);
iStIvtStructivtCpService.UpdateIvt(param);
@@ -852,26 +863,30 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl<StIvtIostorinvCp
public void unLockNext(String struct_id) {
StIvtStructattr attrDao = iStIvtStructattrService.getById(struct_id);
if (ObjectUtil.isEmpty(attrDao)) throw new BadRequestException("仓位不存在!");
// 判断载具是否超限
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
new QueryWrapper<MdPbStoragevehicleinfo>().lambda()
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, attrDao.getStoragevehicle_code())
);
if (StrUtil.equals(vehicleDao.getOverstruct_type(),IOSEnum.IS_USED.code(""))) {
if (StrUtil.equals(attrDao.getIs_zdepth(),IOSEnum.IS_USED.code(""))) {
// 解锁超限货位
iStIvtStructattrService.update(
new UpdateWrapper<StIvtStructattr>().lambda()
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(StIvtStructattr::getControl_code,attrDao.getStruct_id())
.eq(StIvtStructattr::getStruct_id,attrDao.getControl_code())
);
}
// 将此托盘上的所有库存删除
iStIvtStructivtCpService.remove(
new QueryWrapper<StIvtStructivtCp>().lambda()
.eq(StIvtStructivtCp::getStruct_id, struct_id)
.eq(StIvtStructivtCp::getFrozen_qty, 0)
);
attrDao.setInv_code("");
attrDao.setInv_type("");
attrDao.setInv_id("");
attrDao.setIs_zdepth("");
attrDao.setStoragevehicle_code("");
attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("未锁定"));
iStIvtStructattrService.updateById(attrDao);

View File

@@ -38,6 +38,8 @@ import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattr
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService;
import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder;
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
@@ -118,6 +120,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
@Autowired
protected IMdPbBucketrecordService iMdPbBucketrecordService; // 包装箱记录表服务
@Autowired
protected IMpsSaleOrderService iMpsSaleOrderService; // 销售单服务
@Override
public Object pageQuery(IostorInvQuery query, PageQuery page) {
// 查询条件
@@ -140,6 +145,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
// 调用主表 插入/更新方法
StIvtIostorinvCp stIvtIostorinvCp = packageMstForm(new StIvtIostorinvCp(), form, false);
// 插入主表
this.save(stIvtIostorinvCp);
@@ -394,7 +400,6 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
StIvtStructattr attrDao = new StIvtStructattr();
// 1.根据仓库、库区找出一个仓位
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getById(disDao.getStoragevehicle_id());
if (ObjectUtil.isEmpty(struct_id)) {
/* 自动分配 */
@@ -409,7 +414,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
} else {
/* 手动分配 */
if (StrUtil.equals(vehicleDao.getOverstruct_type(),IOSEnum.IS_USED.code("")))
if (StrUtil.equals(whereJson.getString("vehicle_overstruct_type"),IOSEnum.VEHICLE_OVER_TYPE.code("横向超")))
throw new BadRequestException("载具超限请自动分配!");
// 查出对应仓位
@@ -431,6 +436,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
attrDao.setInv_type(IOSEnum.IO_TYPE.code("入库"));
attrDao.setInv_id(mstDao.getIostorinv_id());
attrDao.setInv_code(mstDao.getBill_code());
if (StrUtil.equals(whereJson.getString("vehicle_overstruct_type"),IOSEnum.VEHICLE_OVER_TYPE.code("横向超"))) {
attrDao.setIs_zdepth(IOSEnum.IS_USED.code(""));
}
iStIvtStructattrService.updateById(attrDao);
// 4.更新库存
@@ -440,7 +448,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
)
.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getMaterial_id));
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id));
for (List<StIvtIostorinvdisCp> list : collect.values()) {
@@ -454,8 +462,10 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao_1.getIostorinvdtl_id());
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao_1,ChangeIvtUtil.ADDWAREHOUSING_QTY,dtlDao.getBase_billdtl_id()));
JSONObject param = ivtDataParam(disDao_1, ChangeIvtUtil.ADDWAREHOUSING_QTY, dtlDao.getBase_billdtl_id());
param.put("product_area", mstDao.getProduct_area());
param.put("stor_id", mstDao.getStor_id());
iStIvtStructivtCpService.UpdateIvt(param);
}
}
@@ -502,28 +512,32 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.lt(SchBaseTask::getTask_status, TaskStatusEnum.ISSUE.getCode())
);
// 判断载具是否超限
StIvtStructattr attrDao = iStIvtStructattrService.getById(disDao.getStruct_id());
if (StrUtil.equals(attrDao.getIs_zdepth(),IOSEnum.IS_USED.code(""))) {
// 解锁超限货位
iStIvtStructattrService.update(
new UpdateWrapper<StIvtStructattr>().lambda()
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(StIvtStructattr::getStruct_id,attrDao.getControl_code())
);
}
// 解锁货位
iStIvtStructattrService.update(
new StIvtStructattr()
.setLock_type(IOSEnum.LOCK_TYPE.code("未锁定"))
.setInv_code("")
.setInv_type("")
.setIs_zdepth("")
.setInv_id(""),
new QueryWrapper<StIvtStructattr>().lambda()
.eq(StIvtStructattr::getStruct_code, disDao.getStruct_code())
.eq(StIvtStructattr::getStruct_id, disDao.getStruct_id())
);
// 判断载具是否超限
if (StrUtil.equals(whereJson.getString("vehicle_overstruct_type"),IOSEnum.VEHICLE_OVER_TYPE.code("横向超"))) {
// 解锁超限货位
iStIvtStructattrService.update(
new UpdateWrapper<StIvtStructattr>().lambda()
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(StIvtStructattr::getControl_code,disDao.getStruct_id())
);
}
// 更新库存
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
@@ -531,7 +545,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
)
.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getMaterial_id));
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id));
for (List<StIvtIostorinvdisCp> list : collect.values()) {
@@ -543,7 +557,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
StIvtIostorinvdisCp disDao_1 = list.get(0);
disDao_1.setPlan_qty(qty);
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao_1,ChangeIvtUtil.SUBWAREHOUSING_QTY,null));
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao_1.getIostorinvdtl_id());
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao_1,ChangeIvtUtil.SUBWAREHOUSING_QTY,dtlDao.getBase_billdtl_id()));
}
@@ -715,12 +731,24 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
}
// 2更新库存
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY,null));
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(dao.getIostorinvdtl_id());
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY,dtlDao.getBase_billdtl_id()));
// 3解锁终点
unLockNext(dao.getStruct_id(),dao.getStoragevehicle_code());
}
// 6.更新销售单生产数量
for (StIvtIostorinvdtlCp dao : dtlDaoList) {
MpsSaleOrder orderDao = iMpsSaleOrderService.getById(dao.getBase_billdtl_id());
if (ObjectUtil.isNotEmpty(orderDao)) {
orderDao.setProduct_qty(NumberUtil.add(orderDao.getProduct_qty(),dao.getAssign_qty()));
iMpsSaleOrderService.updateById(orderDao);
}
}
}
@Override
@@ -873,6 +901,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
stIvtIostorinvCp.setStor_id(bsrealDao.getStor_id());
stIvtIostorinvCp.setStor_code(bsrealDao.getStor_code());
stIvtIostorinvCp.setStor_name(bsrealDao.getStor_name());
stIvtIostorinvCp.setProduct_area(bsrealDao.getProduct_area());
stIvtIostorinvCp.setTotal_qty(whereJson.getBigDecimal("total_qty"));
stIvtIostorinvCp.setDetail_count(rows.size());
stIvtIostorinvCp.setRemark(whereJson.getString("remark"));

View File

@@ -81,14 +81,14 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
.eq(MdMeMaterialbase::getMaterial_code, json.getString("material_code"))
);
if (ObjectUtil.isNotEmpty(row.getSource_bill_code())) {
if (ObjectUtil.isNotEmpty(row.getBase_bill_code())) {
MpsSaleOrder orderDao = iMpsSaleOrderService.getOne(
new QueryWrapper<MpsSaleOrder>().lambda()
.eq(MpsSaleOrder::getSale_code, row.getBase_bill_code())
.eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table())
);
if (ObjectUtil.isEmpty(orderDao))
throw new BadRequestException("销售单号错误!");
throw new BadRequestException("销售单不存在!");
row.setBase_billdtl_id(orderDao.getSale_id().toString());
row.setBase_bill_code(orderDao.getSale_code());

View File

@@ -6,6 +6,7 @@
SELECT
der.*,
mater.material_name,
mater.material_spec,
unit.unit_name AS qty_unit_name
FROM
ST_IF_DeliveryOrder_CP der
@@ -18,16 +19,16 @@
and der.deliver_code = #{query.deliver_code}
</if>
<if test="query.material_code != null">
and der.material_code >= #{query.material_code}
and der.material_code like #{query.material_code}
</if>
<if test="query.status != null">
and der.status >= #{query.status}
and der.status = #{query.status}
</if>
<if test="query.cust_code != null">
and der.cust_code >= #{query.cust_code}
and der.cust_code like #{query.cust_code}
</if>
<if test="query.sale_code != null">
and der.sale_code >= #{query.sale_code}
and der.sale_code like #{query.sale_code}
</if>
</where>

View File

@@ -8,7 +8,7 @@
FROM
ST_IVT_StructIvt_CP ivt
LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id
WHERE attr.lock_type = '0'
WHERE ivt.canuse_qty > 0 and ivt.frozen_qty = 0
<if test="stor_id != null and stor_id != ''">
and attr.stor_id = #{stor_id}
</if>
@@ -34,6 +34,7 @@
attr.storagevehicle_code,
mater.material_code,
mater.material_name,
mater.material_spec,
unit.unit_name AS qty_unit_name
FROM
ST_IVT_StructIvt_CP ivt
@@ -144,30 +145,48 @@
attr.sect_name,
ivt.struct_code,
ivt.struct_name,
mater.material_id,
mater.material_name,
mater.material_code,
mater.material_spec,
attr.storagevehicle_code,
ivt.canuse_qty,
ivt.frozen_qty,
ivt.ivt_qty,
ivt.warehousing_qty,
unit.unit_name,
ivt.instorage_time
unit.measure_unit_id,
ivt.instorage_time,
sale.sale_code,
sale.seq_no,
sale.sale_id,
sale.sale_type
FROM
st_ivt_structivt_cp ivt
LEFT JOIN md_me_materialbase mater ON ivt.material_id = mater.material_id
LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id
LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ivt.qty_unit_id
LEFT JOIN mps_sale_order sale ON sale.sale_id = ivt.sale_id
<where>
1=1
<if test="query.material_code!= null and query.material_code != ''">
and mater.material_code LIKE #{query.material_code} or
(mater.material_name LIKE #{query.material_code})
(mater.material_name LIKE #{query.material_code}) or
(mater.material_spec LIKE #{query.material_code})
</if>
<if test="query.struct_code!= null and query.struct_code != ''">
and attr.struct_code LIKE #{query.struct_code} or
(attr.struct_name LIKE #{query.struct_code})
</if>
<if test="query.sale_code!= null and query.sale_code != ''">
and sale.sale_code LIKE #{query.sale_code}
</if>
<if test="query.seq_no!= null and query.seq_no != ''">
and sale.seq_no LIKE #{query.seq_no}
</if>
<if test="query.lock_type!= null and query.lock_type != ''">
and attr.lock_type = #{query.lock_type}
</if>
<if test="query.start_time!= null and query.start_time != ''">
and ivt.instorage_time &gt;= #{query.start_time}
</if>

View File

@@ -18,6 +18,12 @@ public class CpIvtQuery extends BaseQuery<StIvtStructivtCp> {
private String material_code;
private String sale_code;
private String seq_no;
private String lock_type;
@Override
public void paramMapping() {
super.doP.put("struct_code", QParam.builder().k(new String[]{"struct_code"}).type(QueryTEnum.LK).build());

View File

@@ -145,7 +145,7 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl<StIvtStructivtCpMap
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"))
.eq(StIvtStructivtCp::getSale_id, json.getString("sale_id"))
);
if (ObjectUtil.isEmpty(ivtDao)) {
@@ -170,6 +170,9 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl<StIvtStructivtCpMap
dao.setWarehousing_qty(json.getBigDecimal("change_qty"));
dao.setQty_unit_id(materDao.getBase_unit_id());
dao.setSale_id(json.getString("sale_id"));
dao.setProduct_area(json.getString("product_area"));
dao.setStor_id(json.getString("stor_id"));
dao.setUnit_weight(materDao.getNet_weight());
this.save(dao);
} else {
@@ -189,7 +192,7 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl<StIvtStructivtCpMap
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"))
.eq(StIvtStructivtCp::getSale_id, json.getString("sale_id"))
);
if (ObjectUtil.isEmpty(ivtDao)) {
@@ -221,7 +224,7 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl<StIvtStructivtCpMap
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"))
.eq(StIvtStructivtCp::getSale_id, json.getString("sale_id"))
);
if (ObjectUtil.isEmpty(ivtDao)) {

View File

@@ -16,7 +16,7 @@ public class RuleUtil {
/*
* 出库分配:
* 根据 仓库、库区、物料、销售单找库存
* 根据 仓库、库区、物料、销售单、行号找库存
*/
public static final String PRODUCTION_OUT_1 = "out_1";