feat: 出库导出、确认
This commit is contained in:
@@ -119,7 +119,13 @@ public interface IschBaseTaskService extends IService<SchBaseTask> {
|
||||
*/
|
||||
List<JSONObject> getTaskingByFk(String iostorinvId);
|
||||
|
||||
JSONObject getTaskObject(LambdaQueryWrapper<SchBaseTask> taskLam);
|
||||
/**
|
||||
* 根据条件获取任务数据
|
||||
* @param taskLam 条件
|
||||
* @param flag 是否抛出异常 {@code true} 查询到多条会抛出异常,{@code false} 查询多条获取第一条
|
||||
* @return 一条数据SchBaseTask 或 {@code null}
|
||||
*/
|
||||
JSONObject getTaskObject(LambdaQueryWrapper<SchBaseTask> taskLam, boolean flag);
|
||||
|
||||
/**
|
||||
* 根据ids获取任务
|
||||
@@ -136,6 +142,7 @@ public interface IschBaseTaskService extends IService<SchBaseTask> {
|
||||
* @return
|
||||
*/
|
||||
List<JSONObject> getTaskByIdsToObject(List<String> taskIds, boolean flag);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -218,8 +218,8 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getTaskObject(LambdaQueryWrapper<SchBaseTask> taskLam) {
|
||||
SchBaseTask one = getOne(taskLam);
|
||||
public JSONObject getTaskObject(LambdaQueryWrapper<SchBaseTask> taskLam, boolean flag) {
|
||||
SchBaseTask one = getOne(taskLam, flag);
|
||||
if (ObjectUtil.isEmpty(one)){
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -5,8 +5,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.st.outbill.service.dto.AllBoxInfoDto;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillTaskParam;
|
||||
import org.nl.wms.st.outbill.service.dto.OutManageParam;
|
||||
import org.nl.wms.st.outbill.service.vo.OutBillTaskVo;
|
||||
import org.nl.wms.st.outbill.service.vo.OutManageExportVo;
|
||||
import org.nl.wms.stat.service.dto.InBillPageParam;
|
||||
import org.nl.wms.stat.service.dto.OutBillPageParam;
|
||||
import org.nl.wms.stat.service.vo.InBillPageVo;
|
||||
@@ -103,5 +106,14 @@ public interface IStIvtIostorinvdisService extends IService<StIvtIostorinvdis> {
|
||||
List<StIvtIostorinvdis> getBillDisByDtlId(String iostorinvdtlId);
|
||||
|
||||
List<JSONObject> getAllOverdueByDtlId(String iostorinvdtlId);
|
||||
|
||||
/**
|
||||
* 出库管理导出的数据
|
||||
* @param paramMap
|
||||
* @return
|
||||
*/
|
||||
List<OutManageExportVo> getOutManageExportData(OutManageParam paramMap);
|
||||
|
||||
List<AllBoxInfoDto> getAllBoxWeightAndDtlId();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package org.nl.b_lms.storage_manage.ios.service.iostorInv;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtMoveinv;
|
||||
|
||||
/**
|
||||
* 移库单据
|
||||
* @Author: lyd
|
||||
* @Date: 2025/7/2
|
||||
*/
|
||||
public interface IStIvtMoveinvService extends IService<StIvtMoveinv> {
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package org.nl.b_lms.storage_manage.ios.service.iostorInv.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 衣裤单据
|
||||
*
|
||||
* @Author: lyd
|
||||
* @Date: 2025/7/2
|
||||
*/
|
||||
@Data
|
||||
@TableName("st_ivt_moveinv")
|
||||
public class StIvtMoveinv {
|
||||
/** 移库单标识 */
|
||||
private String moveinv_id;
|
||||
/** 单据编号 */
|
||||
private String bill_code;
|
||||
/** 业务类型 */
|
||||
private String buss_type;
|
||||
/** 单据类型 */
|
||||
private String bill_type;
|
||||
/** 业务日期 */
|
||||
private String biz_date;
|
||||
/** 仓库标识 */
|
||||
private String stor_id;
|
||||
/** 仓库编码 */
|
||||
private String stor_code;
|
||||
/** 仓库名称 */
|
||||
private String stor_name;
|
||||
/** 总数量 */
|
||||
private String total_qty;
|
||||
/** 明细数 */
|
||||
private String detail_count;
|
||||
/** 单据状态 */
|
||||
private String bill_status;
|
||||
/** 备注 */
|
||||
private String remark;
|
||||
/***/
|
||||
private String create_mode;
|
||||
/***/
|
||||
private String input_optid;
|
||||
/***/
|
||||
private String input_optname;
|
||||
/***/
|
||||
private String input_time;
|
||||
/***/
|
||||
private String update_optid;
|
||||
/***/
|
||||
private String update_optname;
|
||||
/***/
|
||||
private String update_time;
|
||||
/***/
|
||||
private String confirm_optid;
|
||||
/***/
|
||||
private String confirm_optname;
|
||||
/***/
|
||||
private String confirm_time;
|
||||
/***/
|
||||
private String confirm_info;
|
||||
/***/
|
||||
private String sysdeptid;
|
||||
/***/
|
||||
private String syscompanyid;
|
||||
/***/
|
||||
private String is_delete;
|
||||
|
||||
}
|
||||
@@ -8,8 +8,11 @@ import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
|
||||
import org.nl.wms.st.outbill.service.dto.AllBoxInfoDto;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillTaskParam;
|
||||
import org.nl.wms.st.outbill.service.dto.OutManageParam;
|
||||
import org.nl.wms.st.outbill.service.vo.OutBillTaskVo;
|
||||
import org.nl.wms.st.outbill.service.vo.OutManageExportVo;
|
||||
import org.nl.wms.stat.service.dto.InBillPageParam;
|
||||
import org.nl.wms.stat.service.dto.OutBillPageParam;
|
||||
import org.nl.wms.stat.service.vo.InBillPageVo;
|
||||
@@ -93,4 +96,8 @@ public interface StIvtIostorinvdisMapper extends BaseMapper<StIvtIostorinvdis> {
|
||||
List<OutBillPageVo> getOutBillData(@Param("paramMap") OutBillPageParam paramMap);
|
||||
|
||||
List<OutBillTaskVo> getOutBillTask2(@Param("param") OutBillTaskParam param);
|
||||
|
||||
List<OutManageExportVo> getOutManageExportData(@Param("paramMap") OutManageParam paramMap);
|
||||
|
||||
List<AllBoxInfoDto> getAllBoxWeightAndDtlId();
|
||||
}
|
||||
|
||||
@@ -912,8 +912,8 @@
|
||||
AND CONCAT(record.width,'*',record.thickness) = #{paramMap.with}
|
||||
</if>
|
||||
<if test="paramMap.customer_name != null and paramMap.customer_name != ''">
|
||||
AND (record.customer_name LIKE #{paramMap.customer_name} OR record.customer_description LIKE
|
||||
#{paramMap.customer_name})
|
||||
AND (record.customer_name LIKE '%${paramMap.customer_name}%' OR record.customer_description LIKE
|
||||
'%${paramMap.customer_name}%')
|
||||
</if>
|
||||
GROUP BY
|
||||
record.bill_code,
|
||||
@@ -1036,8 +1036,8 @@
|
||||
AND CONCAT(record.width,'*',record.thickness) = #{paramMap.with}
|
||||
</if>
|
||||
<if test="paramMap.customer_name != null and paramMap.customer_name != ''">
|
||||
AND (record.customer_name LIKE #{paramMap.customer_name} OR record.customer_description LIKE
|
||||
#{paramMap.customer_name})
|
||||
AND (record.customer_name LIKE '%${paramMap.customer_name}%' OR record.customer_description LIKE
|
||||
'%${paramMap.customer_name}%')
|
||||
</if>
|
||||
GROUP BY
|
||||
record.bill_code,
|
||||
@@ -1116,6 +1116,142 @@
|
||||
AND mst.is_delete = '0'
|
||||
AND mst.bill_status <![CDATA[ <= ]]> '99'
|
||||
</select>
|
||||
<select id="getOutManageExportData" resultType="org.nl.wms.st.outbill.service.vo.OutManageExportVo">
|
||||
SELECT
|
||||
MAX(ios.bill_code) AS bill_code,
|
||||
MAX(ios.stor_name) AS stor_name,
|
||||
MAX(attr.stor_name) AS out_stor_name,
|
||||
MAX(ios.bill_type) AS bill_type,
|
||||
MAX(ios.biz_date) AS biz_date,
|
||||
MAX(dtl.plan_qty) AS qty,
|
||||
MAX(cu.cust_code) AS cust_code,
|
||||
MAX(cu.cust_name) AS cust_name,
|
||||
MAX(dtl.vbeln) AS vbeln,
|
||||
sub.sale_order_name,
|
||||
CONCAT( sub.thickness_request, '*', sub.width_standard ) AS spec,
|
||||
MAX(tr.cust_name) AS wl_cust_name,
|
||||
MAX(ios.estimated_freight) AS estimated_freight,
|
||||
MAX(dtl.assign_qty) AS plan_qty,
|
||||
MAX(sub.box_weight) AS box_weight,
|
||||
MAX(ios.order_number) AS order_number,
|
||||
MAX(ios.receiptaddress) AS receiptaddress,
|
||||
MAX( sd.label ) AS bill_status,
|
||||
count(DISTINCT(dis.box_no)) as box_count,
|
||||
dtl.iostorinvdtl_id
|
||||
FROM
|
||||
st_ivt_iostorinvdis dis
|
||||
LEFT JOIN st_ivt_iostorinvdtl dtl ON dis.iostorinvdtl_id = dtl.iostorinvdtl_id
|
||||
LEFT JOIN ST_IVT_IOStorInv ios ON ios.iostorinv_id = dtl.iostorinv_id
|
||||
LEFT JOIN md_cs_customerbase cu ON ios.cust_code = cu.cust_code
|
||||
LEFT JOIN md_cs_transportationbase tr ON ios.trans_code = tr.cust_code
|
||||
LEFT JOIN st_ivt_bsrealstorattr attr ON attr.stor_id = ios.out_stor_id
|
||||
LEFT JOIN pdm_bi_subpackagerelationrecord sub ON sub.package_box_sn = dis.box_no AND dis.pcsn = sub.container_name AND dis.iostorinv_id = sub.bill_id
|
||||
LEFT JOIN sys_dict sd on ios.bill_status = sd.`value` and sd.`code` = 'io_bill_status'
|
||||
WHERE
|
||||
ios.io_type = '1'
|
||||
AND ios.is_delete = '0'
|
||||
<if test="paramMap.bill_code != null and paramMap.bill_code != ''">
|
||||
AND ios.bill_code LIKE '%${paramMap.bill_code}%'
|
||||
</if>
|
||||
<if test="paramMap.sap_pcsn != null and paramMap.sap_pcsn != ''">
|
||||
AND sub.sap_pcsn LIKE '%${paramMap.sap_pcsn}%'
|
||||
</if>
|
||||
<if test="paramMap.sap_pcsns != null and !paramMap.sap_pcsns.isEmpty()">
|
||||
AND sub.sap_pcsn IN
|
||||
<foreach collection="paramMap.sap_pcsns" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="paramMap.pcsns != null and !paramMap.pcsns.isEmpty()">
|
||||
AND dis.pcsn IN
|
||||
<foreach collection="paramMap.pcsns" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="paramMap.vbelns != null and !paramMap.vbelns.isEmpty()">
|
||||
AND dtl.vbeln IN
|
||||
<foreach collection="paramMap.vbelns" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="paramMap.box_nos != null and !paramMap.box_nos.isEmpty()">
|
||||
AND dis.box_no IN
|
||||
<foreach collection="paramMap.box_nos" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="paramMap.cust_code != null and paramMap.cust_code != ''">
|
||||
AND (cu.cust_code LIKE '%${paramMap.cust_code}%' OR
|
||||
cu.cust_simple_name LIKE '%${paramMap.cust_code}%')
|
||||
</if>
|
||||
|
||||
<if test="paramMap.pcsn != null and paramMap.pcsn != ''">
|
||||
AND dis.pcsn LIKE '%${paramMap.pcsn}%'
|
||||
</if>
|
||||
|
||||
<if test="paramMap.is_upload != null and paramMap.is_upload != ''">
|
||||
AND ios.is_upload = #{paramMap.is_upload}
|
||||
</if>
|
||||
|
||||
<if test="paramMap.io_type != null and paramMap.io_type != ''">
|
||||
AND ios.io_type = #{paramMap.io_type}
|
||||
</if>
|
||||
|
||||
<if test="paramMap.vbeln != null and paramMap.vbeln != ''">
|
||||
AND dtl.vbeln LIKE '%${paramMap.vbeln}%'
|
||||
</if>
|
||||
<if test="paramMap.width != null and paramMap.width != ''">
|
||||
AND dtl.width LIKE '%${paramMap.width}%'
|
||||
</if>
|
||||
|
||||
<if test="paramMap.bill_type != null and !paramMap.bill_type.isEmpty()">
|
||||
AND ios.bill_type IN
|
||||
<foreach collection="paramMap.bill_type" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="paramMap.stor_id != null and !paramMap.stor_id.isEmpty()">
|
||||
AND ios.stor_id IN
|
||||
<foreach collection="paramMap.stor_id" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
<if test="paramMap.create_mode != null and paramMap.create_mode != ''">
|
||||
AND ios.create_mode = #{paramMap.create_mode}
|
||||
</if>
|
||||
|
||||
<if test="paramMap.bill_status != null and !paramMap.bill_status.isEmpty()">
|
||||
AND ios.bill_status IN
|
||||
<foreach collection="paramMap.bill_status" item="code" separator="," open="(" close=")">
|
||||
#{code}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
|
||||
AND ios.input_time <![CDATA[ >= ]]> #{paramMap.begin_time}
|
||||
</if>
|
||||
<if test="paramMap.end_time != null and paramMap.end_time != ''">
|
||||
AND ios.input_time <![CDATA[ <= ]]> #{paramMap.end_time}
|
||||
</if>
|
||||
GROUP BY sub.sale_order_name,spec,ios.iostorinv_id,dtl.iostorinvdtl_id
|
||||
limit 0,100000
|
||||
</select>
|
||||
<select id="getAllBoxWeightAndDtlId" resultType="org.nl.wms.st.outbill.service.dto.AllBoxInfoDto">
|
||||
SELECT SUM(sub.box_weight) AS box_weight,
|
||||
MAX(dtl.iostorinvdtl_id) AS iostorinvdtl_id
|
||||
FROM st_ivt_iostorinvdis dis
|
||||
LEFT JOIN st_ivt_iostorinvdtl dtl ON dis.iostorinvdtl_id = dtl.iostorinvdtl_id
|
||||
LEFT JOIN st_ivt_iostorinv ios ON ios.iostorinv_id = dtl.iostorinv_id
|
||||
LEFT JOIN pdm_bi_subpackagerelation sub
|
||||
ON sub.package_box_sn = dis.box_no AND dis.pcsn = sub.container_name
|
||||
WHERE ios.io_type = '1'
|
||||
and ios.is_delete = '0'
|
||||
GROUP BY dtl.iostorinvdtl_id
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
package org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtMoveinv;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Date: 2025/7/2
|
||||
*/
|
||||
public interface StIvtMoveinvMapper extends BaseMapper<StIvtMoveinv> {
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<?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.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtMoveinvMapper">
|
||||
</mapper>
|
||||
@@ -44,14 +44,16 @@ 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.md.service.MdPbMeasureunitService;
|
||||
import org.nl.b_lms.storage_manage.st.dao.StIvtBsrealstorattr;
|
||||
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
|
||||
import org.nl.b_lms.storage_manage.st.service.StIvtBsrealstorattrService;
|
||||
import org.nl.b_lms.storage_manage.st.service.StIvtSectattrService;
|
||||
import org.nl.b_lms.storage_manage.st.service.StIvtStructattrService;
|
||||
import org.nl.b_lms.storage_manage.st.service.StIvtStructivtService;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.system.service.param.ISysParamService;
|
||||
@@ -72,7 +74,6 @@ import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collector;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -156,6 +157,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
private RedissonClient redissonClient;
|
||||
@Autowired
|
||||
private StIvtStructivtService structivtService;
|
||||
/** 仓位 */
|
||||
@Autowired
|
||||
private StIvtStructattrService structattrService;
|
||||
@Autowired
|
||||
@@ -168,10 +170,17 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
private StIvtSectattrService sectattrService;
|
||||
@Autowired
|
||||
private ISysParamService paramService;
|
||||
/** 载具扩展属性表 */
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleextService mdPbStoragevehicleextService;
|
||||
@Autowired
|
||||
private IschBasePointService ischBasePointService;
|
||||
@Autowired
|
||||
private TwoOutExceptionalTask twoOutExceptionalTask;
|
||||
/** 事物库区 */
|
||||
@Autowired
|
||||
private StIvtBsrealstorattrService bsrealstorattrService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String insertMst(JSONObject whereJson) {
|
||||
@@ -206,7 +215,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
.map(row -> row.getBigDecimal("plan_qty"))
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add)
|
||||
.doubleValue();
|
||||
whereJson.put("total_qty",total_qty);
|
||||
whereJson.put("total_qty", total_qty);
|
||||
|
||||
StIvtIostorinv mstDao = updataMst(whereJson, null);
|
||||
this.save(mstDao);
|
||||
@@ -277,6 +286,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/*
|
||||
* 查询生成和未分配完的明细, 条件:明细状态小于等于分配中、未分配数大于0
|
||||
* 全部分配根据单据号去查,否者通过明细id或者木箱号获取
|
||||
*/
|
||||
// 查询条件
|
||||
LambdaQueryWrapper<StIvtIostorinvdtl> dtlQuery = new QueryWrapper<StIvtIostorinvdtl>().lambda();
|
||||
@@ -321,7 +331,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
StIvtIostorinvdtl dtlDao = dtlDaoList.get(i);
|
||||
|
||||
// 调用分配库存公共方法
|
||||
List<StIvtIostorinvdis> disArr = outBussManageService.divIvt(dtlDao,ivtList);
|
||||
List<StIvtIostorinvdis> disArr = outBussManageService.divIvt(dtlDao, ivtList);
|
||||
|
||||
disDaoList.addAll(disArr);
|
||||
}
|
||||
@@ -339,7 +349,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonLockParam.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁"));
|
||||
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
|
||||
|
||||
outBussManageService.lockStruct(paramLockList,jsonLockParam);
|
||||
outBussManageService.lockStruct(paramLockList, jsonLockParam);
|
||||
|
||||
// 插入分配明细
|
||||
iStIvtIostorinvdisService.saveBatch(disDaoList);
|
||||
@@ -349,7 +359,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
} else {
|
||||
throw new BadRequestException("其他出库单当前正在分配货位,请等待几秒再进行操作!");
|
||||
}
|
||||
} finally {
|
||||
} finally {
|
||||
if (lock.isLocked() && lock.isHeldByCurrentThread()) {
|
||||
lock.unlock();
|
||||
}
|
||||
@@ -381,7 +391,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
List<StIvtIostorinvdtl> dtlDaoList = iStIvtIostorinvdtlService.list(
|
||||
new QueryWrapper<StIvtIostorinvdtl>().lambda()
|
||||
.eq(StIvtIostorinvdtl::getIostorinv_id, mstDao.getIostorinv_id())
|
||||
.eq(StIvtIostorinvdtl::getIostorinvdtl_id,jsonDtl.getString("iostorinvdtl_id"))
|
||||
.eq(StIvtIostorinvdtl::getIostorinvdtl_id, jsonDtl.getString("iostorinvdtl_id"))
|
||||
.le(StIvtIostorinvdtl::getBill_status, IOSEnum.BILL_STATUS.code("分配中"))
|
||||
.gt(StIvtIostorinvdtl::getUnassign_qty, 0)
|
||||
.orderByAsc(StIvtIostorinvdtl::getSeq_no)
|
||||
@@ -397,7 +407,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
.collect(Collectors.joining("','"));
|
||||
|
||||
List<JSONObject> ivtList = WQL.getWO("BST_OUTDIV").addParam("flag", "1").addParam("stor_id", mstDao.getStor_id().toString())
|
||||
.addParam("box_in", "('"+box_in+"')")
|
||||
.addParam("box_in", "('" + box_in + "')")
|
||||
.process().getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
if (ObjectUtil.isEmpty(ivtList)) {
|
||||
@@ -429,7 +439,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
}
|
||||
} else {
|
||||
// 调用分配库存公共方法
|
||||
disDaoList = outBussManageService.manualDivIvt(dtlDaoList.get(0),ivtList);
|
||||
disDaoList = outBussManageService.manualDivIvt(dtlDaoList.get(0), ivtList);
|
||||
}
|
||||
|
||||
// 更新仓位
|
||||
@@ -445,7 +455,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonLockParam.put("lock_type", IOSEnum.LOCK_TYPE.code("出库锁"));
|
||||
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
|
||||
|
||||
outBussManageService.lockStruct(lockList,jsonLockParam);
|
||||
outBussManageService.lockStruct(lockList, jsonLockParam);
|
||||
|
||||
// 插入分配明细
|
||||
iStIvtIostorinvdisService.saveBatch(disDaoList);
|
||||
@@ -523,7 +533,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
);
|
||||
|
||||
/*更新库存*/
|
||||
outBussManageService.upateIvt(disList,mstDao,IOSEnum.IVT_CHANGE.code("减冻结"));
|
||||
outBussManageService.upateIvt(disList, mstDao, IOSEnum.IVT_CHANGE.code("减冻结"));
|
||||
|
||||
/*
|
||||
* 更新明细、主单据
|
||||
@@ -569,7 +579,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
}
|
||||
|
||||
// 未分配重量 = 计划重量 则 明细状态为生成 否则 为分配中
|
||||
if (dtlDao.getUnassign_qty().doubleValue() == dtlDao.getPlan_qty().doubleValue()){
|
||||
if (dtlDao.getUnassign_qty().doubleValue() == dtlDao.getPlan_qty().doubleValue()) {
|
||||
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
} else {
|
||||
dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
|
||||
@@ -585,7 +595,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
this.updateMstStatus(mstDao.getIostorinv_id());
|
||||
|
||||
/*删除出库任务*/
|
||||
List<String> taskIds = disList.stream()
|
||||
List<String> taskIds = disList.stream()
|
||||
.map(row -> row.getString("task_id"))
|
||||
.distinct()
|
||||
.collect(Collectors.toList());
|
||||
@@ -617,7 +627,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonLockParam.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
|
||||
|
||||
outBussManageService.lockStruct(paramLockList,jsonLockParam);
|
||||
outBussManageService.lockStruct(paramLockList, jsonLockParam);
|
||||
} else {
|
||||
throw new BadRequestException("其他出库单当前正在取消分配,请等待几秒再进行操作!");
|
||||
}
|
||||
@@ -660,8 +670,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 定义一个函数,将需要分组的元素映射到一个建的集合里
|
||||
Function<JSONObject, List<String>> compositeKey = row ->
|
||||
Arrays.asList(row.getString("box_length"), row.getString("box_width"),
|
||||
row.getString("box_high"),row.getString("sale_order_name"),
|
||||
row.getString("material_id")
|
||||
row.getString("box_high"), row.getString("sale_order_name"),
|
||||
row.getString("material_id")
|
||||
);
|
||||
|
||||
Map<List<String>, List<JSONObject>> groupingDisMap =
|
||||
@@ -669,10 +679,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
for (List<JSONObject> disLikeList : groupingDisMap.values()) {
|
||||
// 调用任务生成处理
|
||||
List<JSONObject> taskMangeList = createTaskMange(disLikeList,mstDao.getIostorinv_id().toString());
|
||||
List<JSONObject> taskMangeList = createTaskMange(disLikeList, mstDao.getIostorinv_id().toString());
|
||||
|
||||
// 创建任务并下发一组任务
|
||||
createTask(taskMangeList,disLikeList,whereJson.getString("point_code"));
|
||||
createTask(taskMangeList, disLikeList, whereJson.getString("point_code"));
|
||||
}
|
||||
|
||||
// 下发任务:判断当前单据是否有正在执行的的任务
|
||||
@@ -722,7 +732,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 定义一个函数,将需要分组的元素映射到一个建的集合里
|
||||
Function<JSONObject, List<String>> compositeKey = row ->
|
||||
Arrays.asList(row.getString("box_length"), row.getString("box_width"),
|
||||
row.getString("box_high"),row.getString("sale_order_name"),
|
||||
row.getString("box_high"), row.getString("sale_order_name"),
|
||||
row.getString("material_id")
|
||||
);
|
||||
|
||||
@@ -737,10 +747,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
for (List<JSONObject> disLikeList : groupingDisMap.values()) {
|
||||
// 调用任务生成处理 (有移库直接下发去做,最后返回出库仓位数组)
|
||||
List<JSONObject> taskMangeList = createTaskMange2(disLikeList,mstDao.getIostorinv_id().toString(),allTransactionConsumer);
|
||||
List<JSONObject> taskMangeList = createTaskMange2(disLikeList, mstDao.getIostorinv_id().toString(), allTransactionConsumer);
|
||||
|
||||
// 创建任务并下发一组任务
|
||||
createTask2(taskMangeList,disLikeList,whereJson.getString("point_code"),allTransactionConsumer);
|
||||
createTask2(taskMangeList, disLikeList, whereJson.getString("point_code"), allTransactionConsumer);
|
||||
|
||||
allTransactionConsumer.accept("finish");
|
||||
}
|
||||
@@ -846,7 +856,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
// 更新库存
|
||||
if (ObjectUtil.isNotEmpty(needUpdateIvtList)) {
|
||||
outBussManageService.upateIvt(needUpdateIvtList,mstDao,IOSEnum.IVT_CHANGE.code("减库存"));
|
||||
outBussManageService.upateIvt(needUpdateIvtList, mstDao, IOSEnum.IVT_CHANGE.code("减库存"));
|
||||
}
|
||||
|
||||
// 更新仓位: 主存区仓位不更新
|
||||
@@ -865,7 +875,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
|
||||
|
||||
if (ObjectUtil.isNotEmpty(paramLockList)) {
|
||||
outBussManageService.lockStruct(paramLockList,jsonLockParam);
|
||||
outBussManageService.lockStruct(paramLockList, jsonLockParam);
|
||||
}
|
||||
|
||||
// 更新单据
|
||||
@@ -951,7 +961,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
* 如果是调拨出库则生成调拨入库单
|
||||
*/
|
||||
if (mstDao.getBill_type().equals(IOSEnum.OUT_TYPE.code("调拨出库"))) {
|
||||
createOutIos(disDaoList,mstDao);
|
||||
createOutIos(disDaoList, mstDao);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -998,7 +1008,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
.uniqueResult(0);
|
||||
|
||||
if (jsonTask == null) {
|
||||
throw new BadRequestException("查询不到操作的任务记录!"+whereJson.getString("task_id"));
|
||||
throw new BadRequestException("查询不到操作的任务记录!" + whereJson.getString("task_id"));
|
||||
}
|
||||
|
||||
// 查询分配明细
|
||||
@@ -1030,7 +1040,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
needUpdateIvtList.add(jsonIvt);
|
||||
}
|
||||
outBussManageService.upateIvt(needUpdateIvtList,mstDao,IOSEnum.IVT_CHANGE.code("减库存"));
|
||||
outBussManageService.upateIvt(needUpdateIvtList, mstDao, IOSEnum.IVT_CHANGE.code("减库存"));
|
||||
|
||||
// 更新仓位
|
||||
List<String> paramLockList = new ArrayList<>();
|
||||
@@ -1044,7 +1054,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonLockParam.put("operate", IOSEnum.IO_TYPE.code("出库"));
|
||||
|
||||
paramLockList.add(disDao.getStruct_code());
|
||||
outBussManageService.lockStruct(paramLockList,jsonLockParam);
|
||||
outBussManageService.lockStruct(paramLockList, jsonLockParam);
|
||||
|
||||
if (IOSEnum.OUT_TYPE.code("改切出库").equals(mstDao.getBill_type()) || IOSEnum.OUT_TYPE.code("返检出库").equals(mstDao.getBill_type())) {
|
||||
HashMap<String, String> map = new HashMap<>();
|
||||
@@ -1127,7 +1137,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
taskParam.put("next_device_code", IOSEnum.OUT_POINT.code(jsonAttrNow.getString("row_num")));
|
||||
taskParam.put("task_type", "010712");
|
||||
taskParam.put("car_no", "此货位LMS系统未有库存,请待出至【CK2001】点位后确认实物并重新手工入回库!");
|
||||
taskParam.put("vehicle_code",IOSEnum.IS_NOTANDYES.code("否"));
|
||||
taskParam.put("vehicle_code", IOSEnum.IS_NOTANDYES.code("否"));
|
||||
|
||||
TwoExcepionalMoveTask taskBean = new TwoExcepionalMoveTask();
|
||||
String task_id = taskBean.createTask(taskParam);
|
||||
@@ -1138,16 +1148,11 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/**
|
||||
* 创建调拨入库单
|
||||
*
|
||||
* @param disDaoList:出库分配明细集合
|
||||
* @param mstDao: 出库单据对象
|
||||
* @param mstDao: 出库单据对象
|
||||
*/
|
||||
private void createOutIos(List<StIvtIostorinvdis> disDaoList, StIvtIostorinv mstDao) {
|
||||
// 仓库表
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_bsrealstorattr");
|
||||
|
||||
// 子卷包装表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
|
||||
// 插入调拨入库单参数
|
||||
Map<String, Object> paramMap = new HashMap<>();
|
||||
|
||||
@@ -1155,9 +1160,8 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
* 准备数据
|
||||
*/
|
||||
// 查询移入仓库
|
||||
JSONObject jsonAttr = attrTab.query("stor_id = '" + mstDao.getOut_stor_id().toString() + "'").uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isEmpty(jsonAttr)) {
|
||||
StIvtBsrealstorattr ivtBsrealstorattr = bsrealstorattrService.getById(mstDao.getOut_stor_id());
|
||||
if (ObjectUtil.isEmpty(ivtBsrealstorattr)) {
|
||||
throw new BadRequestException("未查询到对应的移入仓库信息!");
|
||||
}
|
||||
|
||||
@@ -1169,26 +1173,25 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
// 计算总数量
|
||||
BigDecimal total_qty = disDaoList.stream()
|
||||
.map(row -> BigDecimal.valueOf(row.getPlan_qty().doubleValue()))
|
||||
.map(StIvtIostorinvdis::getPlan_qty)
|
||||
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
|
||||
paramMap.put("stor_id",jsonAttr.getString("stor_id"));
|
||||
paramMap.put("bill_status",IOSEnum.BILL_STATUS.code("分配中"));
|
||||
paramMap.put("total_qty",total_qty);
|
||||
paramMap.put("detail_count",disDaoList.size());
|
||||
paramMap.put("bill_type",IOSEnum.IN_TYPE.code("调拨入库"));
|
||||
paramMap.put("biz_date",DateUtil.today());
|
||||
paramMap.put("out_stor_id",mstDao.getStor_id());
|
||||
paramMap.put("source_id",dtlDao.getVbeln());
|
||||
paramMap.put("stor_id", ivtBsrealstorattr.getStor_id());
|
||||
paramMap.put("bill_status", IOSEnum.BILL_STATUS.code("分配中"));
|
||||
paramMap.put("total_qty", total_qty);
|
||||
paramMap.put("detail_count", disDaoList.size());
|
||||
paramMap.put("bill_type", IOSEnum.IN_TYPE.code("调拨入库"));
|
||||
paramMap.put("biz_date", DateUtil.today());
|
||||
paramMap.put("out_stor_id", mstDao.getStor_id());
|
||||
paramMap.put("source_id", dtlDao.getVbeln());
|
||||
paramMap.put("remark", "");
|
||||
|
||||
// 明细数据
|
||||
String pcsn_in = disDaoList.stream()
|
||||
List<String> pcsns = disDaoList.stream()
|
||||
.map(StIvtIostorinvdis::getPcsn)
|
||||
.collect(Collectors.joining("','"));
|
||||
.collect(Collectors.toList());
|
||||
|
||||
List<JSONObject> subList = subTab.query("container_name IN ('" + pcsn_in + "')")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
List<JSONObject> subList = subpackagerelationService.getSubPackageInfoBySubRolls(pcsns);
|
||||
|
||||
// 明细集合
|
||||
ArrayList<LinkedHashMap> tableData = new ArrayList<>();
|
||||
@@ -1222,24 +1225,26 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
tableData.add(jsonDtl);
|
||||
}
|
||||
|
||||
paramMap.put("tableData",tableData);
|
||||
paramMap.put("tableData", tableData);
|
||||
|
||||
// 调用入库服务插入入库
|
||||
iStIvtIostorinvService.insertMst(paramMap);
|
||||
|
||||
// 更新子卷包装关系为包装
|
||||
JSONObject jsonSub = new JSONObject();
|
||||
jsonSub.put("status", SUBEnum.STATUS.code("包装"));
|
||||
subTab.update(jsonSub,"container_name IN ('" + pcsn_in + "')");
|
||||
LambdaUpdateWrapper<PdmBiSubpackagerelation> subLam = new LambdaUpdateWrapper<>();
|
||||
subLam.set(PdmBiSubpackagerelation::getStatus, SUBEnum.STATUS.code("包装"))
|
||||
.in(PdmBiSubpackagerelation::getContainer_name, pcsns);
|
||||
subpackagerelationService.update(subLam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成任务前处理
|
||||
* @param disLikeList: 相同规格木箱、订单、物料的分配明细集合
|
||||
*
|
||||
* @param disLikeList: 相同规格木箱、订单、物料的分配明细集合
|
||||
* @param iostorinv_id: 单据标识
|
||||
* @return List<JSONObject> 生成任务的集合
|
||||
*/
|
||||
private List<JSONObject> createTaskMange(List<JSONObject> disLikeList, String iostorinv_id) {
|
||||
private List<JSONObject> createTaskMange(List<JSONObject> disLikeList, String iostorinv_id) {
|
||||
// 仓位表
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
|
||||
@@ -1275,7 +1280,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 判断是深位还是浅位
|
||||
if (jsonAttr.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("深"))) {
|
||||
// 深位:判断对应浅位是否阻挡
|
||||
JSONObject jsonBoxStop = ifBoxStop(jsonAttr,attrRowList,iostorinv_id);
|
||||
JSONObject jsonBoxStop = ifBoxStop(jsonAttr, attrRowList, iostorinv_id);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(jsonBoxStop)) {
|
||||
// 加入需要移库的集合
|
||||
@@ -1294,11 +1299,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/**
|
||||
* 生成任务前处理
|
||||
* @param disLikeList: 相同规格木箱、订单、物料的分配明细集合
|
||||
*
|
||||
* @param disLikeList: 相同规格木箱、订单、物料的分配明细集合
|
||||
* @param iostorinv_id: 单据标识
|
||||
* @return List<JSONObject> 生成任务的集合
|
||||
*/
|
||||
private List<JSONObject> createTaskMange2(List<JSONObject> disLikeList, String iostorinv_id, Consumer<String> allTransactionConsumer) {
|
||||
private List<JSONObject> createTaskMange2(List<JSONObject> disLikeList, String iostorinv_id, Consumer<String> allTransactionConsumer) {
|
||||
|
||||
// 获取仓位集合
|
||||
List<String> structCodes = disLikeList.stream()
|
||||
@@ -1329,7 +1335,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 判断是深位还是浅位
|
||||
if (jsonAttr.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("深"))) {
|
||||
// 深位:判断对应浅位是否阻挡
|
||||
JSONObject jsonBoxStop = ifBoxStop2(jsonAttr,attrRowList,iostorinv_id,allTransactionConsumer);
|
||||
JSONObject jsonBoxStop = ifBoxStop2(jsonAttr, attrRowList, iostorinv_id, allTransactionConsumer);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(jsonBoxStop)) {
|
||||
// 加入需要移库的集合
|
||||
@@ -1341,15 +1347,16 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
}
|
||||
|
||||
// 创建移库单下发移库任务
|
||||
outBussManageService.createMove2(needMoveAttrList,allTransactionConsumer);
|
||||
outBussManageService.createMove2(needMoveAttrList, allTransactionConsumer);
|
||||
|
||||
return needCreateAttrList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断是否阻挡
|
||||
* @param jsonAttr 要出库的仓位
|
||||
* @param attrRowList 相同规格所在排所有仓位
|
||||
*
|
||||
* @param jsonAttr 要出库的仓位
|
||||
* @param attrRowList 相同规格所在排所有仓位
|
||||
* @param iostorinv_id 单据标识
|
||||
* @return JSONObject 需要移库的仓位
|
||||
*/
|
||||
@@ -1440,7 +1447,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 查询物料id
|
||||
StIvtIostorinvdis disDao = iStIvtIostorinvdisService.list(
|
||||
new QueryWrapper<StIvtIostorinvdis>().lambda()
|
||||
.ne(StIvtIostorinvdis::getWork_status,IOSEnum.BILL_STATUS.code("完成"))
|
||||
.ne(StIvtIostorinvdis::getWork_status, IOSEnum.BILL_STATUS.code("完成"))
|
||||
.eq(StIvtIostorinvdis::getBox_no, jsonLow.getString("storagevehicle_code"))
|
||||
).get(0);
|
||||
|
||||
@@ -1452,7 +1459,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
JSONObject jsonVeExt = extTab.query("pcsn = '" + jsonLow.getString("storagevehicle_code") + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonVeExt)) {
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!"+jsonLow.getString("storagevehicle_code"));
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!" + jsonLow.getString("storagevehicle_code"));
|
||||
}
|
||||
|
||||
// 生成任务
|
||||
@@ -1474,7 +1481,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
attrTab.update(jsonLow);
|
||||
|
||||
// 更新移入货位为出库异常货位
|
||||
jsonMove.put("lock_type",IOSEnum.LOCK_TYPE.code("出库异常锁"));
|
||||
jsonMove.put("lock_type", IOSEnum.LOCK_TYPE.code("出库异常锁"));
|
||||
jsonLow.put("task_code", task_id);
|
||||
attrTab.update(jsonMove);
|
||||
}
|
||||
@@ -1487,21 +1494,13 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/**
|
||||
* 判断是否阻挡
|
||||
* @param jsonAttr 要出库的仓位
|
||||
* @param attrRowList 相同规格所在排所有仓位
|
||||
*
|
||||
* @param jsonAttr 要出库的仓位
|
||||
* @param attrRowList 相同规格所在排所有仓位
|
||||
* @param iostorinv_id 单据标识
|
||||
* @return JSONObject 需要移库的仓位
|
||||
*/
|
||||
private JSONObject ifBoxStop2(JSONObject jsonAttr, List<JSONObject> attrRowList, String iostorinv_id, Consumer<String> allTransactionConsumer) {
|
||||
// 仓位表
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
// 子卷包装关系表
|
||||
WQLObject subTab = WQLObject.getWQLObject("pdm_bi_subpackagerelation");
|
||||
// 任务表
|
||||
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
|
||||
// 载具扩展属性表
|
||||
WQLObject extTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
|
||||
|
||||
JSONObject result = new JSONObject();
|
||||
|
||||
// 获取要出库仓位所对应的浅货位
|
||||
@@ -1546,7 +1545,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
taskLam.eq(SchBaseTask::getVehicle_code, jsonLow.getString("storagevehicle_code"))
|
||||
.ne(SchBaseTask::getTask_status, "07")
|
||||
.eq(SchBaseTask::getIs_delete, "0");
|
||||
JSONObject jsonTask = ischBaseTaskService.getTaskObject(taskLam);
|
||||
JSONObject jsonTask = ischBaseTaskService.getTaskObject(taskLam, false);
|
||||
if (ObjectUtil.isNotEmpty(jsonTask)) {
|
||||
flag = false;
|
||||
}
|
||||
@@ -1584,7 +1583,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 查询物料id
|
||||
StIvtIostorinvdis disDao = iStIvtIostorinvdisService.list(
|
||||
new QueryWrapper<StIvtIostorinvdis>().lambda()
|
||||
.ne(StIvtIostorinvdis::getWork_status,IOSEnum.BILL_STATUS.code("完成"))
|
||||
.ne(StIvtIostorinvdis::getWork_status, IOSEnum.BILL_STATUS.code("完成"))
|
||||
.eq(StIvtIostorinvdis::getBox_no, jsonLow.getString("storagevehicle_code"))
|
||||
).get(0);
|
||||
|
||||
@@ -1593,10 +1592,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
JSONObject jsonMove = twoInBussManageService.getOneStruct(moveParam);
|
||||
|
||||
// 查询木箱对应的载具
|
||||
JSONObject jsonVeExt = extTab.query("pcsn = '" + jsonLow.getString("storagevehicle_code") + "'")
|
||||
.uniqueResult(0);
|
||||
JSONObject jsonVeExt = mdPbStoragevehicleextService.getOneByPcsnToObject(jsonLow.getString("storagevehicle_code"));
|
||||
if (ObjectUtil.isEmpty(jsonVeExt)) {
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!"+jsonLow.getString("storagevehicle_code"));
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!" + jsonLow.getString("storagevehicle_code"));
|
||||
}
|
||||
|
||||
// 生成任务
|
||||
@@ -1608,20 +1606,19 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonTaskParam.put("vehicle_code2", jsonVeExt.getString("storagevehicle_code"));
|
||||
jsonTaskParam.put("table_fk", iostorinv_id);
|
||||
|
||||
TwoOutExceptionalTask taskBean = new TwoOutExceptionalTask();
|
||||
String task_id = taskBean.createTask(jsonTaskParam);
|
||||
taskBean.immediateNotifyAcs(task_id);
|
||||
String task_id = twoOutExceptionalTask.createTask(jsonTaskParam);
|
||||
twoOutExceptionalTask.immediateNotifyAcs(task_id);
|
||||
|
||||
// 锁定:标记货位为异常并生成异常移库任务
|
||||
jsonLow.put("lock_type", IOSEnum.LOCK_TYPE.code("出库异常锁"));
|
||||
jsonLow.put("task_code", task_id);
|
||||
attrTab.update(jsonLow);
|
||||
structattrService.updateById(jsonLow.toJavaObject(StIvtStructattr.class));
|
||||
|
||||
// 更新移入货位为出库异常货位
|
||||
jsonMove.put("lock_type",IOSEnum.LOCK_TYPE.code("出库异常锁"));
|
||||
jsonMove.put("lock_type", IOSEnum.LOCK_TYPE.code("出库异常锁"));
|
||||
jsonMove.put("inv_code", jsonLow.getString("storagevehicle_code"));
|
||||
jsonLow.put("task_code", task_id);
|
||||
attrTab.update(jsonMove);
|
||||
jsonMove.put("task_code", task_id);
|
||||
structattrService.updateById(jsonMove.toJavaObject(StIvtStructattr.class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1631,11 +1628,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/**
|
||||
* 创建任务
|
||||
*
|
||||
* @param taskMangeList:仓位集合
|
||||
* @param disLikeList:分配明细集合
|
||||
* @param point_code : 终点
|
||||
* @param point_code : 终点
|
||||
*/
|
||||
private void createTask(List<JSONObject> taskMangeList,List<JSONObject> disLikeList, String point_code) {
|
||||
private void createTask(List<JSONObject> taskMangeList, List<JSONObject> disLikeList, String point_code) {
|
||||
// 任务表
|
||||
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
|
||||
// 点位表
|
||||
@@ -1675,9 +1673,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 确定终点: 根据仓位所在排确定终点
|
||||
|
||||
String end_device_code = "";
|
||||
if("1".equals(flag)){
|
||||
if ("1".equals(flag)) {
|
||||
end_device_code = IsEndCode2(json);
|
||||
}else{
|
||||
} else {
|
||||
end_device_code = IsEndCode(json);
|
||||
}
|
||||
|
||||
@@ -1712,7 +1710,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
iStIvtIostorinvdisService.updateBatchById(disDaoList);
|
||||
|
||||
// 标记任务
|
||||
jsonTask.put("is_auto_issue",IOSEnum.IS_SEND.code("否"));
|
||||
jsonTask.put("is_auto_issue", IOSEnum.IS_SEND.code("否"));
|
||||
taskService.update(jsonTask);
|
||||
continue;
|
||||
}
|
||||
@@ -1722,7 +1720,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
JSONObject jsonVeExt = extTab.query("pcsn = '" + json.getString("storagevehicle_code") + "'")
|
||||
.uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonVeExt)) {
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code"));
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!" + json.getString("storagevehicle_code"));
|
||||
}
|
||||
|
||||
// 生成任务
|
||||
@@ -1745,8 +1743,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
jsonTaskParam.put("table_fk", disDaoList.get(0).getIostorinv_id().toString());
|
||||
|
||||
if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅")) ||
|
||||
json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("无")))
|
||||
{
|
||||
json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("无"))) {
|
||||
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("浅")));
|
||||
} else {
|
||||
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("深")));
|
||||
@@ -1759,7 +1756,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 更新分配明细
|
||||
JSONObject jsonPoint = schBasePointService.query("point_code = '" + end_device_code + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isEmpty(jsonPoint)) {
|
||||
throw new BadRequestException("出库点位不存在:"+end_device_code);
|
||||
throw new BadRequestException("出库点位不存在:" + end_device_code);
|
||||
}
|
||||
|
||||
disDaoList.forEach(row -> {
|
||||
@@ -1773,11 +1770,14 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/**
|
||||
* 创建任务(通过仓位集合创建)
|
||||
* <p>出库口:IOSEnum#OUT_POINT/2</p>
|
||||
* @see IOSEnum#OUT_POINT2
|
||||
* @see IOSEnum#OUT_POINT
|
||||
* @param taskMangeList:仓位集合
|
||||
* @param disLikeList:分配明细集合
|
||||
* @param point_code : 终点
|
||||
* @param point_code : 终点
|
||||
*/
|
||||
private void createTask2(List<JSONObject> taskMangeList,List<JSONObject> disLikeList, String point_code, Consumer<String> allTransactionConsumer) {
|
||||
private void createTask2(List<JSONObject> taskMangeList, List<JSONObject> disLikeList, String point_code, Consumer<String> allTransactionConsumer) {
|
||||
// 查询异常货位任务集合
|
||||
List<String> taskIds = taskMangeList.stream()
|
||||
.filter(row -> row.getString("lock_type").equals(IOSEnum.LOCK_TYPE.code("出库异常锁")))
|
||||
@@ -1793,7 +1793,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
String start_device_code = "";
|
||||
// 是否自动下发
|
||||
String is_auto_issue = IOSEnum.IS_SEND.code("是");
|
||||
|
||||
// 堆垛机出库口是否缓存货位(1个或者两个)
|
||||
Param oneOrTwoStruct = paramService.findByCode("one_or_two_struct");
|
||||
String flag = "0";
|
||||
if (ObjectUtil.isNotEmpty(oneOrTwoStruct)) {
|
||||
@@ -1810,9 +1810,9 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 确定终点: 根据仓位所在排确定终点
|
||||
|
||||
String end_device_code = "";
|
||||
if("1".equals(flag)){
|
||||
if ("1".equals(flag)) {
|
||||
end_device_code = IsEndCode2(json);
|
||||
}else{
|
||||
} else {
|
||||
end_device_code = IsEndCode(json);
|
||||
}
|
||||
|
||||
@@ -1856,7 +1856,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 查询木箱对应的载具
|
||||
JSONObject jsonVeExt = mdPbStoragevehicleextService.getOneByPcsnToObject(json.getString("storagevehicle_code"));
|
||||
if (ObjectUtil.isEmpty(jsonVeExt)) {
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!"+json.getString("storagevehicle_code"));
|
||||
throw new BadRequestException("此木箱没有绑定托盘号!" + json.getString("storagevehicle_code"));
|
||||
}
|
||||
|
||||
// 生成任务
|
||||
@@ -1881,8 +1881,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
//设置单据类型,下发rgv任务时,终点不同
|
||||
jsonTaskParam.put("bill_type", mst.getBill_type());
|
||||
if (json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅")) ||
|
||||
json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("无")))
|
||||
{
|
||||
json.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("无"))) {
|
||||
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("浅")));
|
||||
} else {
|
||||
jsonTaskParam.put("sort_seq", Integer.parseInt(IOSEnum.ZDEPTH_STRUCT.code("深")));
|
||||
@@ -1895,7 +1894,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
// 更新分配明细
|
||||
SchBasePoint point = ischBasePointService.findByCode(end_device_code);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("出库点位不存在:"+end_device_code);
|
||||
throw new BadRequestException("出库点位不存在:" + end_device_code);
|
||||
}
|
||||
|
||||
disDaoList.forEach(row -> {
|
||||
@@ -1909,6 +1908,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/**
|
||||
* 确定终点:根据仓位所在排确定终点
|
||||
*
|
||||
* @param structDao:仓位对象
|
||||
* @return 终点
|
||||
*/
|
||||
@@ -1922,21 +1922,15 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/**
|
||||
* 更新异常货位
|
||||
*
|
||||
* @param disDaoList:所有分配明细集合
|
||||
*/
|
||||
private void UpdateExceptional(List<StIvtIostorinvdis> disDaoList) {
|
||||
// 仓位表
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
// 任务表
|
||||
WQLObject taskService = WQLObject.getWQLObject("sch_base_task");
|
||||
|
||||
// 获取仓位集合
|
||||
String structCodeIn = disDaoList.stream()
|
||||
List<String> structCodes = disDaoList.stream()
|
||||
.map(StIvtIostorinvdis::getStruct_code)
|
||||
.distinct().collect(Collectors.joining("','"));
|
||||
|
||||
List<JSONObject> attrList = attrTab.query("struct_code IN ('" + structCodeIn + "')")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
.distinct().collect(Collectors.toList());
|
||||
List<JSONObject> attrList = structattrService.getAttributeByCodesToObject(structCodes);
|
||||
|
||||
// 过滤异常货位
|
||||
List<JSONObject> attrExcepList = attrList.stream()
|
||||
@@ -1944,32 +1938,31 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 找所有异常任务
|
||||
String taskCodeIn = attrExcepList.stream()
|
||||
List<String> taskIds = attrExcepList.stream()
|
||||
.map(row -> row.getString("task_code"))
|
||||
.distinct().collect(Collectors.joining("','"));
|
||||
.distinct().collect(Collectors.toList());
|
||||
|
||||
List<JSONObject> taskList = taskService.query("task_id IN ('" + taskCodeIn + "')")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
List<SchBaseTask> taskList = ischBaseTaskService.getTaskByIds(taskIds, false);
|
||||
|
||||
// 更新异常货位
|
||||
List<String> structCodeInList = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < taskList.size(); i++) {
|
||||
JSONObject json = taskList.get(0);
|
||||
|
||||
structCodeInList.add(json.getString("point_code1"));
|
||||
structCodeInList.add(json.getString("point_code2"));
|
||||
SchBaseTask task = taskList.get(i);
|
||||
structCodeInList.add(task.getPoint_code1());
|
||||
structCodeInList.add(task.getPoint_code2());
|
||||
}
|
||||
|
||||
JSONObject jsonUpdate = new JSONObject();
|
||||
jsonUpdate.put("lock_type", IOSEnum.LOCK_TYPE.code("未锁定"));
|
||||
jsonUpdate.put("task_code", "");
|
||||
|
||||
attrTab.update(jsonUpdate,"struct_code IN ('"+String.join("','",structCodeInList)+"')");
|
||||
LambdaUpdateWrapper<StIvtStructattr> strattLam = new LambdaUpdateWrapper<>();
|
||||
strattLam.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(StIvtStructattr::getTask_code, "")
|
||||
.in(StIvtStructattr::getStruct_code, structCodeInList);
|
||||
structattrService.update(strattLam);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新主表状态
|
||||
*
|
||||
* @param iostorinv_id 主表标识
|
||||
*/
|
||||
public void updateMstStatus(String iostorinv_id) {
|
||||
@@ -2101,19 +2094,25 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/**
|
||||
* 判断是否有异常货位 - 10
|
||||
*
|
||||
* @param disDaoList - 分配明细集合
|
||||
* @return 仓位
|
||||
*/
|
||||
private String exceptionPointCode(List<JSONObject> disDaoList) {
|
||||
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||
WQLObject TaskTab = WQLObject.getWQLObject("sch_base_task");
|
||||
|
||||
String result = "";
|
||||
// 查找库内是否有异常货位(主存区)
|
||||
List<JSONObject> attrExceptionList = attrTab
|
||||
.query("sect_code = 'BZC01' AND is_delete = '0' AND is_used = '1' and lock_type = '" + IOSEnum.LOCK_TYPE.code("出库异常锁") + "' and zdepth = '"+IOSEnum.ZDEPTH_STRUCT.code("浅")+"'")
|
||||
.getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
|
||||
// List<JSONObject> attrExceptionList = attrTab
|
||||
// .query("sect_code = 'BZC01' AND is_delete = '0' AND is_used = '1' and lock_type = '"
|
||||
// + IOSEnum.LOCK_TYPE.code("出库异常锁") + "' and zdepth = '"
|
||||
// +IOSEnum.ZDEPTH_STRUCT.code("浅")+"'")
|
||||
// .getResultJSONArray(0).toJavaList(JSONObject.class);
|
||||
LambdaQueryWrapper<StIvtStructattr> structAttyLam = new LambdaQueryWrapper<>();
|
||||
structAttyLam.eq(StIvtStructattr::getSect_code, "BZC01")
|
||||
.eq(StIvtStructattr::getIs_delete, "0")
|
||||
.eq(StIvtStructattr::getIs_used, "1")
|
||||
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("出库异常锁"))
|
||||
.eq(StIvtStructattr::getZdepth, IOSEnum.ZDEPTH_STRUCT.code("浅"));
|
||||
List<JSONObject> attrExceptionList = structattrService.getAttributesByConditionsToObject(structAttyLam);
|
||||
if (ObjectUtil.isEmpty(attrExceptionList)) {
|
||||
return null;
|
||||
}
|
||||
@@ -2121,12 +2120,19 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
List<JSONObject> exceptionList = new ArrayList<>();
|
||||
// 查询异常货位对应的深货位
|
||||
attrExceptionList.forEach(row -> {
|
||||
JSONObject json = attrTab.query("row_num = '" + row.getString("row_num") + "' AND col_num = '" + row.getString("col_num") + "' AND " +
|
||||
"layer_num = '" + row.getString("layer_num") + "' AND zdepth = '" + IOSEnum.ZDEPTH_STRUCT.code("深") + "'"
|
||||
).uniqueResult(0);
|
||||
LambdaQueryWrapper<StIvtStructattr> lam = new LambdaQueryWrapper<>();
|
||||
lam.eq(StIvtStructattr::getRow_num, row.getString("row_num"))
|
||||
.eq(StIvtStructattr::getCol_num, row.getString("col_num"))
|
||||
.eq(StIvtStructattr::getLayer_num, row.getString("layer_num"))
|
||||
.eq(StIvtStructattr::getZdepth, IOSEnum.ZDEPTH_STRUCT.code("深"));
|
||||
JSONObject attribute = structattrService.getAttributeByConditionsToObject(lam, true);
|
||||
// JSONObject json = attrTab.query("row_num = '" + row.getString("row_num")
|
||||
// + "' AND col_num = '" + row.getString("col_num") + "' AND " +
|
||||
// "layer_num = '" + row.getString("layer_num") + "' AND zdepth = '" + IOSEnum.ZDEPTH_STRUCT.code("深") + "'"
|
||||
// ).uniqueResult(0);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(json)) {
|
||||
exceptionList.add(json);
|
||||
if (ObjectUtil.isNotEmpty(attribute)) {
|
||||
exceptionList.add(attribute);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -2152,15 +2158,22 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
.findFirst().orElse(null);
|
||||
|
||||
if (ObjectUtil.isEmpty(expJson)) {
|
||||
return "货位【"+jsonObject.getString("struct_code")+"'】 对应的浅货位有出库异常任务,请检查!";
|
||||
return "货位【" + jsonObject.getString("struct_code") + "'】 对应的浅货位有出库异常任务,请检查!";
|
||||
}
|
||||
|
||||
// 查询对应的异常任务
|
||||
JSONObject jsonTask = TaskTab
|
||||
.query("handle_class = '" + TwoOutExceptionalTask.class.getName() + "' AND is_delete = '0' and point_code2 = '" + expJson.getString("struct_code") + "' ORDER BY create_time DESC")
|
||||
.uniqueResult(0);
|
||||
|
||||
result = "请先下发木箱号为【"+jsonTask.getString("vehicle_code")+"】的出库任务!";
|
||||
// JSONObject jsonTask = TaskTab
|
||||
// .query("handle_class = '" + TwoOutExceptionalTask.class.getName()
|
||||
// + "' AND is_delete = '0' and point_code2 = '" + expJson.getString("struct_code")
|
||||
// + "' ORDER BY create_time DESC")
|
||||
// .uniqueResult(0);
|
||||
LambdaQueryWrapper<SchBaseTask> taskLam = new QueryWrapper<SchBaseTask>().lambda();
|
||||
taskLam.eq(SchBaseTask::getHandle_class, TwoOutExceptionalTask.class.getName())
|
||||
.eq(SchBaseTask::getIs_delete, "0")
|
||||
.eq(SchBaseTask::getPoint_code2, expJson.getString("struct_code"))
|
||||
.orderByDesc(SchBaseTask::getCreate_time);
|
||||
SchBaseTask task = ischBaseTaskService.getOne(taskLam, false);
|
||||
result = "请先下发木箱号为【" + task.getVehicle_code() + "】的出库任务!";
|
||||
|
||||
}
|
||||
return result;
|
||||
@@ -2168,6 +2181,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
|
||||
/**
|
||||
* 出库下发任务前校验:校验木箱类型数据是否都已经维护
|
||||
*
|
||||
* @param iostorinv_id 主表id
|
||||
*/
|
||||
private void boxCheck(String iostorinv_id) {
|
||||
@@ -2215,7 +2229,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
|
||||
.map(MdpbBoxtype::getBox_type)
|
||||
.collect(Collectors.joining("','"));
|
||||
|
||||
throw new BadRequestException("请先维护规格类型为【"+message+"】的木箱规格类型信息!");
|
||||
throw new BadRequestException("请先维护规格类型为【" + message + "】的木箱规格类型信息!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -213,7 +213,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
pdmBiSubpackagerelationMapper.update(pdmBiSubpackagerelation, new UpdateWrapper<PdmBiSubpackagerelation>().eq("package_box_sn", packageIn).eq("status", SUBEnum.STATUS.code("生成")));
|
||||
}
|
||||
|
||||
return mstDao.getIostorinv_id().toString();
|
||||
return mstDao.getIostorinv_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -362,7 +362,8 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
if (ObjectUtil.isNotEmpty(whereJson.get("in_buss"))) {
|
||||
attrParam.put("move_block_num", MapUtil.getStr(whereJson, "move_block_num"));
|
||||
}
|
||||
stIvtStructattr = twoInBussManageService.getOneStruct(attrParam);
|
||||
stIvtStructattr = null;
|
||||
// stIvtStructattr = twoInBussManageService.getOneStruct(attrParam);
|
||||
}
|
||||
} else {
|
||||
// 指定分配
|
||||
@@ -384,8 +385,10 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
|
||||
// 判断是否虚拟区
|
||||
String work_status;
|
||||
Long task_id = null;
|
||||
JSONObject jsonSect = sectTab.query("sect_id = '" + jsonAttr.getString("sect_id") + "'").uniqueResult(0);
|
||||
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", jsonAttr.getString("sect_id")));
|
||||
// JSONObject jsonSect = sectTab.query("sect_id = '" + jsonAttr.getString("sect_id") + "'").uniqueResult(0);
|
||||
JSONObject jsonSect = sectTab.query("sect_id = '" + 1 + "'").uniqueResult(0);
|
||||
// StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", jsonAttr.getString("sect_id")));
|
||||
StIvtSectattr stIvtSectattr = stIvtSectattrMapper.selectOne(new QueryWrapper<StIvtSectattr>().eq("sect_id", 1));
|
||||
if (jsonSect.getString("sect_type_attr").equals(IOSEnum.SECT_TYPE.code("虚拟区"))) {
|
||||
// 虚拟区:执行状态为完成
|
||||
work_status = IOSEnum.WORK_STATUS.code("完成");
|
||||
|
||||
@@ -23,8 +23,11 @@ import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.CollectionUtils;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.st.outbill.service.dto.AllBoxInfoDto;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillTaskParam;
|
||||
import org.nl.wms.st.outbill.service.dto.OutManageParam;
|
||||
import org.nl.wms.st.outbill.service.vo.OutBillTaskVo;
|
||||
import org.nl.wms.st.outbill.service.vo.OutManageExportVo;
|
||||
import org.nl.wms.stat.service.dto.InBillPageParam;
|
||||
import org.nl.wms.stat.service.dto.OutBillPageParam;
|
||||
import org.nl.wms.stat.service.vo.InBillPageVo;
|
||||
@@ -333,4 +336,14 @@ public class StIvtIostorinvdisServiceImpl extends ServiceImpl<StIvtIostorinvdisM
|
||||
List<StIvtIostorinvdis> list = list(lam);
|
||||
return CollectionUtils.mapList(list, dis -> (JSONObject) JSON.toJSON(dis));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OutManageExportVo> getOutManageExportData(OutManageParam paramMap) {
|
||||
return stIvtIostorinvdisMapper.getOutManageExportData(paramMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AllBoxInfoDto> getAllBoxWeightAndDtlId() {
|
||||
return stIvtIostorinvdisMapper.getAllBoxWeightAndDtlId();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package org.nl.b_lms.storage_manage.ios.service.iostorInv.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtMoveinvService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtMoveinv;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtMoveinvMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Date: 2025/7/2
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class StIvtMoveinvImpl extends ServiceImpl<StIvtMoveinvMapper, StIvtMoveinv> implements IStIvtMoveinvService {
|
||||
}
|
||||
@@ -147,6 +147,7 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
|
||||
@Override
|
||||
public List<StIvtIostorinvdis> divIvt(StIvtIostorinvdtl dtlDao, List<JSONObject> ivtList) {
|
||||
// dtl -> dis
|
||||
|
||||
StIvtIostorinv mstDao = stIvtIostorinvOutService.getById(dtlDao.getIostorinv_id());
|
||||
|
||||
@@ -162,8 +163,10 @@ public class OutBussManageServiceImpl implements OutBussManageService {
|
||||
// 未分配重量
|
||||
double unassign_qty = dtlDao.getUnassign_qty().doubleValue();
|
||||
|
||||
// hint: 区分有无订单号
|
||||
if (ObjectUtil.isNotEmpty(dtlDao.getSource_bill_code())) {
|
||||
// 有订单号: 找相同物料、订单号的库存,并根据仓位分组、即木箱分组
|
||||
// mark: likeMaterOrderMap -> 同物料、同订单号的库存信息(key(仓位编码) : value(库存实体)),也就是一个仓位对应所有的子卷
|
||||
Map<String, List<JSONObject>> likeMaterOrderMap = ivtList.stream()
|
||||
.filter(row -> row.getString("material_id").equals(dtlDao.getMaterial_id().toString()) &&
|
||||
row.getString("sale_order_name").equals(dtlDao.getSource_bill_code()))
|
||||
|
||||
@@ -85,10 +85,10 @@ public class TwoInBussManageServiceImpl implements TwoInBussManageService {
|
||||
.eq(StIvtStructattr::getIs_used, IOSEnum.IS_NOTANDYES.code("是")).eq(StIvtStructattr::getSect_id, jsonObject.getString("sect_id"))
|
||||
.eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")).eq(StIvtStructattr::getStor_id, jsonObject.getString("stor_id"))
|
||||
.in(StIvtStructattr::getHeight, result);
|
||||
if (){
|
||||
|
||||
}
|
||||
stIvtStructattrMapper.selectList()
|
||||
// if (){
|
||||
//
|
||||
// }
|
||||
// stIvtStructattrMapper.selectList()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ public class StIvtBsrealstorattr {
|
||||
* 仓库标识
|
||||
*/
|
||||
@TableId(value = "stor_id", type = IdType.NONE)
|
||||
private Long stor_id;
|
||||
private String stor_id;
|
||||
|
||||
/**
|
||||
* 仓库编码
|
||||
@@ -166,7 +166,7 @@ public class StIvtBsrealstorattr {
|
||||
* 创建人
|
||||
*/
|
||||
@TableField("create_id")
|
||||
private Long create_id;
|
||||
private String create_id;
|
||||
|
||||
/**
|
||||
* 创建人姓名
|
||||
@@ -184,7 +184,7 @@ public class StIvtBsrealstorattr {
|
||||
* 修改人
|
||||
*/
|
||||
@TableField("update_optid")
|
||||
private Long update_optid;
|
||||
private String update_optid;
|
||||
|
||||
/**
|
||||
* 修改人姓名
|
||||
@@ -202,19 +202,19 @@ public class StIvtBsrealstorattr {
|
||||
* 拥有者ID
|
||||
*/
|
||||
@TableField("sysownerid")
|
||||
private Long sysownerid;
|
||||
private String sysownerid;
|
||||
|
||||
/**
|
||||
* 部门ID
|
||||
*/
|
||||
@TableField("sysdeptid")
|
||||
private Long sysdeptid;
|
||||
private String sysdeptid;
|
||||
|
||||
/**
|
||||
* 公司ID
|
||||
*/
|
||||
@TableField("syscompanyid")
|
||||
private Long syscompanyid;
|
||||
private String syscompanyid;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.b_lms.storage_manage.st.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
|
||||
@@ -45,4 +46,31 @@ public interface StIvtStructattrService extends IService<StIvtStructattr> {
|
||||
* @return
|
||||
*/
|
||||
List<JSONObject> getRowsAttributeToObject(String stor, List<String> rows);
|
||||
|
||||
/**
|
||||
* 根据条件获取数据
|
||||
* @param structAttyLam
|
||||
* @return List<StIvtStructattr>
|
||||
*/
|
||||
List<StIvtStructattr> getAttributesByConditions(LambdaQueryWrapper<StIvtStructattr> structAttyLam);
|
||||
/**
|
||||
* 根据条件获取数据 -> List<JSONObject>
|
||||
* @param structAttyLam
|
||||
* @return List<JSONObject>
|
||||
*/
|
||||
List<JSONObject> getAttributesByConditionsToObject(LambdaQueryWrapper<StIvtStructattr> structAttyLam);
|
||||
/**
|
||||
* 根据条件获取数据
|
||||
* @param structAttyLam 条件
|
||||
* @param flag 是否抛出异常
|
||||
* @return StIvtStructattr
|
||||
*/
|
||||
StIvtStructattr getAttributeByConditions(LambdaQueryWrapper<StIvtStructattr> structAttyLam, boolean flag);
|
||||
/**
|
||||
* 根据条件获取数据 -> JSONObject
|
||||
* @param structAttyLam 条件
|
||||
* @param flag 是否抛出异常
|
||||
* @return JSONObject
|
||||
*/
|
||||
JSONObject getAttributeByConditionsToObject(LambdaQueryWrapper<StIvtStructattr> structAttyLam, boolean flag);
|
||||
}
|
||||
|
||||
@@ -76,4 +76,28 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
|
||||
lam.in(StIvtStructattr::getRow_num, rows).eq(StIvtStructattr::getStor_id, stor);
|
||||
return CollectionUtils.mapList(list(lam), attr -> (JSONObject) JSON.toJSON(attr));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<StIvtStructattr> getAttributesByConditions(LambdaQueryWrapper<StIvtStructattr> structAttyLam) {
|
||||
return list(structAttyLam);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JSONObject> getAttributesByConditionsToObject(LambdaQueryWrapper<StIvtStructattr> structAttyLam) {
|
||||
return CollectionUtils.mapList(getAttributesByConditions(structAttyLam), sta -> (JSONObject) JSON.toJSON(sta));
|
||||
}
|
||||
|
||||
@Override
|
||||
public StIvtStructattr getAttributeByConditions(LambdaQueryWrapper<StIvtStructattr> structAttyLam, boolean flag) {
|
||||
return getOne(structAttyLam, flag);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSONObject getAttributeByConditionsToObject(LambdaQueryWrapper<StIvtStructattr> structAttyLam, boolean flag) {
|
||||
StIvtStructattr attributeByConditions = getAttributeByConditions(structAttyLam, flag);
|
||||
if (ObjectUtil.isEmpty(attributeByConditions)) {
|
||||
return null;
|
||||
}
|
||||
return (JSONObject) JSON.toJSON(attributeByConditions);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ 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.IStIvtMoveinvService;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtMoveinv;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
@@ -37,6 +39,8 @@ import java.util.*;
|
||||
@Slf4j
|
||||
public class HandMoveStorServiceImpl implements HandMoveStorService {
|
||||
private final StorPublicService storPublicService;
|
||||
/** 移库主表 */
|
||||
private final IStIvtMoveinvService moveinvService;
|
||||
|
||||
@Override
|
||||
public Map<String, Object> pageQuery(Map whereJson, Pageable page) {
|
||||
@@ -277,8 +281,6 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public String insertDtl2(JSONObject json) {
|
||||
//主表
|
||||
WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_MoveInv");
|
||||
JSONArray rows = json.getJSONArray("tableData");
|
||||
json.remove("tableData");
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
@@ -305,7 +307,7 @@ public class HandMoveStorServiceImpl implements HandMoveStorService {
|
||||
JSONObject ret = this.insertDtlByRows2(json, rows);
|
||||
json.put("detail_count", ret.getString("detail_count"));
|
||||
json.put("total_qty", ret.getString("total_qty"));
|
||||
wo_mst.insert(json);
|
||||
moveinvService.save(json.toJavaObject(StIvtMoveinv.class));
|
||||
return moveinv_id;
|
||||
}
|
||||
|
||||
|
||||
@@ -9,15 +9,14 @@ import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.modules.logging.annotation.Log;
|
||||
import org.nl.system.service.dict.ISysDictService;
|
||||
import org.nl.wms.st.outbill.service.CheckOutBillService;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillDtlQueryParam;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillQueryPageParam;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillTaskParam;
|
||||
import org.nl.wms.st.outbill.service.dto.StockMaterialQueryParam;
|
||||
import org.nl.wms.st.outbill.service.dto.*;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -120,4 +119,15 @@ public class CheckOutBillController {
|
||||
iStIvtIostorinvOutService.confirm(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
@Log("导出数据")
|
||||
@GetMapping(value = "/download")
|
||||
public void exportExcel(OutManageParam param, HttpServletResponse response) throws IOException {
|
||||
checkOutBillService.exportExcel(param, response);
|
||||
}
|
||||
@PostMapping("/outReturn")
|
||||
@Log("销售出库回传mes-sap")
|
||||
public ResponseEntity<Object> outReturn(@RequestBody JSONObject whereJson) {
|
||||
checkOutBillService.outReturn(whereJson);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,14 +5,13 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillDtlQueryParam;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillQueryPageParam;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillTaskParam;
|
||||
import org.nl.wms.st.outbill.service.dto.StockMaterialQueryParam;
|
||||
import org.nl.wms.st.outbill.service.dto.*;
|
||||
import org.nl.wms.st.outbill.service.vo.OutBillDtlVo;
|
||||
import org.nl.wms.st.outbill.service.vo.OutBillTaskVo;
|
||||
import org.nl.wms.st.outbill.service.vo.StockMaterialVo;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -69,4 +68,17 @@ public interface CheckOutBillService {
|
||||
* }
|
||||
*/
|
||||
JSONObject updataIsOverdue(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 导出数据
|
||||
* @param param
|
||||
* @param response
|
||||
*/
|
||||
void exportExcel(OutManageParam param, HttpServletResponse response) throws IOException;
|
||||
|
||||
/**
|
||||
* 回传mes-sap
|
||||
* @param whereJson
|
||||
*/
|
||||
void outReturn(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.nl.wms.st.outbill.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 木箱信息VO
|
||||
* @Author: lyd
|
||||
* @Date: 2025/7/3
|
||||
*/
|
||||
@Data
|
||||
public class AllBoxInfoDto implements Serializable {
|
||||
private Double box_weight;
|
||||
private String iostorinvdtl_id;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package org.nl.wms.st.outbill.service.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 出库管理请求参数
|
||||
* @Author: lyd
|
||||
* @Date: 2025/7/2
|
||||
*/
|
||||
@Data
|
||||
public class OutManageParam implements Serializable {
|
||||
private List<String> stor_id;
|
||||
private List<String> bill_status;
|
||||
private List<String> bill_type;
|
||||
private List<String> vbelns;
|
||||
private List<String> pcsns;
|
||||
private List<String> sap_pcsns;
|
||||
private List<String> box_nos;
|
||||
private String begin_time;
|
||||
private String end_time;
|
||||
private String bill_code;
|
||||
private String vbeln;
|
||||
private String box_no;
|
||||
private String pcsn;
|
||||
private String sap_pcsn;
|
||||
private String cust_code;
|
||||
private String width;
|
||||
private String is_upload;
|
||||
private String io_type;
|
||||
private String create_mode;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
package org.nl.wms.st.outbill.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -17,22 +17,21 @@ import org.nl.b_lms.storage_manage.st.service.StIvtBsrealstorattrService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.StringDealUtils;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.common.utils.FileUtil;
|
||||
import org.nl.wms.st.outbill.service.CheckOutBillService;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillDtlQueryParam;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillQueryPageParam;
|
||||
import org.nl.wms.st.outbill.service.dto.OutBillTaskParam;
|
||||
import org.nl.wms.st.outbill.service.dto.StockMaterialQueryParam;
|
||||
import org.nl.wms.st.outbill.service.dto.*;
|
||||
import org.nl.wms.st.outbill.service.vo.OutBillDtlVo;
|
||||
import org.nl.wms.st.outbill.service.vo.OutBillTaskVo;
|
||||
import org.nl.wms.st.outbill.service.vo.OutManageExportVo;
|
||||
import org.nl.wms.st.outbill.service.vo.StockMaterialVo;
|
||||
import org.nl.wms.stat.service.enums.OutBillTypeEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -167,4 +166,113 @@ public class CheckOutBillServiceImpl implements CheckOutBillService {
|
||||
result.put("mst", jsonMst);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportExcel(OutManageParam paramMap, HttpServletResponse response) throws IOException {
|
||||
// 空格查询
|
||||
doLikeOrInParam(paramMap);
|
||||
List<OutManageExportVo> billList = iostorinvdisService.getOutManageExportData(paramMap);
|
||||
List<AllBoxInfoDto> boxInfoDtoList = iostorinvdisService.getAllBoxWeightAndDtlId();
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (OutManageExportVo exportVo : billList) {
|
||||
Map<String, Object> mp = new LinkedHashMap<>();
|
||||
mp.put("单据号", exportVo.getBill_code());
|
||||
mp.put("仓库", exportVo.getStor_name());
|
||||
mp.put("业务类型", OutBillTypeEnum.getNameByCode(exportVo.getBill_type()));
|
||||
String boxWeight = boxInfoDtoList.stream()
|
||||
.filter(row -> row.getIostorinvdtl_id().equals(exportVo.getIostorinvdtl_id()))
|
||||
.map(AllBoxInfoDto::getBox_weight)
|
||||
.reduce(Double::sum).orElse(0.00).toString();
|
||||
//计划重量、实际重量、实际毛重、车号、箱数、收货地址(调拨显示到货仓库)、单据状态
|
||||
mp.put("业务日期", exportVo.getBiz_date());
|
||||
mp.put("计划重量", exportVo.getQty());
|
||||
mp.put("实际重量", exportVo.getPlan_qty());
|
||||
mp.put("实际毛重", boxWeight);
|
||||
mp.put("车号", exportVo.getOrder_number());
|
||||
mp.put("箱数", exportVo.getBox_count());
|
||||
if (StrUtil.equals(exportVo.getBill_type(), "1004")) {
|
||||
mp.put("收货地址", exportVo.getOut_stor_name());
|
||||
} else {
|
||||
mp.put("收货地址", exportVo.getReceiptaddress());
|
||||
}
|
||||
mp.put("单据状态", exportVo.getBill_status());
|
||||
mp.put("客户编码", exportVo.getCust_code());
|
||||
mp.put("客户名称", exportVo.getCust_name());
|
||||
mp.put("交货单号", exportVo.getVbeln());
|
||||
mp.put("订单及行号", exportVo.getSale_order_name());
|
||||
mp.put("规格", exportVo.getSpec());
|
||||
mp.put("物流公司", exportVo.getWl_cust_name());
|
||||
mp.put("运费", exportVo.getEstimated_freight());
|
||||
list.add(mp);
|
||||
}
|
||||
FileUtil.downloadExcel(list, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void outReturn(JSONObject whereJson) {
|
||||
throw new BadRequestException("功能待开发!");
|
||||
// WQLObject mstTab = WQLObject.getWQLObject("st_ivt_iostorinv");
|
||||
//
|
||||
// JSONObject jsonMst = mstTab.query("iostorinv_id = '" + whereJson.getString("iostorinv_id") + "'").uniqueResult(0);
|
||||
//
|
||||
// if (!StrUtil.equals(jsonMst.getString("bill_type"), "1001")) {
|
||||
// throw new BadRequestException("请选择发货出库单据!");
|
||||
// }
|
||||
//
|
||||
// // 调用mes接口回传
|
||||
// JSONObject param = new JSONObject();
|
||||
// JSONArray array = new JSONArray();
|
||||
// array.add(jsonMst);
|
||||
// param.put("rows", array);
|
||||
//
|
||||
// InAndOutRetrunServiceImpl bean = SpringContextHolder.getBean(InAndOutRetrunServiceImpl.class);
|
||||
// bean.uploadMES(param);
|
||||
}
|
||||
|
||||
private void doLikeOrInParam(OutManageParam paramMap) {
|
||||
if (StrUtil.isNotEmpty(paramMap.getVbeln())){
|
||||
// 判断是否有空格
|
||||
boolean matches = paramMap.getVbeln().matches(".*\\s.*");
|
||||
List<String> vbelnList = new ArrayList<>();
|
||||
if (matches) {
|
||||
String[] vbeln = paramMap.getVbeln().split(" ");
|
||||
vbelnList.addAll(Arrays.asList(vbeln));
|
||||
paramMap.setVbelns(vbelnList);
|
||||
paramMap.setVbeln("");
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotEmpty(paramMap.getBox_no())){
|
||||
// 判断是否有空格
|
||||
boolean matches = paramMap.getBox_no().matches(".*\\s.*");
|
||||
List<String> boxList = new ArrayList<>();
|
||||
if (matches) {
|
||||
String[] boxs = paramMap.getBox_no().split(" ");
|
||||
boxList.addAll(Arrays.asList(boxs));
|
||||
paramMap.setBox_nos(boxList);
|
||||
paramMap.setBox_no("");
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotEmpty(paramMap.getPcsn())){
|
||||
// 判断是否有空格
|
||||
boolean matches = paramMap.getPcsn().matches(".*\\s.*");
|
||||
List<String> pcsnList = new ArrayList<>();
|
||||
if (matches) {
|
||||
String[] pcsns = paramMap.getPcsn().split(" ");
|
||||
pcsnList.addAll(Arrays.asList(pcsns));
|
||||
paramMap.setPcsns(pcsnList);
|
||||
paramMap.setPcsn("");
|
||||
}
|
||||
}
|
||||
if (StrUtil.isNotEmpty(paramMap.getSap_pcsn())){
|
||||
// 判断是否有空格
|
||||
boolean matches = paramMap.getSap_pcsn().matches(".*\\s.*");
|
||||
List<String> pcsnList = new ArrayList<>();
|
||||
if (matches) {
|
||||
String[] pcsns = paramMap.getSap_pcsn().split(" ");
|
||||
pcsnList.addAll(Arrays.asList(pcsns));
|
||||
paramMap.setSap_pcsns(pcsnList);
|
||||
paramMap.setSap_pcsn("");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package org.nl.wms.st.outbill.service.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 出库管理导出数据
|
||||
*
|
||||
* @Author: lyd
|
||||
* @Date: 2025/7/3
|
||||
*/
|
||||
@Data
|
||||
public class OutManageExportVo implements Serializable {
|
||||
private String bill_code;
|
||||
private String stor_name;
|
||||
private String out_stor_name;
|
||||
private String bill_type;
|
||||
private String biz_date;
|
||||
private String qty;
|
||||
private String cust_code;
|
||||
private String cust_name;
|
||||
private String vbeln;
|
||||
private String sale_order_name;
|
||||
private String spec;
|
||||
private String wl_cust_name;
|
||||
private String estimated_freight;
|
||||
private String plan_qty;
|
||||
private String box_weight;
|
||||
private String order_number;
|
||||
private String receiptaddress;
|
||||
private String bill_status;
|
||||
private String box_count;
|
||||
private String iostorinvdtl_id;
|
||||
}
|
||||
Reference in New Issue
Block a user