This commit is contained in:
2024-01-17 17:09:16 +08:00
9 changed files with 579 additions and 5 deletions

View File

@@ -0,0 +1,42 @@
package org.nl.b_lms.pdm_manage.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.utils.MapOf;
import org.nl.modules.common.exception.BadRequestException;
import java.util.Map;
/**
* 子卷包装枚举
*
* @author lxy
* @Date 2023/11/14 20:11
*/
@AllArgsConstructor
@Getter
public enum SUBEnum {
// 子卷包装状态
STATUS(MapOf.of("生成", "0", "包装", "1", "入库", "2", "出库", "3")),
;
private Map<String, String> code;
public String code(String desc) {
String code = this.getCode().get(desc);
if (StringUtils.isNotEmpty(code)) {
return code;
}
throw new BadRequestException(this.name() + "对应类型" + desc + "未定义");
}
public String check(String code) {
for (Map.Entry<String, String> entry : this.getCode().entrySet()) {
if (entry.getValue().equals("code")) {
return entry.getValue();
}
}
throw new BadRequestException(this.name() + "对应类型" + code + "未定义");
}
}

View File

@@ -47,6 +47,9 @@ public enum IOSEnum {
LOCK_TYPE(MapOf.of("未锁定", "1", "入库锁", "2", "出库锁", "3", "空托盘出库锁", "4",
"空托盘入库锁", "5", "移出锁", "6", "移入锁", "7", "其它", "99"
)),
//仓位锁定类型
STOR_ID(MapOf.of("二期", "1582991156504039455")),
;
private Map<String, String> code;

View File

@@ -24,4 +24,50 @@ public interface IStIvtIostorinvService extends IService<StIvtIostorinv> {
*/
Object pageQuery(Map query, Pageable page);
/**
* PC新增入库单据
* @param whereJson {
* stor_id: 仓库标识
* bill_status单据状态
* total_qty总数量
* detail_count明细数
* bill_type单据类型
* remark备注
* biz_date业务日期
* create_mode创建方式
* tableData[
* package_box_sn:木箱号
* thickness产品厚度
* plan_qty计划数量
* customer_description客户名称
* quanlity_in_box子卷数量
* product_name物料编码
* net_weight净重
* container_name子卷号
* width
* sap_pcsnsap批次
* customer_name客户编码
* sale_order_name订单号
* product_description物料名称
* quality_scode品质类型
* ivt_level库存等级
* is_active是否可用
* ]
* }
* @return iostorinv_id主表标识
*/
String insertMst(Map whereJson);
/**
* 修改单据
* @param whereJson :同新增参数
*/
void update(Map whereJson);
/**
* 删除出库单
* @param ids[主表标识]
*/
void deleteAll(Long[] ids);
}

View File

@@ -1,8 +1,12 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
import java.util.ArrayList;
import java.util.HashMap;
/**
* <p>
* 出入库单分配表 服务类
@@ -13,5 +17,14 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
*/
public interface IStIvtIostorinvdisService extends IService<StIvtIostorinvdis> {
/**
* 新增分配明细
* @param iostorinv_id 主表标识
* @param disDaoMap
* {
* "明细标识"[{分配明细字段...}]
* }
*/
void insertDis(Long iostorinv_id, HashMap<String, ArrayList<JSONObject>> disDaoMap);
}

View File

@@ -1,8 +1,13 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* <p>
* 出入库单明细表 服务类
@@ -13,4 +18,29 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
*/
public interface IStIvtIostorinvdtlService extends IService<StIvtIostorinvdtl> {
/**
* 新增出入库明细
* @param rows: {
* package_box_sn:木箱号
* thickness产品厚度
* plan_qty计划数量
* customer_description客户名称
* quanlity_in_box子卷数量
* product_name物料编码
* net_weight净重
* container_name子卷号
* width
* sap_pcsnsap批次
* customer_name客户编码
* sale_order_name订单号
* product_description物料名称
* quality_scode品质类型
* ivt_level库存等级
* is_active是否可用
* }
* @param iostorinv_id: 主表标识
* @return {"明细标识":分配明细:[]}
*
*/
HashMap<String, ArrayList<JSONObject>> insertDtl(List<JSONObject> rows, Long iostorinv_id);
}

View File

@@ -1,20 +1,39 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
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 com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pdm_manage.enums.SUBEnum;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdisService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvMapper;
import org.nl.common.TableDataInfo;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.basedata.st.service.StorattrService;
import org.nl.wms.basedata.st.service.dto.StorattrDto;
import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
@@ -28,6 +47,24 @@ import java.util.Map;
@Slf4j
public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper, StIvtIostorinv> implements IStIvtIostorinvService {
/**
* 仓库服务
*/
@Autowired
private StorattrService storattrService;
/**
* 出入库明细服务
*/
@Autowired
private IStIvtIostorinvdtlService iStIvtIostorinvdtlService;
/**
* 出入库分配明细服务
*/
@Autowired
private IStIvtIostorinvdisService iStIvtIostorinvdisService;
@Override
public Object pageQuery(Map query, Pageable pageQuery) {
Page<Object> page = PageHelper.startPage(pageQuery.getPageNumber() + 1, pageQuery.getPageSize());
@@ -47,4 +84,172 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
build.setTotalElements(page.getTotal());
return build;
}
@Override
@Transactional
public String insertMst(Map whereJson) {
// 组织主表数据
StIvtIostorinv mstDao = updataMst(whereJson,null);
this.save(mstDao);
// 插入明细
ArrayList<HashMap> list = (ArrayList<HashMap>) whereJson.get("tableData");
List<JSONObject> rows = list.stream()
.map(row -> JSONObject.parseObject(JSON.toJSONString(row)))
.collect(Collectors.toList());
HashMap<String, ArrayList<JSONObject>> disDaoMap = iStIvtIostorinvdtlService.insertDtl(rows, mstDao.getIostorinv_id());
// 插入分配明细
iStIvtIostorinvdisService.insertDis(mstDao.getIostorinv_id(),disDaoMap);
// 更新子卷包装关系
String packageIn = rows.stream()
.map(row -> row.getString("package_box_sn"))
.distinct()
.collect(Collectors.joining("','"));
HashMap<String, String> map = new HashMap<>();
map.put("status", SUBEnum.STATUS.code("包装"));
if (IOSEnum.IN_TYPE.code("报废入库").equals(whereJson.get("bill_type"))) {
WQLObject.getWQLObject("PDM_BI_SubPackageRelation")
.update(map, "package_box_SN IN ('"+packageIn+"') AND status = '"+ SUBEnum.STATUS.code("出库")+"'");
} else {
WQLObject.getWQLObject("PDM_BI_SubPackageRelation")
.update(map, "package_box_SN IN ('"+packageIn+"') AND status = '"+ SUBEnum.STATUS.code("生成")+"'");
}
return mstDao.getIostorinv_id().toString();
}
@Override
@Transactional
public void update(Map whereJson) {
StIvtIostorinv mstDao = this.getById(whereJson.get("iostorinv_id").toString());
// 更新主表
this.updateById(updataMst(whereJson, mstDao));
// 更新明细
ArrayList<HashMap> list = (ArrayList<HashMap>) whereJson.get("tableData");
List<JSONObject> rows = list.stream()
.map(row -> JSONObject.parseObject(JSON.toJSONString(row)))
.collect(Collectors.toList());
HashMap<String, ArrayList<JSONObject>> disDaoMap = iStIvtIostorinvdtlService.insertDtl(rows, mstDao.getIostorinv_id());
// 更新分配明细
iStIvtIostorinvdisService.insertDis(mstDao.getIostorinv_id(),disDaoMap);
// 更新子卷包装关系
String packageIn = rows.stream()
.map(row -> row.getString("package_box_sn"))
.distinct()
.collect(Collectors.joining("','"));
HashMap<String, String> map = new HashMap<>();
map.put("status", SUBEnum.STATUS.code("包装"));
if (IOSEnum.IN_TYPE.code("报废入库").equals(whereJson.get("bill_type"))) {
WQLObject.getWQLObject("PDM_BI_SubPackageRelation")
.update(map, "package_box_SN IN ('"+packageIn+"') AND status = '"+ SUBEnum.STATUS.code("出库")+"'");
} else {
WQLObject.getWQLObject("PDM_BI_SubPackageRelation")
.update(map, "package_box_SN IN ('"+packageIn+"') AND status = '"+ SUBEnum.STATUS.code("生成")+"'");
}
}
@Override
@Transactional
public void deleteAll(Long[] ids) {
List<Long> listId = Arrays.asList(ids);
// 查询所有分配明细
List<StIvtIostorinvdis> disDaoList = iStIvtIostorinvdisService.list(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.in(StIvtIostorinvdis::getIostorinv_id, listId)
);
// 查询所有子卷包装关系拼接sql
String packageIn = disDaoList.stream()
.map(StIvtIostorinvdis::getBox_no)
.distinct()
.collect(Collectors.joining("','"));
// 更新子卷包装关系
HashMap<String, String> map = new HashMap<>();
map.put("status", SUBEnum.STATUS.code("生成"));
WQLObject.getWQLObject("PDM_BI_SubPackageRelation")
.update(map, "package_box_SN IN ('"+packageIn+"') AND status = '"+ SUBEnum.STATUS.code("包装")+"'");
// 更新主表
this.update(
new UpdateWrapper<StIvtIostorinv>().lambda()
.set(StIvtIostorinv::getIs_delete, IOSEnum.IS_NOTANDYES.code(""))
.set(StIvtIostorinv::getUpdate_optid, Long.parseLong(SecurityUtils.getCurrentUserId()))
.set(StIvtIostorinv::getUpdate_optname, SecurityUtils.getCurrentNickName())
.set(StIvtIostorinv::getUpdate_optname, DateUtil.now())
.in(StIvtIostorinv::getIostorinv_id, listId)
);
}
/**
* 组织主表数据
* @param whereJson {}
* @return StIvtIostorinv
*/
private StIvtIostorinv updataMst(Map whereJson,StIvtIostorinv mstDao) {
// 仓库信息
StorattrDto storattrDto = storattrService.findById(Long.parseLong((String) whereJson.get("stor_id")));
if (ObjectUtil.isEmpty(mstDao)) {
// 新增
mstDao = StIvtIostorinv.builder()
.iostorinv_id(IdUtil.getLongId())
.bill_code(CodeUtil.getNewCode("IO_CODE"))
.buss_type(whereJson.get("bill_type").toString().substring(0, 4))
.io_type(IOSEnum.IO_TYPE.code("入库"))
.bill_type(whereJson.get("bill_type").toString())
.biz_date(whereJson.get("biz_date").toString().substring(0, 10))
.stor_id(storattrDto.getStor_id())
.stor_code(storattrDto.getStor_code())
.stor_name(storattrDto.getStor_name())
.detail_count(BigDecimal.valueOf(((ArrayList<HashMap>) whereJson.get("tableData")).size()))
.remark(whereJson.get("remark").toString())
.bill_status(whereJson.get("bill_status").toString())
.total_qty(BigDecimal.valueOf(Double.parseDouble(whereJson.get("total_qty").toString())))
.create_mode(IOSEnum.CREATE_MODE.code("PC产生"))
.input_optid(Long.parseLong(SecurityUtils.getCurrentUserId()))
.input_optname(SecurityUtils.getCurrentNickName())
.input_time(DateUtil.now())
.update_optid(Long.parseLong(SecurityUtils.getCurrentUserId()))
.update_optname(SecurityUtils.getCurrentNickName())
.update_time(DateUtil.now())
.is_delete(IOSEnum.IS_NOTANDYES.code(""))
.is_upload(IOSEnum.IS_NOTANDYES.code(""))
.syscompanyid(SecurityUtils.getDeptId())
.sysdeptid(SecurityUtils.getDeptId())
.build();
} else {
// 修改
mstDao.setBiz_date(whereJson.get("biz_date").toString().substring(0, 10));
mstDao.setStor_id(storattrDto.getStor_id());
mstDao.setStor_code(storattrDto.getStor_code());
mstDao.setStor_name(storattrDto.getStor_name());
mstDao.setDetail_count(BigDecimal.valueOf(((ArrayList<HashMap>) whereJson.get("tableData")).size()));
mstDao.setRemark(whereJson.get("remark").toString());
mstDao.setTotal_qty(BigDecimal.valueOf(Double.parseDouble(whereJson.get("total_qty").toString())));
mstDao.setUpdate_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setUpdate_optname(SecurityUtils.getCurrentNickName());
mstDao.setUpdate_time(DateUtil.now());
}
return mstDao;
}
}

View File

@@ -1,11 +1,20 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdisService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvdisMapper;
import org.nl.common.utils.IdUtil;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
/**
* <p>
* 出入库单分配表 服务实现类
@@ -17,4 +26,55 @@ import org.springframework.stereotype.Service;
@Service
public class StIvtIostorinvdisServiceImpl extends ServiceImpl<StIvtIostorinvdisMapper, StIvtIostorinvdis> implements IStIvtIostorinvdisService {
@Override
public void insertDis(Long iostorinv_id, HashMap<String, ArrayList<JSONObject>> disDaoMap) {
// 先删除所有分配明细
this.remove(
new QueryWrapper<StIvtIostorinvdis>().lambda()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinv_id)
);
// 批量插入分配明细集合
ArrayList<StIvtIostorinvdis> disDaoList = new ArrayList<>();
for(String iostorinvdtl_id : disDaoMap.keySet()) {
ArrayList<JSONObject> disList = disDaoMap.get(iostorinvdtl_id);
for (int i = 0; i < disList.size(); i++) {
JSONObject json = disList.get(i);
StIvtIostorinvdis disDao = StIvtIostorinvdis.builder()
.iostorinvdis_id(IdUtil.getLongId())
.iostorinv_id(iostorinv_id)
.iostorinvdtl_id(Long.parseLong(iostorinvdtl_id))
.seq_no(BigDecimal.valueOf(i + 1))
.sect_id(json.getLongValue("sect_id"))
.sect_code(json.getString("sect_code"))
.sect_name(json.getString("sect_name"))
.struct_id(json.getLongValue("struct_id"))
.struct_code(json.getString("struct_code"))
.struct_name(json.getString("struct_name"))
.material_id(json.getLongValue("material_id"))
.pcsn(json.getString("pcsn"))
.quality_scode(json.getString("quality_scode"))
.work_status(json.getString("work_status"))
.task_id(json.getLongValue("task_id"))
.storagevehicle_id(json.getLongValue("storagevehicle_id"))
.storagevehicle_code(json.getString("storagevehicle_code"))
.is_issued(IOSEnum.IS_NOTANDYES.code(""))
.qty_unit_id(json.getLongValue("qty_unit_id"))
.qty_unit_name(json.getString("qty_unit_name"))
.plan_qty(json.getBigDecimal("plan_qty"))
.real_qty(json.getBigDecimal("real_qty"))
.point_id(json.getLongValue("point_id"))
.box_no(json.getString("box_no"))
.build();
disDaoList.add(disDao);
}
}
this.saveBatch(disDaoList);
}
}

View File

@@ -1,10 +1,25 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.pdm_manage.enums.SUBEnum;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvdtlMapper;
import org.nl.common.utils.IdUtil;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p>
* 出入库单明细表 服务实现类
@@ -15,4 +30,153 @@ import org.springframework.stereotype.Service;
*/
@Service
public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlMapper, StIvtIostorinvdtl> implements IStIvtIostorinvdtlService {
@Override
public HashMap<String, ArrayList<JSONObject>>insertDtl(List<JSONObject> rows, Long iostorinv_id) {
// 先删除所有明细并更新子卷包装关系
updateSub(iostorinv_id);
// 查询所有对应物料集合
String materialCodeIn = rows.stream()
.map(row -> JSONObject.parseObject(JSON.toJSONString(row)).getString("product_name"))
.distinct()
.collect(Collectors.joining("','"));
List<JSONObject> materList = WQLObject.getWQLObject("md_me_materialbase")
.query("material_code in ('" + materialCodeIn + "')")
.getResultJSONArray(0).toJavaList(JSONObject.class);
// 查询所有物料对应的计量单位
String unitIdIn = materList.stream()
.map(row -> row.getString("base_unit_id"))
.distinct()
.collect(Collectors.joining("','"));
List<JSONObject> unitList = WQLObject.getWQLObject("md_pb_measureunit")
.query("measure_unit_id in ('" + unitIdIn + "')")
.getResultJSONArray(0).toJavaList(JSONObject.class);
// 明细批量插入集合
ArrayList<StIvtIostorinvdtl> dtlDaoList = new ArrayList<>();
// 组织要插入的分配明细
HashMap<String, ArrayList<JSONObject>> map = new HashMap<>();
for (int i = 0; i < rows.size(); i++) {
JSONObject row = rows.get(i);
// 匹配对应物料
List<JSONObject> materDaoList = materList.stream()
.filter(item -> item.getString("material_code").equals(row.getString("product_name")))
.collect(Collectors.toList());
if (ObjectUtil.isEmpty(materDaoList)) {
throw new BadRequestException("物料:"+row.getString("product_name")+"不存在,请检查数据!");
}
JSONObject materDao = materDaoList.get(0);
// 匹配物料对应的计量单位
List<JSONObject> unitDaoList = unitList.stream()
.filter(item -> item.getString("measure_unit_id").equals(materDao.getString("base_unit_id")))
.collect(Collectors.toList());
if (ObjectUtil.isEmpty(unitDaoList)) {
throw new BadRequestException("物料:"+row.getString("product_name")+"的计量单位不存在,请检查数据!");
}
JSONObject unitDao = unitDaoList.get(0);
StIvtIostorinvdtl dtlDao = StIvtIostorinvdtl.builder()
.iostorinvdtl_id(IdUtil.getLongId())
.iostorinv_id(iostorinv_id)
.seq_no(BigDecimal.valueOf(i+1))
.material_id(materDao.getLongValue("material_id"))
.pcsn(row.getString("container_name"))
.quality_scode(row.getString("quality_scode"))
.bill_status(IOSEnum.BILL_STATUS.code("生成"))
.qty_unit_id(unitDao.getLongValue("measure_unit_id"))
.qty_unit_name(unitDao.getString("unit_name"))
.plan_qty(row.getBigDecimal("plan_qty"))
.source_billdtl_id(row.getLongValue("source_billdtl_id"))
.source_bill_type(row.getString("source_bill_type"))
.source_bill_code(row.getString("source_bill_code"))
.source_bill_table(row.getString("source_bill_table"))
.base_billdtl_id(row.getLongValue("base_billdtl_id"))
.base_bill_type(row.getString("base_bill_type"))
.base_bill_code(row.getString("base_bill_code"))
.base_bill_table(row.getString("base_bill_table"))
.remark(row.getString("remark"))
.assign_qty(BigDecimal.valueOf(0))
.unassign_qty(row.getBigDecimal("plan_qty"))
.box_no(row.getString("package_box_sn"))
.vbeln(row.getString("vbeln"))
.posnr(row.getString("posnr"))
.width(row.getString("width")).build();
dtlDaoList.add(dtlDao);
// 1明细对应多条分配明细此处为1对1
ArrayList<JSONObject> disDaoList = new ArrayList<>();
// 组织分配明细所需数据
disDaoList.add(disUpdate(dtlDao));
map.put(dtlDao.getIostorinvdtl_id().toString(),disDaoList);
}
this.saveBatch(dtlDaoList);
return map;
}
/**
* 组织分配明细所需数据
* @param dtlDao 明细实体类
* @return JSONObject分配明细字段
*/
private JSONObject disUpdate(StIvtIostorinvdtl dtlDao) {
JSONObject json = new JSONObject();
json.put("material_id", dtlDao.getMaterial_id());
json.put("pcsn", dtlDao.getPcsn());
json.put("box_no", dtlDao.getBox_no());
json.put("quality_scode", dtlDao.getQuality_scode());
json.put("work_status", IOSEnum.WORK_STATUS.code("未生成"));
json.put("qty_unit_id", dtlDao.getQty_unit_id());
json.put("qty_unit_name", dtlDao.getQty_unit_name());
json.put("plan_qty", dtlDao.getPlan_qty());
return json;
}
/**
* 删除明细并更新子卷包装关系为生成
* @param iostorinv_id 主表标识
*/
private void updateSub(Long iostorinv_id) {
// 所有明细集合
List<StIvtIostorinvdtl> dtlDaoList = this.list(
new QueryWrapper<StIvtIostorinvdtl>().lambda()
.eq(StIvtIostorinvdtl::getIostorinv_id, iostorinv_id)
);
// 木箱sql拼接
String packageIn = dtlDaoList.stream()
.map(StIvtIostorinvdtl::getBox_no)
.distinct()
.collect(Collectors.joining("','"));
// 更新子卷包装关系
HashMap<String, String> map = new HashMap<>();
map.put("status", SUBEnum.STATUS.code("生成"));
WQLObject.getWQLObject("PDM_BI_SubPackageRelation")
.update(map, "package_box_SN IN ('"+packageIn+"') AND status = '"+ SUBEnum.STATUS.code("包装")+"'");
// 删除明细
this.remove(
new QueryWrapper<StIvtIostorinvdtl>().lambda()
.eq(StIvtIostorinvdtl::getIostorinv_id, iostorinv_id)
);
}
}

View File

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.storage_manage.ios.enums.IOSEnum;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
import org.nl.modules.logging.annotation.Log;
import org.nl.wms.st.inbill.service.RawAssistIStorService;
@@ -47,7 +48,8 @@ public class RawAssistIStorController {
//@PreAuthorize("@el.check('sectattr:del')")
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
rawAssistIStorService.deleteAll(ids);
// rawAssistIStorService.deleteAll(ids);
iStIvtIostorinvService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@@ -64,7 +66,12 @@ public class RawAssistIStorController {
//@PreAuthorize("@el.check('structrelamaterial:edit')")
public ResponseEntity<Object> insertDtl(@RequestBody Map whereJson) {
rawAssistIStorService.insertDtl(whereJson);
// 校验仓库
if (whereJson.get("stor_id").toString().equals(IOSEnum.STOR_ID.code("二期"))) {
iStIvtIostorinvService.insertMst(whereJson);
} else {
rawAssistIStorService.insertDtl(whereJson);
}
return new ResponseEntity<>(HttpStatus.CREATED);
}
@@ -73,7 +80,11 @@ public class RawAssistIStorController {
//@PreAuthorize("@el.check('sectattr:edit')")
public ResponseEntity<Object> update(@RequestBody Map whereJson) {
rawAssistIStorService.update(whereJson);
if (whereJson.get("stor_id").toString().equals(IOSEnum.STOR_ID.code("二期"))) {
iStIvtIostorinvService.update(whereJson);
}else {
rawAssistIStorService.update(whereJson);
}
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}