rev: 成品入库修改

This commit is contained in:
2023-06-16 08:49:44 +08:00
parent caa6ce91b2
commit 20ab356de0
11 changed files with 378 additions and 222 deletions

View File

@@ -7,6 +7,7 @@
der.*,
mater.material_code,
mater.material_name,
mater.material_spec,
unit.unit_name AS qty_unit_name
FROM
mps_sale_order der

View File

@@ -19,6 +19,8 @@ public enum IOSEnum {
IO_TYPE(MapOf.of("入库", "0", "出库", "1")),
//是否
IS_USED(MapOf.of("", "1", "", "0")),
//托盘超限类型
VEHICLE_OVER_TYPE(MapOf.of("标准", "00", "横向超", "01","纵向超","02")),
//单据类型
BILL_TYPE(MapOf.of("生产入库", "11", "手工入库", "12", "原料入库", "13"
, "领料出库", "21", "销售出库", "22", "手工出库", "23")),

View File

@@ -75,11 +75,10 @@ public class IStivtlostorivnCpInController {
}
@PostMapping("/vehicleCheck")
@Log("校验载具是否存在")
@ApiOperation("校验载具是否存在")
public ResponseEntity<Object> vehicleCheck(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpService.vehicleCheck(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
@Log("生成载具")
@ApiOperation("生成载具")
public ResponseEntity<Object> vehicleCheck(){
return new ResponseEntity<>(iStIvtIostorinvCpService.vehicleCheck(),HttpStatus.OK);
}
@PostMapping("/confirmvehicle")

View File

@@ -110,13 +110,13 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
void delete(Long[] ids);
/**
* 校验载具是否存在
* @param whereJson
* 生成载具编码
* @return JSONObject
* {
* "storagevehicle_code" : 载具号
* vehicle_code 编码
* }
*/
void vehicleCheck(JSONObject whereJson);
JSONObject vehicleCheck();
/**
* 分配

View File

@@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -201,8 +202,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
1.插入分配明细表
2.插入分配表
3.更新明细表
4.更新扩展属性表
5.更新箱记录表 (有箱号才更新)
4.更新箱记录表 (有箱号才更新)
*/
JSONObject jsonDtl = whereJson.getJSONObject("dtl_row");
JSONArray tableDisDtl = whereJson.getJSONArray("tableMater");
@@ -210,24 +210,15 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
/*
处理有箱号分配明细: 要插入分配明细表
*/
// 校验是否已经组盘
StIvtIostorinvdisCp disIs = iostorinvdisCpService.getOne(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, jsonDtl.getString("iostorinvdtl_id"))
);
if (ObjectUtil.isNotEmpty(disIs)) throw new BadRequestException("此明细已组盘");
List<JSONObject> disDtlList = tableDisDtl
.stream()
.map(row -> (JSONObject) row)
.filter(row -> ObjectUtil.isNotEmpty(row.getString("bucketunique")))
.filter(row -> ObjectUtil.isEmpty(row.getString("iostorinvdis_id")))
.collect(Collectors.toList());
// 1.处理分配明细数据
JSONObject param = new JSONObject();
param.put("iostorinv_id",jsonDtl.getString("iostorinv_id"));
param.put("iostorinvdtl_id",jsonDtl.getString("iostorinvdtl_id"));
param.put("iostorinvdis_id",org.nl.common.utils.IdUtil.getStringId());
if (ObjectUtil.isNotEmpty(disDtlList)) {
@@ -238,7 +229,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
// 3.根据托盘分组
Map<String, List<StIvtIostorinvdisdtlCp>> collect = disDtlDaoListAll
.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisdtlCp::getStoragevehicle_code));
.collect(Collectors.groupingBy(StIvtIostorinvdisdtlCp::getIostorinvdtl_id));
for (List<StIvtIostorinvdisdtlCp> disDtlDaoList : collect.values()) {
// 3.调用服务插入分配明细
@@ -256,8 +247,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
// 插入分配
StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp()
.setIostorinvdis_id(IdUtil.getStringId())
.setIostorinv_id(param.getString("iostorinv_id"))
.setIostorinvdtl_id(param.getString("iostorinvdtl_id"))
.setIostorinv_id(disDtlDao.getIostorinv_id())
.setIostorinvdtl_id(disDtlDao.getIostorinvdtl_id())
.setSeq_no(1)
.setMaterial_id(disDtlDao.getMaterial_id())
.setPcsn(disDtlDao.getPcsn())
@@ -281,21 +272,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
new StIvtIostorinvdisdtlCp().setIostorinvdis_id(disDao.getIostorinvdis_id()),
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
.eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id, param.getString("iostorinvdis_id"))
.eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, disDao.getStoragevehicle_code())
.eq(StIvtIostorinvdisdtlCp::getIostorinvdtl_id, disDao.getIostorinvdtl_id())
);
// 6.更新载具扩展属性表
MdPbStoragevehicleext vehicleDao = new MdPbStoragevehicleext();
vehicleDao.setMaterial_id(disDtlDao.getMaterial_id());
vehicleDao.setStorage_qty(qty);
vehicleDao.setUpdate_id(SecurityUtils.getCurrentUserId());
vehicleDao.setUpdate_name(SecurityUtils.getCurrentNickName());
vehicleDao.setUpdate_time(new Date());
iMdPbStoragevehicleextService.update(
vehicleDao,new QueryWrapper<MdPbStoragevehicleext>().lambda()
.eq(MdPbStoragevehicleext::getStoragevehicle_code, disDtlDao.getStoragevehicle_code())
);
}
}
@@ -306,6 +285,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.stream()
.map(row -> (JSONObject) row)
.filter(row -> ObjectUtil.isEmpty(row.getString("bucketunique")))
.filter(row -> ObjectUtil.isEmpty(row.getString("iostorinvdis_id")))
.collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(unDisDtlList)) {
@@ -320,48 +300,53 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
@Override
@Transactional(rollbackFor = Exception.class)
public void cancelConfirmvehicle(JSONObject whereJson) {
String bucketunique = whereJson.getString("bucketunique");
// 1.校验是否分配了货位
List<StIvtIostorinvdisCp> disDaoList = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
);
if (ObjectUtil.isEmpty(disDaoList)) throw new BadRequestException("没有可取消组盘的分配明细!");
boolean is_struct = disDaoList.stream()
.anyMatch(row -> ObjectUtil.isNotEmpty(row.getStruct_id()));
if (is_struct) throw new BadRequestException("有分配明细已分配货位不可取消组盘!");
// 2.更新载具扩展属性、 箱记录
Map<String, List<StIvtIostorinvdisCp>> collect = disDaoList.stream().collect(Collectors.groupingBy(StIvtIostorinvdisCp::getStoragevehicle_code));
for (String storagevehicle_code : collect.keySet()) {
// 更新载具扩展属性
iMdPbStoragevehicleextService.update(
new UpdateWrapper<MdPbStoragevehicleext>().lambda()
.set(MdPbStoragevehicleext::getMaterial_id, "")
.set(MdPbStoragevehicleext::getStorage_qty, "0")
.eq(MdPbStoragevehicleext::getStoragevehicle_code, storagevehicle_code)
);
if (ObjectUtil.isNotEmpty(whereJson.getString("struct_id"))) throw new BadRequestException("已分配货位,不可取消组盘!");
// 2.判断是否有箱,有则更新箱记录表、分配表
if (ObjectUtil.isNotEmpty(bucketunique)) {
// 更新箱记录表
iMdPbBucketrecordService.update(
new UpdateWrapper<MdPbBucketrecord>().lambda()
.set(MdPbBucketrecord::getStoragevehicle_code, "")
.set(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("生成"))
.set(MdPbBucketrecord::getStoragevehicle_id, "")
.eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("组盘"))
.eq(MdPbBucketrecord::getStoragevehicle_code, storagevehicle_code)
.set(MdPbBucketrecord::getStoragevehicle_code, "")
.set(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("生成"))
.set(MdPbBucketrecord::getStoragevehicle_id, "")
.eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("组盘"))
.eq(MdPbBucketrecord::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
);
// 删除分配明细
iStIvtIostorinvdisdtlCpService.remove(
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
.eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id"))
.eq(StIvtIostorinvdisdtlCp::getBucketunique, bucketunique)
);
// 更新分配表
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getById(whereJson.getString("iostorinvdis_id"));
BigDecimal qty = NumberUtil.sub(disDao.getReal_qty(), whereJson.getBigDecimal("qty"));
disDao.setReal_qty(qty);
disDao.setPlan_qty(qty);
if (disDao.getReal_qty().doubleValue() <= 0) {
// 删除分配
iostorinvdisCpService.removeById(disDao);
} else {
// 更新
iostorinvdisCpService.updateById(disDao);
}
} else {
// 3无箱 - 直接删除分配
iostorinvdisCpService.remove(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id"))
);
}
// 3.删除分配表
iostorinvdisCpService.remove(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
);
}
@@ -378,29 +363,13 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
}
@Override
public void vehicleCheck(JSONObject whereJson) {
public JSONObject vehicleCheck() {
// 1.校验载具是否存在
MdPbStoragevehicleinfo daoVehicle = iMdPbStoragevehicleinfoService.getOne(
new QueryWrapper<MdPbStoragevehicleinfo>().lambda()
.eq(MdPbStoragevehicleinfo::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
.eq(MdPbStoragevehicleinfo::getIs_used, true)
);
// 生成编码返回
JSONObject json = new JSONObject();
json.put("vehicle_code", CodeUtil.getNewCode("VEHICCLE_CODE_CDMTP"));
return json;
if (ObjectUtil.isEmpty(daoVehicle)) throw new BadRequestException("此载具不存在或未启用");
// 2.校验载具是否已组盘
MdPbStoragevehicleext daoVehicleExt = iMdPbStoragevehicleextService.getOne(
new QueryWrapper<MdPbStoragevehicleext>().lambda()
.eq(MdPbStoragevehicleext::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
);
if (ObjectUtil.isEmpty(daoVehicleExt)) {
throw new BadRequestException("此载具扩展属性不存在,请维护!");
} else {
if (ObjectUtil.isNotEmpty(daoVehicleExt.getMaterial_id()))
throw new BadRequestException("此载具已组盘!");
}
}
@Override
@@ -430,7 +399,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
/* 自动分配 */
// 判断载具是否超限
if (StrUtil.equals(vehicleDao.getOverstruct_type(),IOSEnum.IS_USED.code(""))) {
if (StrUtil.equals(whereJson.getString("vehicle_overstruct_type"),IOSEnum.VEHICLE_OVER_TYPE.code("横向超"))) {
whereJson.put("rule_type", RuleUtil.PRODUCTION_IN_2);
} else {
whereJson.put("rule_type", RuleUtil.PRODUCTION_IN_1);
@@ -465,11 +434,29 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
iStIvtStructattrService.updateById(attrDao);
// 4.更新库存
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao.getIostorinvdtl_id());
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
)
.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getMaterial_id));
disDao.setStruct_id(attrDao.getStruct_id());
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.ADDWAREHOUSING_QTY,dtlDao.getSource_billdtl_id()));
for (List<StIvtIostorinvdisCp> list : collect.values()) {
BigDecimal qty = list
.stream()
.map(StIvtIostorinvdisCp::getReal_qty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
StIvtIostorinvdisCp disDao_1 = list.get(0);
disDao_1.setPlan_qty(qty);
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao_1.getIostorinvdtl_id());
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao_1,ChangeIvtUtil.ADDWAREHOUSING_QTY,dtlDao.getBase_billdtl_id()));
}
}
@Override
@@ -503,7 +490,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.setSect_code("")
.setSect_name(""),
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
.eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id,disDao.getIostorinvdis_id())
.eq(StIvtIostorinvdisdtlCp::getIostorinv_id,disDao.getIostorinv_id())
.eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, disDao.getStoragevehicle_code())
);
// 3.更新任务
@@ -526,9 +514,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
);
// 判断载具是否超限
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getById(disDao.getStoragevehicle_id());
if (StrUtil.equals(whereJson.getString("vehicle_overstruct_type"),IOSEnum.VEHICLE_OVER_TYPE.code("横向超"))) {
if (StrUtil.equals(vehicleDao.getOverstruct_type(),IOSEnum.IS_USED.code(""))) {
// 解锁超限货位
iStIvtStructattrService.update(
new UpdateWrapper<StIvtStructattr>().lambda()
@@ -538,41 +525,83 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
}
// 更新库存
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.SUBWAREHOUSING_QTY,null));
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
)
.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getMaterial_id));
// 4.更新分配
iostorinvdisCpService.updateById(
disDao.setStruct_name("").setStruct_code("")
.setStruct_id("").setSect_id("")
.setSect_code("").setSect_name("")
.setPoint_id("").setPoint_code("")
.setPoint_name("")
.setWork_status(IOSEnum.WORK_STATUS.code("生成"))
);
for (List<StIvtIostorinvdisCp> list : collect.values()) {
// 5.更新明细
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getOne(
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, disDao.getIostorinvdtl_id())
);
BigDecimal qty = list
.stream()
.map(StIvtIostorinvdisCp::getReal_qty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
StIvtIostorinvdisCp disDao_1 = list.get(0);
disDao_1.setPlan_qty(qty);
iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao_1,ChangeIvtUtil.SUBWAREHOUSING_QTY,null));
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());
// 4.更新明细
Map<String, List<StIvtIostorinvdisCp>> collect2 = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
)
.stream()
.filter(row -> ObjectUtil.isNotEmpty(row.getStruct_id()))
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id));
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("分配中"));
for (List<StIvtIostorinvdisCp> collectList : collect2.values()) {
// 计算已分配
BigDecimal qty = collectList
.stream()
.map(StIvtIostorinvdisCp::getReal_qty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(collectList.get(0).getIostorinvdtl_id());
// 明细已分配数量
BigDecimal assign_qty = NumberUtil.sub(dtlDao.getAssign_qty(), qty);
// 明细未分配数量
BigDecimal unAssign_qty = NumberUtil.add(dtlDao.getUnassign_qty(), qty);
dtlDao.setAssign_qty(assign_qty);
dtlDao.setUnassign_qty(unAssign_qty);
if (assign_qty.doubleValue() == 0) {
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
} else {
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
}
iostorinvdtlCpService.updateById(dtlDao);
}
iostorinvdtlCpService.updateById(dtlDao);
// 5.更新分配
iostorinvdisCpService.update(
new UpdateWrapper<StIvtIostorinvdisCp>().lambda()
.set(StIvtIostorinvdisCp::getStruct_id, "")
.set(StIvtIostorinvdisCp::getStruct_code, "")
.set(StIvtIostorinvdisCp::getStruct_name,"")
.set(StIvtIostorinvdisCp::getSect_id,"")
.set(StIvtIostorinvdisCp::getSect_code,"")
.set(StIvtIostorinvdisCp::getSect_name, "")
.set(StIvtIostorinvdisCp::getPoint_id, "")
.set(StIvtIostorinvdisCp::getPoint_code, "")
.set(StIvtIostorinvdisCp::getPoint_name,"")
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("生成"))
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
.eq(StIvtIostorinvdisCp::getIostorinv_id,whereJson.getString("iostorinv_id"))
);
// 6.更新主表
updateMst(dtlDao.getIostorinv_id());
updateMst(disDao.getIostorinv_id());
}
@@ -603,12 +632,17 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
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::getStoragevehicle_code, disDao.getStoragevehicle_code())
.eq(StIvtIostorinvdisCp::getIostorinv_id, disDao.getIostorinv_id())
);
}
@Override
@@ -695,9 +729,6 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
String task_id = form.getString("task_id");
String status = form.getString("status");
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getOne(new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id));
// 更新任务状态为完成
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
// 更新任务为完成
@@ -712,12 +743,23 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.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", false);
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", false);
iostorinvdisCpService.confirm(mst_jo);
}
} else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
// 更新任务为执行中
@@ -734,6 +776,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
);
} else if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
// 取消任务
StIvtIostorinvdisCp disDao = iostorinvdisCpService.getOne(new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getTask_id, task_id),false);
JSONObject param = new JSONObject();
param.put("iostorinvdis_id",disDao.getIostorinvdis_id());
delTask(param);
@@ -753,12 +798,16 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
);
// 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::getPoint_id, "")
.set(StIvtIostorinvdisCp::getPoint_code, "")
.set(StIvtIostorinvdisCp::getPoint_name,"")
.set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("未生成"))
.set(StIvtIostorinvdisCp::getTask_id, "")
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, disDao.getStoragevehicle_code())
.eq(StIvtIostorinvdisCp::getIostorinv_id, disDao.getIostorinv_id())
);
}
@Override
@@ -847,7 +896,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.setStruct_code(attrDao.getStruct_code())
.setStruct_name(attrDao.getStruct_name()),
new QueryWrapper<StIvtIostorinvdisdtlCp>().lambda()
.eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id"))
.eq(StIvtIostorinvdisdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
.eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
);
@@ -861,23 +910,45 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
.setStruct_code(attrDao.getStruct_code())
.setStruct_name(attrDao.getStruct_name()),
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
);
// 3.更新明细表
BigDecimal unassign_qty = iostorinvdtlCpService.getOne(
new QueryWrapper<StIvtIostorinvdtlCp>().lambda()
.eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id"))
).getUnassign_qty();
Map<String, List<StIvtIostorinvdisCp>> collect = iostorinvdisCpService.list(
new QueryWrapper<StIvtIostorinvdisCp>().lambda()
.eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id"))
.eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code"))
)
.stream()
.filter(row -> ObjectUtil.isNotEmpty(row.getStruct_id()))
.collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id));
iostorinvdtlCpService.update(
new StIvtIostorinvdtlCp()
.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"))
);
for (List<StIvtIostorinvdisCp> collectList : collect.values()) {
// 计算已分配
BigDecimal qty = collectList
.stream()
.map(StIvtIostorinvdisCp::getReal_qty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(collectList.get(0).getIostorinvdtl_id());
// 明细已分配数量
BigDecimal assign_qty = NumberUtil.add(dtlDao.getAssign_qty(), qty);
// 明细未分配数量
BigDecimal unAssign_qty = NumberUtil.sub(dtlDao.getUnassign_qty(), qty);
dtlDao.setAssign_qty(assign_qty);
dtlDao.setUnassign_qty(unAssign_qty);
if (unAssign_qty.doubleValue() == 0) {
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
} else {
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
}
iostorinvdtlCpService.updateById(dtlDao);
}
// 4.更新主表
updateMst(whereJson.getString("iostorinv_id"));

View File

@@ -92,11 +92,6 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
List<StIvtIostorinvdisCp> result = new ArrayList<>();
list.forEach(item -> {
// 获取载具信息
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
new QueryWrapper<MdPbStoragevehicleinfo>()
.eq("storagevehicle_code", item.getString("storagevehicle_code"))
);
// 获取物料信息
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne(
@@ -108,10 +103,13 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
new QueryWrapper<MdPbMeasureunit>().eq("measure_unit_id", materDao.getBase_unit_id())
);
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(item.getString("iostorinvdtl_id"));
StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp()
.setIostorinvdis_id(json.getString("iostorinvdis_id"))
.setIostorinvdtl_id(json.getString("iostorinvdtl_id"))
.setIostorinv_id(json.getString("iostorinv_id"))
.setIostorinvdis_id(IdUtil.getStringId())
.setIostorinvdtl_id(dtlDao.getIostorinvdtl_id())
.setIostorinv_id(dtlDao.getIostorinv_id())
.setSeq_no(1)
.setMaterial_id(materDao.getMaterial_id())
.setPcsn(DateUtil.today())
@@ -119,9 +117,7 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
.setIvt_level(IVTEnum.IVT_LEVEL.code("一级"))
.setIs_active(true)
.setWork_status(IOSEnum.WORK_STATUS.code("未生成"))
.setStoragevehicle_id(vehicleDao.getStoragevehicle_id())
.setStoragevehicle_code(vehicleDao.getStoragevehicle_code())
.setStoragevehicle_type(vehicleDao.getStoragevehicle_type())
.setStoragevehicle_code(item.getString("storagevehicle_code"))
.setIs_issued(false)
.setQty_unit_id(unitDao.getMeasure_unit_id())
.setQty_unit_name(unitDao.getUnit_name())
@@ -129,18 +125,6 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
.setReal_qty(item.getBigDecimal("qty"));
result.add(disDao);
// 更新载具扩展属性表
MdPbStoragevehicleext vehicleExtDao = new MdPbStoragevehicleext();
vehicleExtDao.setMaterial_id(item.getString("material_id"));
vehicleExtDao.setStorage_qty(NumberUtil.add(vehicleExtDao.getStorage_qty(),item.getBigDecimal("qty")));
vehicleExtDao.setUpdate_id(SecurityUtils.getCurrentUserId());
vehicleExtDao.setUpdate_name(SecurityUtils.getCurrentNickName());
vehicleExtDao.setUpdate_time(new Date());
iMdPbStoragevehicleextService.update(
vehicleExtDao,new QueryWrapper<MdPbStoragevehicleext>().eq("storagevehicle_code", vehicleDao.getStoragevehicle_code())
);
});
return result;
}

