rev: 入库组盘

This commit is contained in:
2023-05-11 14:04:44 +08:00
parent eb7d4a2b40
commit 0115eab818
20 changed files with 807 additions and 87 deletions

View File

@@ -1,10 +1,22 @@
package org.nl.wms.masterdata_manage.controller.vehicle;
import io.swagger.annotations.ApiOperation;
import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* <p>
* 桶记录表 前端控制器
@@ -14,8 +26,17 @@ import org.springframework.web.bind.annotation.RestController;
* @since 2023-05-10
*/
@RestController
@RequestMapping("/mdPbBucketrecord")
@RequestMapping("/api/mdPbBucketrecord")
public class MdPbBucketrecordController {
@Autowired
private IMdPbBucketrecordService iMdPbBucketrecordService;
@GetMapping
@Log("查询桶记录表")
@ApiOperation("查询桶记录表")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(iMdPbBucketrecordService.queryAll(whereJson,page), HttpStatus.OK);
}
}

View File

@@ -1,8 +1,12 @@
package org.nl.wms.masterdata_manage.service.vehicle;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
* <p>
* 桶记录表 服务类
@@ -13,4 +17,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IMdPbBucketrecordService extends IService<MdPbBucketrecord> {
/**
* 查询桶记录表
* @param whereJson /
* @param page /
* @return Object /
*/
Object queryAll(Map whereJson, PageQuery page);
}

View File

@@ -3,6 +3,9 @@ package org.nl.wms.masterdata_manage.service.vehicle.dao.mapper;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/**
* <p>
* 桶记录表 Mapper 接口
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface MdPbBucketrecordMapper extends BaseMapper<MdPbBucketrecord> {
List<Map> queryAll(Map<String,Object> map);
}

View File

@@ -1,5 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.masterdata_manage.service.vehicle.dao.mapper.MdPbBucketrecordMapper">
<select id="queryAll" resultType="java.util.Map">
SELECT
re.*,
ma.material_name,
ma.material_code
FROM
MD_PB_BucketRecord re
LEFT JOIN md_me_materialbase ma ON ma.material_id = re.material_id
WHERE
1=1
<if test="material_id != null and material_id != ''">
and ma.material_id = #{material_id}
</if>
<if test="storagevehicle_type != null and storagevehicle_type != ''">
and re.storagevehicle_type = #{storagevehicle_type}
</if>
<if test="status != null and status != ''">
and re.status = #{status}
</if>
<if test="bucketunique != null and bucketunique != ''">
and ( re.bucketunique like '{bucketunique}%$' )
</if>
</select>
</mapper>

View File

@@ -1,11 +1,19 @@
package org.nl.wms.masterdata_manage.service.vehicle.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import org.nl.wms.masterdata_manage.service.vehicle.dao.mapper.MdPbBucketrecordMapper;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* <p>
* 桶记录表 服务实现类
@@ -17,4 +25,12 @@ import org.springframework.stereotype.Service;
@Service
public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMapper, MdPbBucketrecord> implements IMdPbBucketrecordService {
@Override
public Object queryAll(Map whereJson, PageQuery pageQuery) {
Page<Object> page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize());
TableDataInfo build = TableDataInfo.build(baseMapper.queryAll(whereJson));
build.setTotalElements(page.getTotal());
return build;
}
}

View File

@@ -74,4 +74,20 @@ public class IStivtlostorivnCpInController {
return new ResponseEntity<>(iStIvtIostorinvCpService.getIosInvDis(whereJson),HttpStatus.OK);
}
@PostMapping("/vehicleCheck")
@Log("校验载具是否存在")
@ApiOperation("校验载具是否存在")
public ResponseEntity<Object> vehicleCheck(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpService.vehicleCheck(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/confirmvehicle")
@Log("组盘")
@ApiOperation("组盘")
public ResponseEntity<Object> confirmvehicle(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpService.confirmvehicle(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -23,7 +23,7 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
* @param query,page /
* @return JSONObject
*/
JSONObject pageQuery(IostorInvQuery query, PageQuery page);
Object pageQuery(IostorInvQuery query, PageQuery page);
/**
* 创建
@@ -39,15 +39,38 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
/**
* 查询出入库单明细
* @param whereJson /
* @param whereJson
* {
* "bill_code": 单据号
* "iostorinv_id": 主表标识
* }
* @return List
* {
* "明细表所有字段"
* "material_code": 物料编码
* "material_name": 物料名称
* "material_spec": 物料批次
* }
*/
List getIosInvDtl(JSONObject whereJson);
/**
* 查询出入库单分配明细
* @param whereJson /
* @param whereJson
* {
* "iostorinvdtl_id": 明细表标识
* "iostorinv_id": 主表标识
* }
*
* @return List
* {
* "分配表所有字段"
* "bucketunique":箱号
* "qty": 数量
* "material_code": 物料编码
* "material_name": 物料名称
* "material_spec": 物料批次
* }
*/
List getIosInvDis(JSONObject whereJson);
@@ -59,16 +82,30 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
/**
* 组盘
* @param whereJson /
* @param whereJson
* {
* "dtl_row":{明细对象..}
* "vehicle_code": 托盘号
* "tableMater": [分配明细..]
* }
*/
void confirmvehicle(JSONObject whereJson);
/**
* 组盘
* @param ids /
* 删除
* @param ids
* {
* 主表id..
* }
*/
void delete(Long[] ids);
/**
* 校验载具是否存在
* @param whereJson
* {
* "storagevehicle_code" : 载具号
* }
*/
void vehicleCheck(JSONObject whereJson);
}

