feat: 出库单确认wql->mp
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package org.nl.b_lms.pdm.subpackagerelation.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelationrecord;
|
||||
|
||||
@@ -16,4 +17,7 @@ public interface IPdmBiSubpackagerelationrecordService extends IService<PdmBiSub
|
||||
* @return
|
||||
*/
|
||||
List<PdmBiSubpackagerelationrecord> getAllByPcsn(List<String> pcsns);
|
||||
|
||||
List<PdmBiSubpackagerelationrecord> getSubPackageRecordInfoBySubRollsStatus(List<String> pcsns, String status, String billCode);
|
||||
List<JSONObject> getSubPackageRecordInfoBySubRollsStatusObject(List<String> pcsns, String status, String billCode);
|
||||
}
|
||||
|
||||
@@ -148,6 +148,10 @@ public interface IpdmBiSubpackagerelationService extends IService<PdmBiSubpackag
|
||||
* @return
|
||||
*/
|
||||
List<JSONObject> getSubPackageInfoBySubRolls(List<String> pcsns);
|
||||
|
||||
List<PdmBiSubpackagerelation> getSubPackageInfoBySubRollsStatus(List<String> pcsns, String status);
|
||||
|
||||
List<JSONObject> getSubPackageInfoBySubRollsStatusObject(List<String> pcsns, String status);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -886,5 +886,24 @@ public class PdmBiSubpackagerelationServiceImpl extends ServiceImpl<PdmBiSubpack
|
||||
return org.nl.common.utils.CollectionUtils.mapList(pdmBiSubpackagerelationMapper.selectList(lam),
|
||||
pdmBiSubpackagerelation -> (JSONObject) JSON.toJSON(pdmBiSubpackagerelation));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PdmBiSubpackagerelation> getSubPackageInfoBySubRollsStatus(List<String> pcsns, String status) {
|
||||
if (pcsns.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
LambdaQueryWrapper<PdmBiSubpackagerelation> lam = new LambdaQueryWrapper<>();
|
||||
lam.in(PdmBiSubpackagerelation::getContainer_name, pcsns).eq(PdmBiSubpackagerelation::getStatus, status);
|
||||
return pdmBiSubpackagerelationMapper.selectList(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JSONObject> getSubPackageInfoBySubRollsStatusObject(List<String> pcsns, String status) {
|
||||
if (pcsns.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
return org.nl.common.utils.CollectionUtils.mapList(getSubPackageInfoBySubRollsStatus(pcsns, status),
|
||||
pdmBiSubpackagerelation -> (JSONObject) JSON.toJSON(pdmBiSubpackagerelation));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package org.nl.b_lms.pdm.subpackagerelation.service.impl;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelationrecord;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationrecordMapper;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.service.IPdmBiSubpackagerelationrecordService;
|
||||
import org.nl.common.utils.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
@@ -23,4 +27,25 @@ public class PdmBiSubpackagerelationrecordServiceImpl extends ServiceImpl<PdmBiS
|
||||
.orderByAsc(PdmBiSubpackagerelationrecord::getInsert_time);
|
||||
return list(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PdmBiSubpackagerelationrecord> getSubPackageRecordInfoBySubRollsStatus(List<String> pcsns, String status, String billCode) {
|
||||
if (ObjectUtil.isEmpty(pcsns)) {
|
||||
return null;
|
||||
}
|
||||
LambdaQueryWrapper<PdmBiSubpackagerelationrecord> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(PdmBiSubpackagerelationrecord::getStatus, status)
|
||||
.eq(PdmBiSubpackagerelationrecord::getBill_code, billCode)
|
||||
.in(PdmBiSubpackagerelationrecord::getContainer_name, pcsns);
|
||||
return list(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JSONObject> getSubPackageRecordInfoBySubRollsStatusObject(List<String> pcsns, String status, String billCode) {
|
||||
if (ObjectUtil.isEmpty(pcsns)) {
|
||||
return null;
|
||||
}
|
||||
return CollectionUtils.mapList(getSubPackageRecordInfoBySubRollsStatus(pcsns, status, billCode),
|
||||
pdmBiSubpackagerelation -> (JSONObject) JSON.toJSON(pdmBiSubpackagerelation));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,10 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.SneakyThrows;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelationrecord;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.service.IPdmBiSubpackagerelationrecordService;
|
||||
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
|
||||
import org.nl.b_lms.pdm_manage.enums.SUBEnum;
|
||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||
import org.nl.b_lms.sch.task.service.IschBaseTaskService;
|
||||
@@ -37,6 +41,7 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.InventoryQueryParam
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.InBussManageService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.OutBussManageService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService;
|
||||
import org.nl.b_lms.storage_manage.st.service.StIvtSectattrService;
|
||||
import org.nl.b_lms.storage_manage.st.service.StIvtStructivtService;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
@@ -147,6 +152,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
private StIvtStructivtService structivtService;
|
||||
@Autowired
|
||||
private IschBaseTaskService ischBaseTaskService;
|
||||
@Autowired
|
||||
private IpdmBiSubpackagerelationService subpackagerelationService;
|
||||
@Autowired
|
||||
private IPdmBiSubpackagerelationrecordService subpackagerelationrecordService;
|
||||
@Autowired
|
||||
private StIvtSectattrService sectattrService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@@ -739,15 +750,6 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
@Override
|
||||
@Transactional
|
||||
public void confirm(JSONObject whereJson) {
|
||||
// 子卷包装关系表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
// 包装关系出入库记录表
|
||||
WQLObject subRecordTab = WQLObject.getWQLObject("pdm_bi_subpackagerelationrecord");
|
||||
// 任务表
|
||||
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
|
||||
// 库区表
|
||||
WQLObject sectTab = WQLObject.getWQLObject("st_ivt_sectattr");
|
||||
|
||||
StIvtIostorinv mstDao = this.getById(whereJson.getLongValue("iostorinv_id"));
|
||||
|
||||
/*
|
||||
@@ -792,20 +794,18 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
}
|
||||
|
||||
// 判断是否有未完成的任务
|
||||
String task_in = disDaoList.stream()
|
||||
List<String> taskIds = disDaoList.stream()
|
||||
.filter(row -> ObjectUtil.isNotEmpty(row.getTask_id()))
|
||||
.map(row -> row.getTask_id().toString())
|
||||
.map(row -> row.getTask_id())
|
||||
.distinct()
|
||||
.collect(Collectors.joining("','"));
|
||||
|
||||
JSONArray taskArr = taskService.query("task_id IN ('" + task_in + "') AND task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "' AND is_delete = '0'")
|
||||
.getResultJSONArray(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(taskArr)) {
|
||||
throw new BadRequestException("有任务未完成,不允许强制确认!");
|
||||
.collect(Collectors.toList());
|
||||
if (taskIds.size() > 0) {
|
||||
List<SchBaseTask> tasks = ischBaseTaskService.list(new LambdaQueryWrapper<SchBaseTask>().in(SchBaseTask::getTask_id, taskIds));
|
||||
if (ObjectUtil.isNotEmpty(tasks)) {
|
||||
throw new BadRequestException("有任务未完成,不允许强制确认!");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 需要更新的库存集合
|
||||
List<JSONObject> needUpdateIvtList = new ArrayList<>();
|
||||
|
||||
@@ -871,17 +871,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
/*
|
||||
* 插入子卷包装关系出入记录
|
||||
*/
|
||||
String pcsn_in = disDaoList.stream()
|
||||
.map(StIvtIostorinvdis::getPcsn)
|
||||
.collect(Collectors.joining("','"));
|
||||
|
||||
// 子卷包装集合
|
||||
List<JSONObject> subList = subTab.query("container_name IN ('" + pcsn_in + "') AND status = '"+SUBEnum.STATUS.code("入库")+"'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
List<String> pcsns = disDaoList.stream()
|
||||
.map(StIvtIostorinvdis::getPcsn)
|
||||
.collect(Collectors.toList());
|
||||
List<JSONObject> subList = subpackagerelationService.getSubPackageInfoBySubRollsStatusObject(pcsns, SUBEnum.STATUS.code("入库"));
|
||||
// 子卷包装出入记录集合
|
||||
List<JSONObject> suRebList = subRecordTab.query("container_name IN ('" + pcsn_in + "') AND status = '"+SUBEnum.STATUS.code("入库")+"' AND bill_code = '"+mstDao.getBill_code()+"'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
List<JSONObject> suRebList = subpackagerelationrecordService.getSubPackageRecordInfoBySubRollsStatusObject(pcsns, SUBEnum.STATUS.code("入库"), mstDao.getBill_code());
|
||||
|
||||
for (int i = 0; i < disDaoList.size(); i++) {
|
||||
StIvtIostorinvdis disDao = disDaoList.get(i);
|
||||
@@ -917,29 +913,32 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonSub.put("io_type", IOSEnum.IO_TYPE.code("出库"));
|
||||
jsonSub.put("insert_time", DateUtil.now());
|
||||
jsonSub.put("record_id", cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId());
|
||||
subRecordTab.insert(jsonSub);
|
||||
PdmBiSubpackagerelationrecord subpackagerelationrecord = jsonSub.toJavaObject(PdmBiSubpackagerelationrecord.class);
|
||||
subpackagerelationrecordService.save(subpackagerelationrecord);
|
||||
}
|
||||
|
||||
/*
|
||||
* 更新子卷包装关系
|
||||
*/
|
||||
JSONObject jsonSubParam = new JSONObject();
|
||||
LambdaUpdateWrapper<PdmBiSubpackagerelation> subLam = new LambdaUpdateWrapper<>();
|
||||
// 如果是拆箱出库和手工出库则为生成状态,否则为出库状态
|
||||
if (mstDao.getBill_type().equals(IOSEnum.OUT_TYPE.code("拆箱出库")) || mstDao.getBill_type().equals(IOSEnum.OUT_TYPE.code("手工出库"))) {
|
||||
jsonSubParam.put("status", SUBEnum.STATUS.code("生成"));
|
||||
subLam.set(PdmBiSubpackagerelation::getStatus, SUBEnum.STATUS.code("生成"));
|
||||
} else {
|
||||
jsonSubParam.put("status", SUBEnum.STATUS.code("出库"));
|
||||
subLam.set(PdmBiSubpackagerelation::getStatus, SUBEnum.STATUS.code("出库"));
|
||||
}
|
||||
|
||||
subTab.update(jsonSubParam,"container_name IN ('"+pcsn_in+"')");
|
||||
subLam.in(PdmBiSubpackagerelation::getContainer_name, pcsns);
|
||||
subpackagerelationService.update(subLam);
|
||||
|
||||
/*
|
||||
* 更新任务为完成
|
||||
*/
|
||||
JSONObject jsonTaskParam = new JSONObject();
|
||||
jsonTaskParam.put("task_status", TaskStatusEnum.FINISHED.getCode());
|
||||
|
||||
taskService.update(jsonTaskParam,"task_id IN ('"+String.join("','", needUpdateTaskList)+"')");
|
||||
if (ObjectUtil.isNotEmpty(needUpdateTaskList)) {
|
||||
LambdaUpdateWrapper<SchBaseTask> taskLam = new LambdaUpdateWrapper<>();
|
||||
taskLam.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
|
||||
.in(SchBaseTask::getTask_id, needUpdateTaskList);
|
||||
ischBaseTaskService.update(taskLam);
|
||||
}
|
||||
|
||||
/*
|
||||
* 如果是调拨出库则生成调拨入库单
|
||||
@@ -956,13 +955,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
) {
|
||||
|
||||
// 查询库区
|
||||
String sect_in = disDaoList.stream()
|
||||
.map(row -> row.getSect_id().toString())
|
||||
.collect(Collectors.joining("','"));
|
||||
|
||||
List<JSONObject> sectList = sectTab.query("sect_id IN ('" + sect_in + "')")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
List<String> sects = disDaoList.stream()
|
||||
.map(row -> row.getSect_id())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<JSONObject> sectList = sectattrService.getByIdsObject(sects);
|
||||
for (int i = 0; i < disDaoList.size(); i++) {
|
||||
StIvtIostorinvdis disDao = disDaoList.get(i);
|
||||
|
||||
@@ -972,12 +969,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
//如果是虚拟区的出库,直接把包装关系删除;如果为立库的包装关系,将解绑删除标识置为1。当发货区解绑时,删除包装关系
|
||||
if (jsonSect.getString("sect_type_attr").equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
|
||||
subTab.delete("container_name = '" + disDao.getPcsn() + "'");
|
||||
subpackagerelationService.remove(new LambdaQueryWrapper<PdmBiSubpackagerelation>()
|
||||
.eq(PdmBiSubpackagerelation::getContainer_name, disDao.getPcsn()));
|
||||
} else {
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
map.put("need_delete", "1");
|
||||
|
||||
subTab.update(map, "container_name = '" + disDao.getPcsn() + "'");
|
||||
subpackagerelationService.update(new LambdaUpdateWrapper<PdmBiSubpackagerelation>()
|
||||
.set(PdmBiSubpackagerelation::getNeed_delete, "1")
|
||||
.eq(PdmBiSubpackagerelation::getContainer_name, disDao.getPcsn()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -131,10 +131,10 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
if (operate.equals(IOSEnum.IO_TYPE.code("出库"))) {
|
||||
LambdaUpdateWrapper<StIvtStructattr> lam = new LambdaUpdateWrapper<>();
|
||||
lam.in(StIvtStructattr::getStruct_code, param)
|
||||
.set(StIvtStructattr::getInv_id, json.getString("inv_id"))
|
||||
.set(StIvtStructattr::getInv_type, json.getString("inv_type"))
|
||||
.set(StIvtStructattr::getInv_code, json.getString("inv_code"))
|
||||
.set(StIvtStructattr::getLock_type, json.getString("lock_type"));
|
||||
.set(ObjectUtil.isNotEmpty(json.getString("inv_id")), StIvtStructattr::getInv_id, json.getString("inv_id"))
|
||||
.set(ObjectUtil.isNotEmpty(json.getString("inv_type")), StIvtStructattr::getInv_type, json.getString("inv_type"))
|
||||
.set(ObjectUtil.isNotEmpty(json.getString("inv_code")), StIvtStructattr::getInv_code, json.getString("inv_code"))
|
||||
.set(ObjectUtil.isNotEmpty(json.getString("lock_type")), StIvtStructattr::getLock_type, json.getString("lock_type"));
|
||||
structattrService.update(lam);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,26 @@
|
||||
package org.nl.b_lms.storage_manage.st.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.b_lms.storage_manage.st.dao.StIvtBsrealstorattr;
|
||||
import org.nl.b_lms.storage_manage.st.dao.StIvtSectattr;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
public interface StIvtSectattrService extends IService<StIvtSectattr> {
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 根据id获取所有的库区
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
List<StIvtSectattr> getByIds(List<String> ids);
|
||||
/**
|
||||
* 根据id获取所有的库区JSONObject
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
List<JSONObject> getByIdsObject(List<String> ids);
|
||||
}
|
||||
|
||||
@@ -1,14 +1,37 @@
|
||||
package org.nl.b_lms.storage_manage.st.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.b_lms.storage_manage.st.dao.StIvtSectattr;
|
||||
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtSectattrMapper;
|
||||
import org.nl.b_lms.storage_manage.st.service.StIvtSectattrService;
|
||||
import org.nl.common.utils.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Service
|
||||
public class StIvtSectattrServiceImpl extends ServiceImpl<StIvtSectattrMapper, StIvtSectattr> implements StIvtSectattrService {
|
||||
|
||||
|
||||
@Override
|
||||
public List<StIvtSectattr> getByIds(List<String> ids) {
|
||||
if (ids.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
LambdaQueryWrapper<StIvtSectattr> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(StIvtSectattr::getSect_id, ids);
|
||||
return list(lam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JSONObject> getByIdsObject(List<String> ids) {
|
||||
if (ids.size() == 0) {
|
||||
return null;
|
||||
}
|
||||
return CollectionUtils.mapList(ids, sect -> (JSONObject) JSON.toJSON(sect));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user