Merge branch 'b_lms' of http://121.40.234.130:8899/root/lanzhouhailiang_one into b_lms
This commit is contained in:
@@ -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 + "未定义");
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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_pcsn:sap批次
|
||||
* 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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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_pcsn:sap批次
|
||||
* 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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user