rev: 成品出入库修改
This commit is contained in:
@@ -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;
|
||||
|
||||
/**
|
||||
* 生产数量
|
||||
|
||||
@@ -29,6 +29,8 @@ public class IostorInvQuery extends BaseQuery<StIvtIostorinvCp> {
|
||||
|
||||
private String io_type;
|
||||
|
||||
private String product_area;
|
||||
|
||||
private Boolean is_delete = false;
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 >= #{query.start_time}
|
||||
</if>
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
@@ -16,7 +16,7 @@ public class RuleUtil {
|
||||
|
||||
/*
|
||||
* 出库分配:
|
||||
* 根据 仓库、库区、物料、销售单找库存
|
||||
* 根据 仓库、库区、物料、销售单、行号找库存
|
||||
*/
|
||||
public static final String PRODUCTION_OUT_1 = "out_1";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user