View File

@@ -16,7 +16,9 @@ import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.storage_manage.IVTEnum;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisdtlCpMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -52,6 +54,9 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
protected IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务
@Autowired
protected IStIvtIostorinvdtlCpService iostorinvdtlCpService; // 成品出入库明细表服务
@Override
public void batchInsert(Collection<StIvtIostorinvdisdtlCp> list) {
if (!CollectionUtils.isEmpty(list)){
@@ -69,20 +74,17 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
List<StIvtIostorinvdisdtlCp> result = new ArrayList<>();
list.forEach(item -> {
// 获取载具信息
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
new QueryWrapper<MdPbStoragevehicleinfo>()
.eq("storagevehicle_code", item.getString("storagevehicle_code"))
);
MdMeMaterialbase mataDao = iMdMeMaterialbaseService.getOne(
new QueryWrapper<MdMeMaterialbase>().lambda()
.eq(MdMeMaterialbase::getMaterial_code, item.getString("material_code"))
);
StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(item.getString("iostorinvdtl_id"));
StIvtIostorinvdisdtlCp disDtlDao = new StIvtIostorinvdisdtlCp()
.setIostorinv_id(json.getString("iostorinv_id"))
.setIostorinvdtl_id(json.getString("iostorinvdtl_id"))
.setIostorinv_id(dtlDao.getIostorinv_id())
.setIostorinvdtl_id(dtlDao.getIostorinvdtl_id())
.setIostorinvdis_id(json.getString("iostorinvdis_id"))
.setIostorinvdisdtl_id(IdUtil.getStringId())
.setSeq_no(new BigDecimal(1))
@@ -91,9 +93,7 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
.setQuality_scode(IVTEnum.QUALITY_SCODE.code("合格品"))
.setIvt_level(IVTEnum.IVT_LEVEL.code("一级"))
.setIs_active(true)
.setStoragevehicle_id(vehicleDao.getStoragevehicle_id())
.setStoragevehicle_code(vehicleDao.getStoragevehicle_code())
.setStoragevehicle_type(vehicleDao.getStoragevehicle_type())
.setStoragevehicle_code(item.getString("storagevehicle_code"))
.setBucketunique(item.getString("bucketunique"))
.setQty_unit_id(item.getString("qty_unit_id"))
.setQty_unit_name(item.getString("qty_unit_name"))
@@ -103,9 +103,8 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorin
// 更新箱记录表
iMdPbBucketrecordService.update(
MdPbBucketrecord.builder()
.storagevehicle_id(vehicleDao.getStoragevehicle_id())
.status(MasterEnum.BOX_STATUS.code("组盘"))
.storagevehicle_code(vehicleDao.getStoragevehicle_code())
.storagevehicle_code(item.getString("storagevehicle_code"))
.instor_optid(Long.getLong(SecurityUtils.getCurrentUserId()))
.instor_optname(SecurityUtils.getCurrentNickName())
.instor_time(DateUtil.now())

View File

@@ -1,15 +1,19 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
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.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.IVTEnum;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService;
@@ -50,6 +54,9 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
@Autowired
protected IStIvtIostorinvdisCpService iostorinvdisCpService;
@Autowired
protected IMpsSaleOrderService iMpsSaleOrderService; // 销售订单服务
@Override
public void batchInsert(Collection<StIvtIostorinvdtlCp> list) {
@@ -74,6 +81,21 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
.eq(MdMeMaterialbase::getMaterial_code, json.getString("material_code"))
);
if (ObjectUtil.isNotEmpty(row.getSource_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("销售单号错误!");
row.setBase_billdtl_id(orderDao.getSale_id().toString());
row.setBase_bill_code(orderDao.getSale_code());
row.setBase_bill_type(orderDao.getSale_type());
row.setBase_bill_table(orderDao.getSeq_no().toString());
}
row.setIostorinv_id(iostorinvCp_id);
row.setMaterial_id(materDao.getMaterial_id());
row.setIostorinvdtl_id(org.nl.common.utils.IdUtil.getStringId());

View File

@@ -146,6 +146,7 @@
<span v-show="scope.row.edit">{{ scope.row.material_code }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="material_spec" label="物料规格" />
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" />
<el-table-column show-overflow-tooltip prop="plan_qty" label="入库数量">
<template slot-scope="scope">
@@ -168,8 +169,33 @@
<el-input v-model="form.tableData[scope.$index].remark" size="small" />
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="source_bill_type" label="源单类型" />
<el-table-column show-overflow-tooltip prop="source_bill_code" label="源单号" />
<el-table-column show-overflow-tooltip prop="base_bill_type" label="源单类型" />
<el-table-column show-overflow-tooltip prop="base_bill_code" label="源单号">
<template slot-scope="scope">
<el-input
v-show="!scope.row.edit"
v-model="form.tableData[scope.$index].base_bill_code"
clearable
:controls="false"
controls-position="right"
size="small"
/>
<span v-show="scope.row.edit">{{ scope.row.base_bill_code }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="base_bill_table" label="源单行号">
<template slot-scope="scope">
<el-input
v-show="!scope.row.edit"
v-model="form.tableData[scope.$index].base_bill_table"
clearable
:controls="false"
controls-position="right"
size="small"
/>
<span v-show="scope.row.edit">{{ scope.row.base_bill_table }}</span>
</template>
</el-table-column>
<el-table-column v-if="crud.status.cu > 0" align="center" label="操作" width="170" fixed="right">
<template scope="scope">
@@ -308,6 +334,14 @@ export default {
this.crud.notify('数量不能为空', CRUD.NOTIFICATION_TYPE.INFO)
return false
}
if (!row.base_bill_code) {
this.crud.notify('销售单号不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
return false
}
if (!row.base_bill_table) {
this.crud.notify('销售单号行不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
return false
}
}
},
deleteRow(index, rows) {
@@ -329,6 +363,7 @@ export default {
this.nowrow.material_id = row.material_id
this.nowrow.material_code = row.material_code
this.nowrow.material_name = row.material_name
this.nowrow.material_spec = row.material_spec
this.nowrow.plan_qty = '0'
this.nowrow.qty_unit_name = row.unit_name
this.nowrow.qty_unit_id = row.base_unit_id
@@ -348,9 +383,10 @@ export default {
data.plan_qty = row.product_qty
data.qty_unit_name = row.qty_unit_name
data.qty_unit_id = row.qty_unit_id
data.source_billdtl_id = row.sale_id
data.source_bill_type = row.sale_type
data.source_bill_code = row.sale_code
data.base_billdtl_id = row.sale_id
data.base_bill_type = row.sale_type
data.base_bill_code = row.sale_code
data.base_bill_table = row.seq_no
data.edit = true
this.form.tableData.splice(-1, 0, data)
this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(data.plan_qty)

View File

@@ -53,6 +53,7 @@
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
<el-table-column show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
<el-table-column show-overflow-tooltip prop="plan_qty" :formatter="crud.formatNum3" label="数量" align="center" />
<el-table-column show-overflow-tooltip prop="assign_qty" :formatter="crud.formatNum3" label="已分配数量" align="center" />
@@ -66,14 +67,9 @@
<el-card class="box-card" shadow="never" :body-style="{padding:'20px 20px 0 20px'}">
<el-form ref="form2" :inline="true" :model="form" :rules="rules" size="mini">
<el-form-item label="载具号:" prop="vehicle_code">
<el-input
v-model="form.vehicle_code"
style="width: 200px"
size="mini"
clearable
placeholder="载具号"
@blur="vehicleCheck(form.vehicle_code)"
/>
<el-input v-model="form.vehicle_code" style="width: 200px" size="mini" disabled clearable placeholder="载具号">
<el-button slot="append" @click="vehicleCheck" >生成</el-button>
</el-input>
</el-form-item>
<el-form-item label="箱号:" prop="pageBox_code">
@@ -91,6 +87,7 @@
:controls="false"
precision="3"
:min="0"
@change="changeQty"
placeholder="数量"
/>
</el-form-item>
@@ -113,6 +110,23 @@
</el-select>
</el-form-item>
<el-form-item label="载具超限类型:" prop="vehicle_overstruct_type">
<el-select
v-model="form.vehicle_overstruct_type"
size="mini"
placeholder="请选择"
class="filter-item"
style="width: 200px;"
>
<el-option
v-for="item in dict.VEHICLE_OVER_TYPE"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-form>
</el-card>
<div class="crud-opts2">
@@ -123,6 +137,7 @@
<el-cascader
placeholder="请选择"
:options="sects"
v-model="defaultList"
:props="{ checkStrictly: true }"
clearable
@change="sectQueryChange"
@@ -212,6 +227,7 @@
>
<el-table-column show-overflow-tooltip type="index" label="序号" align="center" />
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
<el-table-column show-overflow-tooltip prop="material_spec" label="物料规格" align="center" />
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="托盘号" align="center" />
<el-table-column show-overflow-tooltip prop="bucketunique" label="箱号" align="center" />
@@ -252,7 +268,7 @@ export default {
name: 'DivDialog',
components: { StructDiv, AddBox },
mixins: [crud()],
dicts: ['IO_BILL_STATUS', 'MD_OVERSTRUCT_TYPE'],
dicts: ['IO_BILL_STATUS', 'VEHICLE_OVER_TYPE'],
props: {
dialogShow: {
type: Boolean,
@@ -272,8 +288,8 @@ export default {
data() {
return {
dialogVisible: false,
stor_id: '',
sect_id: '',
stor_id: '1528627995269533696',
sect_id: '1528631043496742912',
sectProp: null,
structShow: false,
bucketObj: null,
@@ -282,6 +298,7 @@ export default {
addBoxShow: false,
bucketuniqueObj: null,
sects: [],
defaultList: ['1528627995269533696', '1528631043496742912'],
dis_row: null,
form: {
dtl_row: null,
@@ -292,6 +309,7 @@ export default {
vehicle_code: '',
bucketunique: '',
checked: true,
vehicle_overstruct_type: '00',
tableMater: []
},
storlist: [],
@@ -309,7 +327,6 @@ export default {
},
methods: {
disabledIos(row) {
debugger
if (row.iostorinvdis_id === undefined) {
return false
} else {
@@ -340,22 +357,34 @@ export default {
},
clcikRow(row, column, event) {
this.form.dtl_row = row
this.form.storage_qty = this.form.dtl_row.plan_qty
crudProductIn.getIosInvDis({ 'iostorinv_id': row.iostorinv_id, 'iostorinvdtl_id': row.iostorinvdtl_id }).then(res => {
this.form.tableMater = res
debugger
if (res.length !== 0) {
this.form.tableMater = res
}
})
},
clcikRowDis(row, column, event) {
this.dis_row = row
},
vehicleCheck(vehicle_code) {
this.form.bucketunique = ''
// 校验载具号是否存在&&是否已被组盘
crudProductIn.vehicleCheck({ 'storagevehicle_code': vehicle_code }).then(res => {
this.crud.notify('查询成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
vehicleCheck() {
// 生成托盘
crudProductIn.vehicleCheck().then(res => {
this.form.tableMater = []
this.form.vehicle_code = res.vehicle_code
this.crud.notify('生成成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
}).catch(() => {
this.form.vehicle_code = ''
})
},
changeQty(val) {
debugger
if (parseFloat(this.form.dtl_row.plan_qty) < parseFloat(val)) {
this.crud.notify('放入数量不能大于明细数量!', CRUD.NOTIFICATION_TYPE.INFO)
this.$set(this.form, 'storage_qty', parseFloat(this.form.dtl_row.plan_qty))
}
},
queryBox() {
// 校验载具是否为空
if (!this.form.vehicle_code) {
@@ -393,6 +422,7 @@ export default {
})
if (fla) {
this.bucketuniqueObj.iostorinvdtl_id = this.form.dtl_row.iostorinvdtl_id
this.form.tableMater.splice(-1, 0, this.bucketuniqueObj)
this.form.bucketunique = ''
}
@@ -404,12 +434,24 @@ export default {
}
const item = {
'storagevehicle_code': this.form.vehicle_code,
'iostorinvdtl_id': this.form.dtl_row.iostorinvdtl_id,
'material_id': this.form.dtl_row.material_id,
'material_code': this.form.dtl_row.material_code,
'material_spec': this.form.dtl_row.material_spec,
'material_name': this.form.dtl_row.material_name,
'qty': this.form.storage_qty
}
this.form.tableMater.splice(-1, 0, item)
let fla2 = true
this.form.tableMater.forEach(res => {
if (res.iostorinvdtl_id === item.iostorinvdtl_id && res.storagevehicle_code === item.storagevehicle_code) {
fla2 = false
}
})
if (fla2) {
this.form.tableMater.splice(-1, 0, item)
}
}
},
deleteRow(index, rows) {
@@ -486,11 +528,11 @@ export default {
})
},
cancelConfirmvehicle() {
if (!this.form.dtl_row) {
this.crud.notify('请选择一条明细', CRUD.NOTIFICATION_TYPE.INFO)
if (!this.dis_row) {
this.crud.notify('请选择一条分配明细', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudProductIn.cancelConfirmvehicle(this.form.dtl_row).then(res => {
crudProductIn.cancelConfirmvehicle(this.dis_row).then(res => {
crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id }).then(res => {
this.form.vehicle_code = ''
this.form.bucketunique = ''
@@ -579,6 +621,7 @@ export default {
return
}
this.dis_row.vehicle_overstruct_type = this.form.vehicle_overstruct_type
crudProductIn.unDivStruct(this.dis_row).then(res => {
crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => {
this.openParam = res

View File

@@ -40,11 +40,10 @@ export function getIosInvDis(data) {
})
}
export function vehicleCheck(data) {
export function vehicleCheck() {
return request({
url: '/api/productIn/vehicleCheck',
method: 'post',
data
method: 'post'
})
}