fix: 代码修复

This commit is contained in:
2023-05-25 21:42:15 +08:00
parent 8e624a40ce
commit cc15c50bbf
14 changed files with 548 additions and 126 deletions

View File

@@ -3,6 +3,8 @@ 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;
@@ -15,6 +17,7 @@ import lombok.EqualsAndHashCode;
* @since 2023-05-10
*/
@Data
@Builder
@EqualsAndHashCode(callSuper = false)
@TableName("md_pb_bucketrecord")
public class MdPbBucketrecord implements Serializable {

View File

@@ -1,12 +1,11 @@
package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
* 生产订单表
@@ -96,17 +95,71 @@ public class MpsSaleOrder implements Serializable {
* 创建人姓名
*/
private String create_name;
private String audit_optid;
private String audit_time;
private String audit_optname;
private String confirm_optid;
private String confirm_optname;
private String confirm_time;
private String is_delete;
private String remark;
private String workshop_id;
private String product_qty;
private String instor_qty;
private String sendout_qty;
}
/**
* 创建时间
*/
private String create_time;
/**
* 提交人
*/
private Long audit_optid;
/**
* 提交时间
*/
private String audit_time;
/**
* 提交人姓名
*/
private String audit_optname;
/**
* 确认人
*/
private Long confirm_optid;
/**
* 确认人姓名
*/
private String confirm_optname;
/**
* 确认时间
*/
private String confirm_time;
/**
* 是否删除
*/
private String is_delete;
/**
* 备注
*/
private String remark;
/**
* 车间标识
*/
private Long workshop_id;
/**
* 生产数量
*/
private BigDecimal product_qty;
/**
* 预入库数量
*/
private BigDecimal instor_qty;
/**
* 发货数量
*/
private BigDecimal sendout_qty;
}

View File