View File

@@ -1,5 +1,6 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
@@ -24,4 +25,6 @@ public interface IStIvtIostorinvdisCpService extends IService<StIvtIostorinvdisC
void batchInsert(Collection<StIvtIostorinvdisCp> list);
List<Map> queryInvDisByInvdtl(Map<String, Object> map);
List<StIvtIostorinvdisCp> onductDataDis(List<JSONObject> list, JSONObject json);
}

View File

@@ -2,8 +2,10 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -17,5 +19,13 @@ import java.util.Map;
*/
public interface IStIvtIostorinvdisdtlCpService extends IService<StIvtIostorinvdisdtlCp> {
/**
* 批量insert
* @param list
*/
void batchInsert(Collection<StIvtIostorinvdisdtlCp> list);
List<JSONObject> queryInvDisByInvdtl(Map<String, Object> map);
List<StIvtIostorinvdisdtlCp> onductDataDisDtl(List<JSONObject> list,JSONObject json);
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -16,6 +17,7 @@ import java.math.BigDecimal;
* @since 2023-05-04
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_iostorinvdis_cp")
public class StIvtIostorinvdisCp implements Serializable {
@@ -100,6 +102,7 @@ public class StIvtIostorinvdisCp implements Serializable {
/**
* 执行状态
*/
@Deprecated
private String work_status;
/**

View File

@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -16,6 +17,7 @@ import java.math.BigDecimal;
* @since 2023-05-04
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_iostorinvdisdtl_cp")
public class StIvtIostorinvdisdtlCp implements Serializable {

View File

@@ -2,8 +2,11 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -17,6 +20,8 @@ import java.util.Map;
*/
public interface StIvtIostorinvdisdtlCpMapper extends BaseMapper<StIvtIostorinvdisdtlCp> {
Integer batchSave(@Param("entitys") Collection<StIvtIostorinvdisdtlCp> entitys);
List<JSONObject> queryInvDtlDisByInv(Map<String,Object> map);
}

View File

@@ -19,15 +19,15 @@
quality_scode,
ivt_level,
is_active,
work_statue,
work_status,
task_id,
storagevehicle_id,
storagevehicle_code,
storagevehicle_type,
is_issued,
qty_unit_id,
qty_unit_nam,
plan_qt,
qty_unit_name,
plan_qty,
real_qty,
point_id,
point_code,
@@ -50,15 +50,15 @@
#{item.quality_scode},
#{item.ivt_level},
#{item.is_active},
#{item.work_statue},
#{item.work_status},
#{item.task_id},
#{item.storagevehicle_id},
#{item.storagevehicle_code},
#{item.storagevehicle_type},
#{item.is_issued},
#{item.qty_unit_id},
#{item.qty_unit_nam},
#{item.plan_qt},
#{item.qty_unit_name},
#{item.plan_qty},
#{item.real_qty},
#{item.point_id},
#{item.point_code},

View File

@@ -1,6 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisdtlCpMapper">
<insert id="batchSave" parameterType="org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp">
insert into ST_IVT_IOStorInvDisDtl_CP(
iostorinvdisdtl_id,
iostorinvdis_id,
iostorinv_id,
iostorinvdtl_id,
seq_no,
sect_id,
sect_code,
sect_name,
struct_id,
struct_code,
struct_name,
material_id,
pcsn,
quality_scode,
ivt_level,
is_active,
storagevehicle_id,
storagevehicle_code,
storagevehicle_type,
bucketunique,
qty_unit_id,
qty_unit_name,
real_qty)
values
<foreach item="item" collection="entitys" separator=",">
(
#{item.iostorinvdisdtl_id},
#{item.iostorinvdis_id},
#{item.iostorinv_id},
#{item.iostorinvdtl_id},
#{item.seq_no},
#{item.sect_id},
#{item.sect_code},
#{item.sect_name},
#{item.struct_id},
#{item.struct_code},
#{item.struct_name},
#{item.material_id},
#{item.pcsn},
#{item.quality_scode},
#{item.ivt_level},
#{item.is_active},
#{item.storagevehicle_id},
#{item.storagevehicle_code},
#{item.storagevehicle_type},
#{item.bucketunique},
#{item.qty_unit_id},
#{item.qty_unit_name},
#{item.real_qty})
</foreach>
</insert>
<select id="queryInvDtlDisByInv" resultType="java.util.Map">
SELECT
disdtl.*,

View File

@@ -1,5 +1,6 @@
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;
@@ -8,12 +9,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.jsonwebtoken.lang.Assert;
import org.jetbrains.annotations.NotNull;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.basedata.service.storage.IStIvtBsrealstorattrService;
import org.nl.wms.storage_manage.basedata.service.storage.dao.StIvtBsrealstorattr;
@@ -23,7 +32,7 @@ import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinv
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvCpMapper;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery;
import org.springframework.beans.factory.annotation.Autowired;
@@ -46,33 +55,35 @@ import java.util.stream.Collectors;
public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMapper, StIvtIostorinvCp> implements IStIvtIostorinvCpService {
@Autowired
protected IStIvtIostorinvdtlCpService iostorinvdtlCpService;
protected IStIvtIostorinvdtlCpService iostorinvdtlCpService; // 成品出入库明细表服务
@Autowired
protected IStIvtIostorinvdisCpService iostorinvdisCpService;
protected IStIvtIostorinvdisCpService iostorinvdisCpService; // 成品出入库分配表服务
@Autowired
protected IStIvtIostorinvdisdtlCpService iStIvtIostorinvdisdtlCpService;
protected IStIvtIostorinvdisdtlCpService iStIvtIostorinvdisdtlCpService; // 成品出入库分配明细表服务
@Autowired
protected IStIvtBsrealstorattrService stIvtBsrealstorattrService;
protected IStIvtBsrealstorattrService stIvtBsrealstorattrService; // 实物属性表表服务
@Autowired
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息表服务
@Autowired
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
@Override
public JSONObject pageQuery(IostorInvQuery query, PageQuery page) {
public Object pageQuery(IostorInvQuery query, PageQuery page) {
// 查询条件
query.setIo_type(IOSEnum.IO_TYPE.code("入库"));
page.setSort("bill_code,ASC");
// 分页查询
Page<StIvtIostorinvCp> pageQuery = this.page(page.build(), query.build());
TableDataInfo<StIvtIostorinvCp> build = TableDataInfo.build(pageQuery);
// 组织前端返回数据
JSONObject json = new JSONObject();
json.put("content", pageQuery.getRecords());
json.put("totalElements", pageQuery.getTotal());
return json;
return build;
}
@Override
@@ -140,27 +151,116 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
@Override
@Transactional(rollbackFor = Exception.class)
public void confirmvehicle(JSONObject whereJson) {
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
WQLObject vehicleMaterialTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
WQLObject disTab = WQLObject.getWQLObject("st_ivt_iostorinvdis");
String storagevehicle_code = whereJson.getString("storagevehicle_code");
// 校验载具是否存在
JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + storagevehicle_code + "' and is_delete = '0' and is_used = '1'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVehicle)) throw new BadRequestException("载具不存在");
JSONArray vehicleMaterial = vehicleMaterialTab.query("storagevehicle_code = '" + storagevehicle_code + "' and material_id IS not NULL ").getResultJSONArray(0);
if (vehicleMaterial.size()>0){
throw new BadRequestException("载具已被占用");
/*
1.插入分配明细表
2.插入分配表
3.更新明细表
4.更新扩展属性表
5.更新箱记录表 (有箱号才更新)
*/
JSONObject jsonDtl = whereJson.getJSONObject("dtl_row");
JSONArray tableDisDtl = whereJson.getJSONArray("tableMater");
/*
处理有箱号分配明细: 要插入分配明细表
*/
List<JSONObject> disDtlList = tableDisDtl
.stream()
.map(row -> (JSONObject) row)
.filter(row -> ObjectUtil.isNotEmpty(row.getString("bucketunique")))
.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)) {
// 2.调用分配明细方法处理
List<StIvtIostorinvdisdtlCp> disDtlDaoListAll = iStIvtIostorinvdisdtlCpService.onductDataDisDtl(disDtlList, param);
// 3.根据托盘分组
Map<String, List<StIvtIostorinvdisdtlCp>> collect = disDtlDaoListAll
.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisdtlCp::getStoragevehicle_code));
for (List<StIvtIostorinvdisdtlCp> disDtlDaoList : collect.values()) {
// 3.调用服务插入分配明细
iStIvtIostorinvdisdtlCpService.batchInsert(disDtlDaoList);
// 4.插入分配
StIvtIostorinvdisdtlCp disDtlDao = disDtlDaoList.get(0);
// 计算合计
BigDecimal qty = disDtlDaoList
.stream()
.map(StIvtIostorinvdisdtlCp::getReal_qty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 插入分配明细
StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp()
.setIostorinvdis_id(IdUtil.getStringId())
.setIostorinv_id(param.getString("iostorinv_id"))
.setIostorinvdtl_id(param.getString("iostorinvdtl_id"))
.setSeq_no(1)
.setMaterial_id(disDtlDao.getMaterial_id())
.setPcsn(disDtlDao.getPcsn())
.setQuality_scode(disDtlDao.getQuality_scode())
.setIvt_level(disDtlDao.getIvt_level())
.setIs_active(true)
.setIs_issued(false)
.setWork_status("00") //TODO 暂时写死
.setStoragevehicle_id(disDtlDao.getStoragevehicle_id())
.setStoragevehicle_code(disDtlDao.getStoragevehicle_code())
.setStoragevehicle_type(disDtlDao.getStoragevehicle_type())
.setQty_unit_id(disDtlDao.getQty_unit_id())
.setQty_unit_name(disDtlDao.getQty_unit_name())
.setPlan_qty(qty)
.setReal_qty(qty);
iostorinvdisCpService.save(disDao);
// 5.回显分配明细表iostorinvdis_id标识
iStIvtIostorinvdisdtlCpService.update(
new StIvtIostorinvdisdtlCp().setIostorinvdis_id(disDao.getIostorinvdis_id()),
new QueryWrapper<StIvtIostorinvdisdtlCp>()
.eq("iostorinvdis_id", param.getString("iostorinvdis_id"))
.eq("storagevehicle_code", disDao.getStoragevehicle_code())
);
// 6.更新载具扩展属性表
MdPbStoragevehicleext vehicleDao = new MdPbStoragevehicleext();
vehicleDao.setMaterial_id(disDtlDao.getMaterial_id());
vehicleDao.setUpdate_id(SecurityUtils.getCurrentUserId());
vehicleDao.setUpdate_name(SecurityUtils.getCurrentNickName());
vehicleDao.setUpdate_time(new Date());
iMdPbStoragevehicleextService.update(
vehicleDao,new QueryWrapper<MdPbStoragevehicleext>().eq("storagevehicle_code", disDtlDao.getStoragevehicle_code())
);
}
}
// 更新分配明细载具号
JSONObject jsonDis = disTab.query("iostorinvdis_id = '" + whereJson.getString("iostorinvdis_id") + "'").uniqueResult(0);
// 校验此明细是否已经分配
if (ObjectUtil.isNotEmpty(jsonDis.getString("struct_id"))) {
throw new BadRequestException("此明细已分配不可组盘!");
/*
处理无箱号分配明细: 只插入分配表
*/
List<JSONObject> unDisDtlList = tableDisDtl
.stream()
.map(row -> (JSONObject) row)
.filter(row -> ObjectUtil.isEmpty(row.getString("bucketunique")))
.collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(unDisDtlList)) {
// 1.调用分配处理方法
List<StIvtIostorinvdisCp> disDaoListAll = iostorinvdisCpService.onductDataDis(unDisDtlList, param);
// 2.批量插入
iostorinvdisCpService.batchInsert(disDaoListAll);
}
jsonDis.put("storagevehicle_id", jsonVehicle.getString("storagevehicle_id"));
jsonDis.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
disTab.update(jsonDis);
}
@Override
@@ -174,6 +274,32 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
}
}
@Override
public void vehicleCheck(JSONObject whereJson) {
// 1.校验载具是否存在
MdPbStoragevehicleinfo daoVehicle = iMdPbStoragevehicleinfoService.getOne(
new QueryWrapper<MdPbStoragevehicleinfo>()
.eq("storagevehicle_code", whereJson.getString("storagevehicle_code"))
.eq("is_used", true)
);
if (ObjectUtil.isEmpty(daoVehicle)) throw new BadRequestException("此载具不存在或未启用");
// 2.校验载具是否已组盘
MdPbStoragevehicleext daoVehicleExt = iMdPbStoragevehicleextService.getOne(
new QueryWrapper<MdPbStoragevehicleext>()
.eq("storagevehicle_code", whereJson.getString("storagevehicle_code"))
);
if (ObjectUtil.isEmpty(daoVehicleExt)) {
// throw new BadRequestException("此载具扩展属性不存在,请维护!");
} else {
if (ObjectUtil.isNotEmpty(daoVehicleExt.getMaterial_id()))
throw new BadRequestException("此载具已组盘!");
}
}
@NotNull
private StIvtIostorinvCp packageMstForm(StIvtIostorinvCp stIvtIostorinvCp,JSONObject whereJson,Boolean isUpdate) {
JSONArray rows = whereJson.getJSONArray("tableData");
@@ -216,4 +342,5 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
return stIvtIostorinvCp;
}
}

View File

@@ -1,15 +1,26 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService;
import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisCpMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* <p>
@@ -22,6 +33,18 @@ import java.util.Map;
@Service
public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdisCpMapper, StIvtIostorinvdisCp> implements IStIvtIostorinvdisCpService {
@Autowired
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息表服务
@Autowired
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
@Autowired
protected IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料信息表服务
@Autowired
protected IMdPbMeasureunitService iMdPbMeasureunitService; // 计量单位表服务
@Override
public void batchInsert(Collection<StIvtIostorinvdisCp> list) {
if (!CollectionUtils.isEmpty(list)){
@@ -33,4 +56,61 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
public List queryInvDisByInvdtl(Map<String, Object> map) {
return baseMapper.queryInvDisByInvdtl(map);
}
@Override
public List<StIvtIostorinvdisCp> onductDataDis(List<JSONObject> list, JSONObject json) {
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(
new QueryWrapper<MdMeMaterialbase>().eq("material_id", item.getString("material_id"))
);
// 获取计量单位
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getOne(
new QueryWrapper<MdPbMeasureunit>().eq("measure_unit_id", materDao.getBase_unit_id())
);
StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp()
.setIostorinvdis_id(json.getString("iostorinvdis_id"))
.setIostorinvdtl_id(json.getString("iostorinvdtl_id"))
.setIostorinv_id(json.getString("iostorinv_id"))
.setSeq_no(1)
.setMaterial_id(materDao.getMaterial_id())
.setPcsn(DateUtil.today())
.setQuality_scode("00") // TODO 暂时写
.setIvt_level("01") // TODO 暂时写
.setIs_active(true)
.setWork_status("00") // TODO 暂时写
.setStoragevehicle_id(vehicleDao.getStoragevehicle_id())
.setStoragevehicle_code(vehicleDao.getStoragevehicle_code())
.setStoragevehicle_type(vehicleDao.getStoragevehicle_type())
.setIs_issued(false)
.setQty_unit_id(unitDao.getMeasure_unit_id())
.setQty_unit_name(unitDao.getUnit_name())
.setPlan_qty(item.getBigDecimal("qty"))
.setReal_qty(item.getBigDecimal("qty"));
result.add(disDao);
// 更新载具扩展属性表
MdPbStoragevehicleext vehicleExtDao = new MdPbStoragevehicleext();
vehicleExtDao.setMaterial_id(item.getString("material_id"));
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

@@ -1,12 +1,26 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
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.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisdtlCpMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -21,8 +35,72 @@ import java.util.Map;
@Service
public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdisdtlCpMapper, StIvtIostorinvdisdtlCp> implements IStIvtIostorinvdisdtlCpService {
@Autowired
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息表服务
@Autowired
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
@Autowired
protected IMdPbBucketrecordService iMdPbBucketrecordService; // 包装箱记录表服务
@Override
public void batchInsert(Collection<StIvtIostorinvdisdtlCp> list) {
if (!CollectionUtils.isEmpty(list)){
baseMapper.batchSave(list);
}
}
@Override
public List<JSONObject> queryInvDisByInvdtl(Map<String, Object> map) {
return baseMapper.queryInvDtlDisByInv(map);
}
@Override
public List<StIvtIostorinvdisdtlCp> onductDataDisDtl(List<JSONObject> list, JSONObject json) {
List<StIvtIostorinvdisdtlCp> result = new ArrayList<>();
list.forEach(item -> {
// 获取载具信息
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
new QueryWrapper<MdPbStoragevehicleinfo>()
.eq("storagevehicle_code", item.getString("storagevehicle_code"))
);
StIvtIostorinvdisdtlCp disDtlDao = new StIvtIostorinvdisdtlCp()
.setIostorinv_id(json.getString("iostorinv_id"))
.setIostorinvdtl_id(json.getString("iostorinvdtl_id"))
.setIostorinvdis_id(json.getString("iostorinvdis_id"))
.setIostorinvdisdtl_id(IdUtil.getStringId())
.setSeq_no(new BigDecimal(1))
.setMaterial_id(item.getString("material_id"))
.setPcsn(item.getString("pcsn"))
.setQuality_scode("00") // TODO 暂时写
.setIvt_level("01") // TODO 暂时写
.setIs_active(true)
.setStoragevehicle_id(vehicleDao.getStoragevehicle_id())
.setStoragevehicle_code(vehicleDao.getStoragevehicle_code())
.setStoragevehicle_type(vehicleDao.getStoragevehicle_type())
.setBucketunique(item.getString("bucketunique"))
.setQty_unit_id(item.getString("qty_unit_id"))
.setQty_unit_name(item.getString("qty_unit_name"))
.setReal_qty(item.getBigDecimal("qty"));
result.add(disDtlDao);
// 更新箱记录表
MdPbBucketrecord recodDao = new MdPbBucketrecord();
recodDao.setStoragevehicle_id(Long.getLong(vehicleDao.getStoragevehicle_id()));
recodDao.setStatus("02"); // TODO 暂时写死
recodDao.setStoragevehicle_code(vehicleDao.getStoragevehicle_code());
recodDao.setMakeup_optid(Long.getLong(SecurityUtils.getCurrentUserId()));
recodDao.setMakeup_optname(SecurityUtils.getCurrentNickName());
recodDao.setMakeup_time(DateUtil.now());
iMdPbBucketrecordService.update(
recodDao,new QueryWrapper<MdPbBucketrecord>().eq("bucketunique", item.getString("bucketunique"))
);
});
return result;
}
}