Browse Source

feat: 出库单确认wql->mp

master
李永德 2 weeks ago
parent
commit
fb218dcd54
  1. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IPdmBiSubpackagerelationrecordService.java
  2. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IpdmBiSubpackagerelationService.java
  3. 19
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java
  4. 25
      lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationrecordServiceImpl.java
  5. 93
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
  6. 8
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java
  7. 16
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/StIvtSectattrService.java
  8. 23
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/impl/StIvtSectattrServiceImpl.java

4
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IPdmBiSubpackagerelationrecordService.java

@ -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);
}

4
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/IpdmBiSubpackagerelationService.java

@ -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);
}

19
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationServiceImpl.java

@ -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));
}
}

25
lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/subpackagerelation/service/impl/PdmBiSubpackagerelationrecordServiceImpl.java

@ -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));
}
}

93
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java

@ -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,19 +794,17 @@ 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)) {
.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()));
}
}
}

8
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java

@ -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);
}
}

16
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/StIvtSectattrService.java

@ -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> {
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);
}

23
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/impl/StIvtSectattrServiceImpl.java

@ -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));
}
}

Loading…
Cancel
Save