@@ -98,4 +98,28 @@ public class IStivtlostorivnCpInController {
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/unDivStruct")
@Log("取消分配")
@ApiOperation("取消分配")
public ResponseEntity<Object> unDivStruct(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpService.unDivStruct(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/setPoint")
@Log("设置起点")
@ApiOperation("设置起点")
public ResponseEntity<Object> setPoint(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpService.setPoint(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/confirm")
@Log("强制确认")
@ApiOperation("强制确认")
public ResponseEntity<Object> confirm(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpService.confirm(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -117,4 +117,31 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
* }
*/
void divStruct(JSONObject whereJson);
/**
* 取消分配
* @param whereJson
* {
* 分配明细
* }
*/
void unDivStruct(JSONObject whereJson);
/**
* 设置起点
* @param whereJson
* {
* 分配明细
* }
*/
void setPoint(JSONObject whereJson);
/**
* 强制确认
* @param whereJson
* {
* ""
* }
*/
void confirm(JSONObject whereJson);
}

View File

@@ -1,7 +1,9 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -11,18 +13,28 @@ import io.jsonwebtoken.lang.Assert;
import org.jetbrains.annotations.NotNull;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.publish.BussEventMulticaster;
import org.nl.common.publish.event.PointEvent;
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;
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.product_manage.sch.manage.TaskStatusEnum;
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.IStIvtIostorinvCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService;
@@ -34,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;
@@ -41,7 +55,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Collectors;
/**
@@ -79,12 +96,23 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
@Autowired
protected IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务
@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());
@@ -208,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"))
@@ -321,6 +349,10 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
6.更新库存、日物流表等、
*/
// 判断是否已分配
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getOne(new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id")));
if (ObjectUtil.isNotEmpty(disDao.getStruct_code())) throw new BadRequestException("此明细已分配");
String struct_id = whereJson.getString("struct_id");
StIvtStructattr attrDao = new StIvtStructattr();
@@ -356,7 +388,211 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
attrDao.setInv_code(mstDao.getBill_code());
iStIvtStructattrService.updateById(attrDao);
// TODO 更新库存、物流等
// 4.更新库存
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao.getIostorinvdtl_id());
disDao.setStruct_id(attrDao.getStruct_id());
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.ADDWAREHOUSING_QTY,dtlDao.getSource_billdtl_id()));
}
@Override
@Transactional(rollbackFor = Exception.class)
public void unDivStruct(JSONObject whereJson) {
/*
将分配下的所有分配明细取消
*/
// 1.校验是否已生成任务并已经下发
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getOne(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id"))
);
if (ObjectUtil.isEmpty(disDao)) throw new BadRequestException("分配明细不存在!");
SchBaseTask taskDao = iSchBaseTaskService.getOne(
new QueryWrapper<SchBaseTask>().lambda()
.eq(SchBaseTask::getTask_id, disDao.getTask_id())
.gt(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode())
);
if (ObjectUtil.isNotEmpty(taskDao)) throw new BadRequestException("任务已下发,不可取消!");
// 2.更新分配明细
iStIvtIostorinvdisdtlCpService.update(
new StIvtIostorinvdisdtlCp()
.setStruct_name("")
.setStruct_code("")
.setStruct_id("")
.setSect_id("")
.setSect_code("")
.setSect_name(""),
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
.eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id,disDao.getIostorinvdis_id())
);
// 3.更新任务
// iSchBaseTaskService.update(
// new SchBaseTask().setIs_delete(true),
// new QueryWrapper<SchBaseTask>().lambda()
// .eq(SchBaseTask::getTask_id, disDao.getTask_id())
// .lt(SchBaseTask::getTask_status, TaskStatusEnum.ISSUE.getCode())
// );
// 解锁货位
iStIvtStructattrService.update(
new StIvtStructattr()
.setLock_type("1") // TODO 暂时写死
.setInv_code("")
.setInv_type("")
.setInv_id(""),
new QueryWrapper<StIvtStructattr>().lambda()
.eq(StIvtStructattr::getStruct_code, disDao.getStruct_code())
);
// 更新库存
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.SUBWAREHOUSING_QTY,null));
// 4.更新分配
iostorinvdisCpService.updateById(
disDao.setStruct_name("").setStruct_code("")
.setStruct_id("").setSect_id("")
.setSect_code("").setSect_name("")
.setPoint_id("").setPoint_code("")
.setPoint_name("")
);
// 5.更新明细
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getOne(
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, disDao.getIostorinvdtl_id())
);
if (StrUtil.equals(dtlDao.getBill_status(), IOSEnum.BILL_STATUS.code("生成"))) {
throw new BadRequestException("没有可取消的分配明细!");
}
dtlDao.setAssign_qty(NumberUtil.sub(dtlDao.getAssign_qty(),disDao.getReal_qty()));
dtlDao.setUnassign_qty(disDao.getReal_qty());
if (dtlDao.getAssign_qty().doubleValue() == 0) {
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
} else if (dtlDao.getAssign_qty().doubleValue() > 0) {
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
}
iostorinvdtlCpService.updateById(dtlDao);
// 6.更新主表
updateMst(dtlDao.getIostorinv_id());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void setPoint(JSONObject whereJson) {
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getById(whereJson.getString("iostorinvdis_id"));
// 1.校验是否设置过起点
if (ObjectUtil.isNotEmpty(disDao.getPoint_id())) throw new BadRequestException("此明细已生成任务!");
// 2.下发任务
SchBasePoint pointDao = iSchBasePointService.getOne(
new QueryWrapper<SchBasePoint>().lambda()
.eq(SchBasePoint::getPoint_code, whereJson.getString("point_code"))
);
PointEvent event = PointEvent.builder()
.type(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_SEND.getCode())
.point_code1(disDao.getStruct_code())
.point_code2(pointDao.getPoint_code())
.callback((Consumer<String>) disDao::setTask_id)
.build();
BussEventMulticaster.Publish(event);
// 3.更新分配表
iostorinvdisCpService.updateById(
disDao.setPoint_id(pointDao.getPoint_id())
.setPoint_code(pointDao.getPoint_code())
.setPoint_name(pointDao.getPoint_name())
);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void confirm(JSONObject whereJson) {
// 1.更新主表为完成
StIvtIostorinvCp mstDao = this.getById(whereJson.getString("iostorinv_id"));
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
mstDao.setConfirm_id(SecurityUtils.getCurrentUserId());
mstDao.setConfirm_name(SecurityUtils.getCurrentNickName());
mstDao.setConfirm_time(DateUtil.now());
this.updateById(mstDao);
// 2.判断所有明细是否为分配完
List<StIvtIostorinvdtlCp> dtlDaoList = iostorinvdtlCpService.list(
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
);
boolean is_dis = dtlDaoList.stream()
.anyMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完")));
if (!is_dis) throw new BadRequestException("请先分配单据!");
// 3.更新明细表为完成
iostorinvdtlCpService.update(
new StIvtIostorinvdtlCp()
.setBill_status(IOSEnum.BILL_STATUS.code("完成")),
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
);
// 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"))
);
for (StIvtIostorinvdisCp dao : disDaoList) {
// 1更新任务为完成
SchBaseTask taskDao = iSchBaseTaskService.getById(dao.getTask_id());
if (ObjectUtil.isNotEmpty(taskDao)) {
// 更新有任务分配
if (!StrUtil.equals(taskDao.getTask_id(), TaskStatusEnum.FINISHED.getCode())) {
taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode());
iSchBaseTaskService.updateById(taskDao);
}
}
// 2更新库存
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY,null));
// 3解锁终点
unLockNext(dao.getStruct_id(),dao.getStoragevehicle_code());
}
}
@NotNull
@@ -378,6 +614,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
stIvtIostorinvCp.setSysdeptid("111");
stIvtIostorinvCp.setSyscompanyid("111");
}else {
// 修改
stIvtIostorinvCp.setUpdate_id(SecurityUtils.getCurrentUserId());
stIvtIostorinvCp.setUpdate_name(SecurityUtils.getCurrentNickName());
@@ -427,14 +664,14 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
// 2.更新分配表
iostorinvdisCpService.update(
new StIvtIostorinvdisCp()
.setSect_id(attrDao.getSect_id())
.setSect_code(attrDao.getSect_code())
.setSect_name(attrDao.getSect_name())
.setStruct_id(attrDao.getStruct_id())
.setStruct_code(attrDao.getStruct_code())
.setStruct_name(attrDao.getStruct_name()),
.setSect_id(attrDao.getSect_id())
.setSect_code(attrDao.getSect_code())
.setSect_name(attrDao.getSect_name())
.setStruct_id(attrDao.getStruct_id())
.setStruct_code(attrDao.getStruct_code())
.setStruct_name(attrDao.getStruct_name()),
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
);
// 3.更新明细表
@@ -445,11 +682,11 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
iostorinvdtlCpService.update(
new StIvtIostorinvdtlCp()
.setBill_status(IOSEnum.BILL_STATUS.code("分配完"))
.setAssign_qty(unassign_qty)
.setUnassign_qty(new BigDecimal(0)),
.setBill_status(IOSEnum.BILL_STATUS.code("分配完"))
.setAssign_qty(unassign_qty)
.setUnassign_qty(new BigDecimal(0)),
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
);
// 4.更新主表
@@ -493,7 +730,45 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
}
// 判断是否为生成
boolean is_create = dtlDaoList
.stream()
.allMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成")));
if (is_create) mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
this.updateById(mstDao);
}
public JSONObject ivtDataParam(StIvtIostorinvdisCp disDao,String change_type,String sale_id) {
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", change_type);
ivtParam.put("sale_id", sale_id);
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())
.instor_optid(Long.getLong(SecurityUtils.getCurrentUserId()))
.instor_optname(SecurityUtils.getCurrentNickName())
.instor_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.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -74,7 +75,9 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
row.setMaterial_id(materDao.getMaterial_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

@@ -75,7 +75,7 @@ export default {
return CRUD({
title: '点位',
optShow: {},
url: 'api/region/getPointQuery',
url: 'api/mpsSaleOrder',
idField: 'region_code',
sort: 'region_code,desc',
query: { search: '', is_lock: '1', lock_type: '', sect_id: '', stor_id: '' },

View File

@@ -62,28 +62,6 @@
/>
</el-select>
</el-form-item>
<el-form-item label="车间" prop="workshop_id">
<label slot="label">车间</label>
<el-select
v-model="form.workshop_id"
clearable
size="mini"
placeholder="全部"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.product_area"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="仓位" prop="struct_id">
<label slot="label">仓位:</label>
<el-input v-model="form.struct_id" size="mini" disabled style="width: 210px" />
</el-form-item>
<el-form-item label="单据状态" prop="bill_status">
<el-select
v-model="form.bill_status"
@@ -226,7 +204,7 @@ import CRUD, { crud, form } from '@crud/crud'
import crudProductIn from '@/views/wms/storage_manage/product/productIn/productin'
import MaterDtl from '@/views/wms/pub/MaterDialog'
import AddDtl from '@/views/wms/storage_manage/product/productIn/AddDtl'
import crudStorattr from "@/api/wms/basedata/st/storattr"
import crudStorattr, {getStor} from '@/views/wms/storage_manage/basedata/basedata'
const defaultForm = {
bill_code: '',
@@ -288,7 +266,7 @@ export default {
},
methods: {
open() {
crudStorattr.queryStor().then(res => {
crudStorattr.getStor({ 'stor_type': '4' }).then(res => {
this.storlist = res.content
})
},
@@ -377,7 +355,6 @@ export default {
data.edit = true
this.form.tableData.splice(-1, 0, data)
this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(data.plan_qty)
this.form.detail_count = this.form.tableData.length
}
},

View File

@@ -208,6 +208,18 @@
<el-table-column show-overflow-tooltip prop="struct_code" label="货位" align="center" />
<el-table-column show-overflow-tooltip prop="point_code" label="入库点" align="center" />
<el-table-column show-overflow-tooltip prop="task_code" label="任务号" align="center" />
<el-table-column align="center" label="操作" width="170" fixed="right">
<template scope="scope">
<el-button
type="danger"
class="filter-item"
size="mini"
:disabled="disabledIos(scope.row)"
icon="el-icon-delete"
@click.native.prevent="deleteRow(scope.$index, form.tableMater)"
/>
</template>
</el-table-column>
</el-table>
</el-card>
@@ -285,6 +297,14 @@ export default {
}
},
methods: {
disabledIos(row) {
debugger
if (row.iostorinvdis_id === undefined) {
return false
} else {
return true
}
},
open() {
crudSectattr.getSect({ 'stor_id': this.storId }).then(res => {
this.sects = res.content
@@ -381,6 +401,9 @@ export default {
this.form.tableMater.splice(-1, 0, item)
}
},
deleteRow(index, rows) {
rows.splice(index, 1)
},
tableRowClassName({ row, rowIndex }) {
row.index = rowIndex
},
@@ -441,9 +464,14 @@ export default {
return
}
crudProductIn.confirmvehicle(this.form).then(res => {
this.crud.notify('组盘成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.form.vehicle_code = ''
this.form.bucketunique = ''
crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id }).then(res => {
this.form.vehicle_code = ''
this.form.bucketunique = ''
this.openParam = res
this.form.tableMater = []
this.dis_row = null
this.crud.notify('组盘成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
})
},
@@ -487,25 +515,6 @@ export default {
row.qty = row.storage_qty
this.bucketuniqueObj = row
},
divPoint() {
if (!this.form.point_code) {
this.crud.notify('请选择入库点', CRUD.NOTIFICATION_TYPE.INFO)
return
}
if (this.form.tableMater.length === 0) {
this.crud.notify('请先选择一条明细!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudProductIn.divPoint(this.form).then(res => {
crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).then(res => {
this.openParam = res
})
crudProductIn.getDisDtl(this.form.dtl_row).then(res => {
this.form.tableMater = res
this.crud.notify('设置起点成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
})
},
divStruct() {
if (this.dis_row === null) {
this.crud.notify('请先选择一条分配明细!', CRUD.NOTIFICATION_TYPE.INFO)
@@ -519,17 +528,16 @@ export default {
if (this.form.checked) {
this.divBtn = true
debugger
this.dis_row.stor_id = this.stor_id
this.dis_row.sect_id = this.sect_id
crudProductIn.divStruct(this.dis_row).then(res => {
/* crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).then(res => {
crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => {
this.openParam = res
this.form.tableMater = []
this.dis_row = null
this.crud.notify('分配成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
crudProductIn.getDisDtl(this.form.dtl_row).then(res => {
this.form.tableMater = res
this.divBtn = false
this.crud.notify('分配货位成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})*/
}).finally(() => {
this.divBtn = false
})
@@ -539,23 +547,36 @@ export default {
}
},
unDivStruct() {
if (this.form.tableMater.length <= 0) {
this.crud.notify('不存在载具明细!', CRUD.NOTIFICATION_TYPE.INFO)
if (this.dis_row === null) {
this.crud.notify('请先选择一条分配明细!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
const flag = this.form.tableMater.some(mater => !mater.struct_code)
if (flag) {
this.crud.notify('明细存在未分配货位!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
// 如果勾选了,直接跳后台
crudProductIn.unDivStruct(this.form).then(res => {
crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).then(res => {
crudProductIn.unDivStruct(this.dis_row).then(res => {
crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => {
this.openParam = res
this.form.tableMater = []
this.dis_row = null
this.crud.notify('取消成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
crudProductIn.getDisDtl(this.form.dtl_row).then(res => {
this.form.tableMater = res
this.crud.notify('取消分配成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
},
divPoint() {
if (!this.form.point_code) {
this.crud.notify('请选择入库点', CRUD.NOTIFICATION_TYPE.INFO)
return
}
if (this.dis_row === null) {
this.crud.notify('请先选择一条明细!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
this.dis_row.point_code = this.form.point_code
crudProductIn.setPoint(this.dis_row).then(res => {
crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => {
this.openParam = res
this.form.tableMater = []
this.dis_row = null
this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
})
}

View File

@@ -235,13 +235,13 @@ export default {
this.currentDis = current
},
queryTableDtl() {
crudProductIn.getIODtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => {
crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => {
this.tableDtl = res
})
},
queryTableDdis() {
if (this.currentdtl !== null) {
crudProductIn.getDisTask({ 'iostorinvdtl_id': this.currentdtl.iostorinvdtl_id }).then(res => {
crudProductIn.getIosInvDis({ "iostorinvdtl_id": this.currentdtl.iostorinvdtl_id }).then(res => {
this.tabledis = res
}).catch(() => {
this.tabledis = []

View File

@@ -141,17 +141,17 @@
>
分配
</el-button>
<el-button
slot="right"
class="filter-item"
type="success"
:disabled="dis_flag"
icon="el-icon-position"
size="mini"
@click="divOpen"
>
作业任务
</el-button>
<!-- <el-button
slot="right"
class="filter-item"
type="success"
:disabled="dis_flag"
icon="el-icon-position"
size="mini"
@click="divOpen"
>
作业任务
</el-button>-->
<el-button
slot="right"
class="filter-item"
@@ -235,7 +235,7 @@ import DateRangePicker from '@/components/DateRangePicker/index'
import AddDialog from '@/views/wms/storage_manage/product/productIn/AddDialog'
import DivDialog from '@/views/wms/storage_manage/product/productIn/DivDialog'
import ViewDialog from '@/views/wms/storage_manage/product/productIn/ViewDialog'
import crudStorattr from '@/api/wms/basedata/st/storattr'
import crudStorattr, {getStor} from '@/views/wms/storage_manage/basedata/basedata'
import { mapGetters } from 'vuex'
export default {
@@ -281,7 +281,7 @@ export default {
}
},
created() {
crudStorattr.queryStor().then(res => {
crudStorattr.getStor({ 'stor_type': '4' }).then(res => {
this.storlist = res.content
})
},
@@ -341,7 +341,7 @@ export default {
this.crud.notify('请选择一条单据', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudProductIn.confirm(this.currentRow).then(res => {
crudProductIn.confirm({ 'iostorinv_id': this.currentRow.iostorinv_id }).then(res => {
this.crud.notify('单据确认成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})

View File

@@ -66,7 +66,31 @@ export function getSect(data) {
export function divStruct(data) {
return request({
url: '/api/stIvtSectattr/divStruct',
url: '/api/productIn/divStruct',
method: 'post',
data
})
}
export function unDivStruct(data) {
return request({
url: '/api/productIn/unDivStruct',
method: 'post',
data
})
}
export function setPoint(data) {
return request({
url: '/api/productIn/setPoint',
method: 'post',
data
})
}
export function confirm(data) {
return request({
url: '/api/productIn/confirm',
method: 'post',
data
})
@@ -81,5 +105,8 @@ export default {
vehicleCheck,
confirmvehicle,
getSect,
divStruct
divStruct,
unDivStruct,
setPoint,
confirm
}