Compare commits

...

2 Commits

Author SHA1 Message Date
李帅 31706f8f3c Merge remote-tracking branch 'origin/master' 2 weeks ago
李帅 9b546d25f8 add wql修改2 2 weeks ago
  1. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/StIvtCoolregionio.java
  2. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dto/StIvtCoolregionioDto.java
  3. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dto/StIvtCoolregionioVO.java
  4. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IschBasePointService.java
  5. 5
      lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/SchBasePointServiceImpl.java
  6. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdisService.java
  7. 6
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdtlService.java
  8. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinv.java
  9. 6
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinvdis.java
  10. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinvdtl.java
  11. 3
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvMapper.java
  12. 90
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvMapper.xml
  13. 9
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java
  14. 20
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml
  15. 3
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdtlMapper.java
  16. 27
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdtlMapper.xml
  17. 305
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dto/IostorInvQuery.java
  18. 4
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
  19. 8
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java
  20. 6
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdisServiceImpl.java
  21. 12
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdtlServiceImpl.java
  22. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java
  23. 16
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/MdMeMaterialBase.java
  24. 79
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/MdPbMeasureunit.java
  25. 8
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdPbMeasureunitMapper.java
  26. 2
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdPbMeasureunitMapper.xml
  27. 10
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/MdPbMeasureunitService.java
  28. 10
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/impl/MdPbMeasureunitServiceImpl.java
  29. 242
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/StIvtBsrealstorattr.java
  30. 205
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/StIvtSectattr.java
  31. 359
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/StIvtStructattr.java
  32. 8
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtBsrealstorattrMapper.java
  33. 5
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtBsrealstorattrMapper.xml
  34. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtSectattrMapper.java
  35. 5
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtSectattrMapper.xml
  36. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtStructattrMapper.java
  37. 5
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtStructattrMapper.xml
  38. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/StIvtBsrealstorattrService.java
  39. 11
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/StIvtSectattrService.java
  40. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/StIvtStructattrService.java
  41. 9
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/impl/StIvtBsrealstorattrServiceImpl.java
  42. 14
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/impl/StIvtSectattrServiceImpl.java
  43. 14
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/impl/StIvtStructattrServiceImpl.java
  44. 50
      lms/nladmin-system/src/main/java/org/nl/modules/system/service/GenCodeService.java
  45. 184
      lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java
  46. 19
      lms/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java
  47. 11
      lms/nladmin-system/src/main/java/org/nl/modules/system/util/YamlUtil.java
  48. 40
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/RawAssistIStorController.java
  49. 9
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/RawAssistIStorService.java
  50. 35
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/RawAssistIStorDto.java
  51. 2
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/RegionioDto.java
  52. 104
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InbillServiceImpl.java
  53. 640
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java
  54. 5
      lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java

2
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dao/StIvtCoolregionio.java

@ -29,7 +29,7 @@ public class StIvtCoolregionio extends Model<StIvtCoolregionio> {
* 出入单标识
*/
@TableId(value = "iostorinv_id", type = IdType.NONE)
private Long iostorinv_id;
private String iostorinv_id;
/**

2
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dto/StIvtCoolregionioDto.java

@ -23,7 +23,7 @@ public class StIvtCoolregionioDto implements Serializable {
/**
* 出入单标识
*/
private Long iostorinv_id;
private String iostorinv_id;
/**
* 单据编号
*/

2
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/dto/StIvtCoolregionioVO.java

@ -25,7 +25,7 @@ public class StIvtCoolregionioVO extends BaseQuery<StIvtCoolregionio> {
/**
* 出入单标识
*/
private Long iostorinv_id;
private String iostorinv_id;
/**
* 单据编号
*/

2
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/IschBasePointService.java

@ -5,6 +5,7 @@ import java.util.Set;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.sch.service.dto.PointDto;
public interface IschBasePointService extends IService<SchBasePoint> {
@ -43,6 +44,7 @@ public interface IschBasePointService extends IService<SchBasePoint> {
void deleteAll(Set<String> ids);
SchBasePoint findByCode(String pointCode);
}

5
lms/nladmin-system/src/main/java/org/nl/b_lms/sch/point/service/impl/SchBasePointServiceImpl.java

@ -79,6 +79,11 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
schBasePointMapper.deleteBatchIds(ids);
}
@Override
public SchBasePoint findByCode(String pointCode) {
return schBasePointMapper.selectOne( new QueryWrapper<SchBasePoint>().lambda().eq( SchBasePoint::getPoint_code, pointCode));
}
/**
* 获取实体基础信息

2
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdisService.java

@ -31,7 +31,7 @@ public interface IStIvtIostorinvdisService extends IService<StIvtIostorinvdis> {
* "明细标识"[{分配明细字段...}]
* }
*/
void insertDis(Long iostorinv_id, HashMap<String, ArrayList<JSONObject>> disDaoMap);
void insertDis(String iostorinv_id, HashMap<String, ArrayList<JSONObject>> disDaoMap);
/**
* 根据任务id更新分配明细执行状态

6
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdtlService.java

@ -42,7 +42,7 @@ public interface IStIvtIostorinvdtlService extends IService<StIvtIostorinvdtl> {
* @param iostorinv_id: 主表标识
* @return {"明细标识"分配明细[]}
*/
HashMap<String, ArrayList<JSONObject>> insertDtl(List<JSONObject> rows, Long iostorinv_id);
HashMap<String, ArrayList<JSONObject>> insertDtl(List<JSONObject> rows, String iostorinv_id);
/**
* 新增入出库明细
@ -67,13 +67,13 @@ public interface IStIvtIostorinvdtlService extends IService<StIvtIostorinvdtl> {
* }
* @param iostorinv_id: 主表标识
*/
void insertOutDtl(List<JSONObject> rows, Long iostorinv_id);
void insertOutDtl(List<JSONObject> rows, String iostorinv_id);
/**
* 更新明细状态
*
* @param iostorinvdtl_id 明细标识
*/
void updateStatus(Long iostorinvdtl_id);
void updateStatus(String iostorinvdtl_id);
}

2
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinv.java

@ -30,7 +30,7 @@ public class StIvtIostorinv implements Serializable {
* 出入单标识
*/
@TableId
private Long iostorinv_id;
private String iostorinv_id;
/**
* 单据编号

6
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinvdis.java

@ -30,17 +30,17 @@ public class StIvtIostorinvdis implements Serializable {
* 出入单分配标识
*/
@TableId
private Long iostorinvdis_id;
private String iostorinvdis_id;
/**
* 出入单标识
*/
private Long iostorinv_id;
private String iostorinv_id;
/**
* 出入单明细标识
*/
private Long iostorinvdtl_id;
private String iostorinvdtl_id;
/**
* 明细序号

4
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinvdtl.java

@ -29,12 +29,12 @@ public class StIvtIostorinvdtl implements Serializable {
* 出入单明细标识
*/
@TableId
private Long iostorinvdtl_id;
private String iostorinvdtl_id;
/**
* 出入单标识
*/
private Long iostorinv_id;
private String iostorinv_id;
/**
* 明细序号

3
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvMapper.java

@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.annotations.Param;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.IostorInvQuery;
import org.nl.wms.st.inbill.service.dto.RawAssistIStorDto;
import org.springframework.data.domain.Pageable;
import java.util.List;
@ -49,5 +50,5 @@ public interface StIvtIostorinvMapper extends BaseMapper<StIvtIostorinv> {
* 查询入库单
*/
List<IostorInvQuery> getIosInv(JSONObject whereJson);
List<IostorInvQuery> getIosInv(@Param("params") RawAssistIStorDto rawAssistIStorDto);
}

90
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvMapper.xml

@ -119,7 +119,7 @@
</select>
<select id="getIosInv" parameterType="com.alibaba.fastjson.JSONObject" resultType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.IostorInvQuery">
<select id="getIosInv" parameterType="org.nl.wms.st.inbill.service.dto.RawAssistIStorDto" resultType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.IostorInvQuery">
SELECT
ios.*,
IFNULL(dtl.vbeln, '') AS vbeln
@ -132,86 +132,71 @@
AND ios.io_type = '0'
<!-- 仓库 in 查询 -->
<if test="in_stor_id != null and in_stor_id != ''">
AND ios.stor_id IN
<foreach item="item" collection="in_stor_id.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
<if test="params.inStorId != null and params.inStorId != ''">
AND ios.stor_id IN ${params.inStorId}
</if>
<!-- bill_code 模糊匹配 -->
<if test="bill_code != null and bill_code != ''">
AND ios.bill_code LIKE CONCAT('%', #{bill_code}, '%')
<if test="params.billCode != null and params.billCode != ''">
AND ios.bill_code LIKE CONCAT('%', #{params.billCode}, '%')
</if>
<!-- box_no 模糊 or in -->
<if test="box_no != null and box_no != '' and box_no_in == null">
AND dis.box_no LIKE CONCAT('%', #{box_no}, '%')
<if test="params.boxNo != null and params.boxNo != '' ">
AND dis.box_no LIKE CONCAT('%', #{params.boxNo}, '%')
</if>
<if test="box_no_in != null and !box_no_in.isEmpty()">
AND dis.box_no IN
<foreach item="item" collection="box_no_in" open="(" separator="," close=")">
'#{item}'
</foreach>
<if test="params.boxNoIn != null and params.boxNoIn != ''">
AND dis.box_no IN ${params.boxNoIn}
</if>
<!-- vbeln 模糊 or in -->
<if test="vbeln != null and vbeln != '' and vbeln_in == null">
<if test="params.vbeln != null and params.vbeln != ''">
AND dtl.vbeln LIKE CONCAT('%', #{vbeln}, '%')
</if>
<if test="vbeln_in != null and !vbeln_in.isEmpty()">
AND dtl.vbeln IN
<foreach item="item" collection="vbeln_in" open="(" separator="," close=")">
'#{item}'
</foreach>
<if test="params.vbelnIn != null and params.vbelnIn != ''">
AND dtl.vbeln IN ${params.vbelnIn}
</if>
<!-- sap_pcsn 模糊 or in -->
<if test="sap_pcsn != null and sap_pcsn != '' and sap_pcsn_in == null">
AND sub.sap_pcsn LIKE CONCAT('%', #{sap_pcsn}, '%')
<if test="params.pcsn != null and params.pcsn != ''">
AND dis.pcsn LIKE CONCAT('%', #{pcsn}, '%')
</if>
<if test="sap_pcsn_in != null and !sap_pcsn_in.isEmpty()">
AND sub.sap_pcsn IN
<foreach item="item" collection="sap_pcsn_in" open="(" separator="," close=")">
'#{item}'
</foreach>
<if test="params.pcsnIn != null and params.pcsnIn != ''">
AND dis.pcsn IN ${params.pcsnIn}
</if>
<!-- pcsn 模糊 or in -->
<if test="pcsn != null and pcsn != '' and pcsn_in == null">
AND dis.pcsn LIKE CONCAT('%', #{pcsn}, '%')
<if test="params.sapPcsn != null and params.sapPcsn != ''">
AND sub.sap_pcsn LIKE CONCAT('%', #{params.sapPcsn}, '%')
</if>
<if test="pcsn_in != null and !pcsn_in.isEmpty()">
AND dis.pcsn IN
<foreach item="item" collection="pcsn_in" open="(" separator="," close=")">
'#{item}'
</foreach>
<if test="params.sapPcsnIn != null and params.sapPcsnIn != ''">
AND sub.sap_pcsn IN ${params.pcsnIn}
</if>
<!-- 等值查询 -->
<if test="stor_id != null and stor_id != ''">
AND ios.stor_id = #{stor_id}
</if>
<if test="bill_type != null and bill_type != ''">
AND ios.bill_type = #{bill_type}
<if test="params.bussType != null and params.bussType != ''">
AND ios.bill_type = #{params.bussType}
</if>
<if test="create_mode != null and create_mode != ''">
AND ios.create_mode = #{create_mode}
<if test="params.createMode != null and params.createMode != ''">
AND ios.create_mode = #{params.createMode}
</if>
<if test="bill_status != null and bill_status != ''">
AND ios.bill_status = #{bill_status}
<if test="params.billStatus != null and params.billStatus != ''">
AND ios.bill_status = #{params.billStatus}
</if>
<!-- 时间范围 -->
<if test="begin_time != null and begin_time != ''">
AND ios.input_time >= #{begin_time}
<if test="params.beginTime != null and params.beginTime != ''">
AND ios.input_time >= #{params.beginTime}
</if>
<if test="end_time != null and end_time != ''">
AND ios.input_time &lt;= #{end_time}
<if test="params.endTime != null and params.endTime != ''">
AND ios.input_time &lt;= #{params.endTime}
</if>
ORDER BY ios.iostorinv_id DESC
LIMIT #{offset}, #{limit}
<if test="params.pageNum != null and params.pageSize != null ">
LIMIT #{params.pageNum},#{params.pageSize}
</if>
</select>
<select id="queryBoxMst" resultType="com.alibaba.fastjson.JSONObject">
@ -235,6 +220,9 @@
</select>
<select id="queryFirstInBox" resultType="com.alibaba.fastjson.JSONObject">
SELECT
dis.*

9
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.java

@ -1,13 +1,17 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.stat.service.dto.InBillPageParam;
import org.nl.wms.stat.service.vo.InBillPageVo;
import java.util.HashSet;
import java.util.List;
/**
@ -50,6 +54,11 @@ public interface StIvtIostorinvdisMapper extends BaseMapper<StIvtIostorinvdis> {
*/
List<JSONObject> getNotCreateDis(JSONObject whereJson);
@Select("SELECT dis.* FROM st_ivt_iostorinvdis dis LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id WHERE dis.box_no = #{boxNo} AND dis.work_status < '99' AND mst.is_delete = '0' AND mst.bill_status < '99'")
List<StIvtIostorinvdis> getstartAndDisRows(String boxNo);
JSONArray getDisDtls(@Param("boxNos") HashSet<String> vehicleSet,@Param("iostorinvId") String iostorinvId);
/**
* 查询成品入库分页数据
* @param pages

20
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdisMapper.xml

@ -127,6 +127,26 @@
</if>
</select>
<select id="getDisDtls" resultType="com.alibaba.fastjson.JSONObject">
SELECT
dis.*,
mb.material_code,
mb.material_name,
po.point_code,
po.point_name,
sub.sap_pcsn
FROM
st_ivt_iostorinvdis dis
INNER JOIN md_me_materialbase mb ON mb.material_id = dis.material_id
LEFT JOIN SCH_BASE_POINT po ON po.point_id = dis.point_id
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND dis.box_no = sub.package_box_sn
WHERE
dis.box_no in
<foreach item="code" collection="boxNos" open="(" separator="," close=")">
#{code}
</foreach>
AND dis.iostorinv_id = #{iostorinvId}
</select>
<select id="selectPageLeftJoin" resultType="org.nl.wms.stat.service.vo.InBillPageVo">
SELECT
mst.stor_name,

3
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdtlMapper.java

@ -1,6 +1,8 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import com.alibaba.fastjson.JSONArray;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
/**
@ -13,4 +15,5 @@ import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
*/
public interface StIvtIostorinvdtlMapper extends BaseMapper<StIvtIostorinvdtl> {
JSONArray selectIoDtl(@Param("billCode") String id, @Param("openFlag") String openFlag);
}

27
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvdtlMapper.xml

@ -2,4 +2,31 @@
<!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.StIvtIostorinvdtlMapper">
<select id="selectIoDtl" resultType="com.alibaba.fastjson.JSONObject">
SELECT DISTINCT
dtl.*,
sub.*,
mb.material_code,
mb.material_name,
mst.bill_code
FROM
st_ivt_iostorinvdtl dtl
LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id
LEFT JOIN ST_IVT_IOStorInv mst ON mst.iostorinv_id = dtl.iostorinv_id
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dtl.pcsn AND dtl.box_no = sub.package_box_sn
WHERE
mst.bill_code = #{billCode}
<!-- 条件判断 -->
<choose>
<when test="openFlag == '1'">
AND dtl.bill_status &lt; '40'
</when>
<when test="openFlag == '2'">
AND dtl.bill_status IN ('30', '40')
</when>
</choose>
ORDER BY
dtl.box_no,
dtl.pcsn
</select>
</mapper>

305
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dto/IostorInvQuery.java

@ -1,11 +1,14 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv.dto;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.common.domain.query.BaseQuery;
import org.nl.common.domain.query.QParam;
import org.nl.common.enums.QueryTEnum;
import java.math.BigDecimal;
/**
* 条件
* @author LXY
@ -29,10 +32,7 @@ public class IostorInvQuery extends BaseQuery<StIvtIostorinv> {
*/
private String bill_type;
/**
* 模糊查询单据编码
*/
private String bill_code;
/**
* 出入库类型
@ -59,6 +59,303 @@ public class IostorInvQuery extends BaseQuery<StIvtIostorinv> {
*/
private String sap_pcsn;
/**
* 出入单标识
*/
@TableId
private String iostorinv_id;
/**
* 单据编号
*/
private String bill_code;
/**
* 业务类型
*/
private String buss_type;
/**
* 业务日期
*/
private String biz_date;
/**
* 仓库编码
*/
private String stor_code;
/**
* 仓库名称
*/
private String stor_name;
/**
* 来源方标识
*/
private Long source_id;
/**
* 来源方名称
*/
private String source_name;
/**
* 来源方类型
*/
private String source_type;
/**
* 总数量
*/
private BigDecimal total_qty;
/**
* 总重量
*/
private BigDecimal total_weight;
/**
* 明细数
*/
private BigDecimal detail_count;
/**
* 备注
*/
private String remark;
/**
* 制单人
*/
private Long input_optid;
/**
* 制单人姓名
*/
private String input_optname;
/**
* 制单时间
*/
private String input_time;
/**
* 修改人
*/
private Long update_optid;
/**
* 修改人姓名
*/
private String update_optname;
/**
* 修改时间
*/
private String update_time;
/**
* 分配人
*/
private Long dis_optid;
/**
* 分配人姓名
*/
private String dis_optname;
/**
* 分配时间
*/
private String dis_time;
/**
* 确认人
*/
private Long confirm_optid;
/**
* 确认人姓名
*/
private String confirm_optname;
/**
* 确认时间
*/
private String confirm_time;
/**
* 部门ID
*/
private Long sysdeptid;
/**
* 公司ID
*/
private Long syscompanyid;
/**
* 是否已上传
*/
private String is_upload;
/**
* 回传人
*/
private Long upload_optid;
/**
* 回传时间
*/
private String upload_time;
/**
* 是否冲销
*/
private String is_writeoff;
/**
* 冲销人
*/
private Long writeoff_optid;
/**
* 冲销时间
*/
private String writeoff_time;
/**
* 收货单位
*/
private String consignee;
/**
* 收货人
*/
private String receiver;
/**
* 收货地址
*/
private String receiptaddress;
/**
* 收货人联系电话
*/
private String receiptphone;
/**
* 物流公司
*/
private String logisticscompany;
/**
* 司机
*/
private String drivername;
/**
* 车牌号
*/
private String carno;
/**
* 司机联系电话
*/
private String driverphone;
/**
* 合同号
*/
private String contractno;
/**
* 送货单位
*/
private String deliveryunit;
/**
* 送货方地址
*/
private String deliveryaddress;
/**
* 送货方联系人
*/
private String deliveryname;
/**
* 送货联系电话
*/
private String deliveryphone;
/**
* 物流公司编码
*/
private String trans_code;
/**
* 预估运费
*/
private BigDecimal estimated_freight;
/**
* 客户编码
*/
private String cust_code;
/**
* 移入仓库标识
*/
private Long out_stor_id;
/**
* 回传MES
*/
private String upload_mes;
/**
* 回传SAP
*/
private String upload_sap;
/**
* 运转费
*/
private BigDecimal run_freight;
/**
* 卸车费
*/
private BigDecimal unload_freight;
/**
* 其他费用
*/
private BigDecimal other_freight;
/**
* 运单号
*/
private String order_number;
/**
* 车型
*/
private String car_type;
@Override
public void paramMapping() {
super.doP.put("bill_code", QParam.builder().k(new String[]{"bill_code"}).type(QueryTEnum.LK).build());

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

@ -1976,7 +1976,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
* 更新主表状态
* @param iostorinv_id 主表标识
*/
public void updateMstStatus(Long iostorinv_id) {
public void updateMstStatus(String iostorinv_id) {
StIvtIostorinv mstDao = this.getById(iostorinv_id);
mstDao.setUpdate_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
@ -2052,7 +2052,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
if (ObjectUtil.isEmpty(mstDao)) {
// 新增
mstDao = StIvtIostorinv.builder()
.iostorinv_id(IdUtil.getLongId())
.iostorinv_id(IdUtil.getStringId())
.bill_code(CodeUtil.getNewCode("IO_CODE"))
.buss_type(whereJson.getString("bill_type").substring(0, 4))
.io_type(IOSEnum.IO_TYPE.code("出库"))

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

@ -516,10 +516,10 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
);
// 更新明细状态
iStIvtIostorinvdtlService.updateStatus(jsonDis.getLongValue("iostorinvdtl_id"));
iStIvtIostorinvdtlService.updateStatus(jsonDis.getString("iostorinvdtl_id"));
// 更新主表状态
StIvtIostorinv mst = updateMstStatus(jsonDis.getLongValue("iostorinv_id"));
StIvtIostorinv mst = updateMstStatus(jsonDis.getString("iostorinv_id"));
mst.setDis_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mst.setDis_optname(SecurityUtils.getCurrentNickName());
mst.setDis_time(DateUtil.now());
@ -706,7 +706,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
// 新增
mstDao = StIvtIostorinv.builder()
.iostorinv_id(IdUtil.getLongId())
.iostorinv_id(IdUtil.getStringId())
.bill_code(CodeUtil.getNewCode("IO_CODE"))
.buss_type(whereJson.get("bill_type").toString().substring(0, 4))
.io_type(IOSEnum.IO_TYPE.code("入库"))
@ -788,7 +788,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
*
* @param iostorinv_id 主表标识
*/
public StIvtIostorinv updateMstStatus(Long iostorinv_id) {
public StIvtIostorinv updateMstStatus(String iostorinv_id) {
StIvtIostorinv mstDao = this.getById(iostorinv_id);
mstDao.setUpdate_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));

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

@ -57,7 +57,7 @@ public class StIvtIostorinvdisServiceImpl extends ServiceImpl<StIvtIostorinvdisM
private StIvtIostorinvdisMapper stIvtIostorinvdisMapper;
@Override
public void insertDis(Long iostorinv_id, HashMap<String, ArrayList<JSONObject>> disDaoMap) {
public void insertDis(String iostorinv_id, HashMap<String, ArrayList<JSONObject>> disDaoMap) {
// 先删除所有分配明细
this.remove(
@ -78,9 +78,9 @@ public class StIvtIostorinvdisServiceImpl extends ServiceImpl<StIvtIostorinvdisM
JSONObject json = disList.get(i);
StIvtIostorinvdis disDao = StIvtIostorinvdis.builder()
.iostorinvdis_id(IdUtil.getLongId())
.iostorinvdis_id(IdUtil.getStringId())
.iostorinv_id(iostorinv_id)
.iostorinvdtl_id(Long.parseLong(iostorinvdtl_id))
.iostorinvdtl_id(iostorinvdtl_id)
.seq_no(BigDecimal.valueOf(i + 1))
.sect_code(json.getString("sect_code"))
.sect_name(json.getString("sect_name"))

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

@ -50,7 +50,7 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
private IStIvtIostorinvService iStIvtIostorinvService;
@Override
public HashMap<String, ArrayList<JSONObject>>insertDtl(List<JSONObject> rows, Long iostorinv_id) {
public HashMap<String, ArrayList<JSONObject>>insertDtl(List<JSONObject> rows, String iostorinv_id) {
StIvtIostorinv mstDao = iStIvtIostorinvService.getById(iostorinv_id);
// 先删除所有明细并更新子卷包装关系
@ -108,7 +108,7 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
JSONObject unitDao = unitDaoList.get(0);
StIvtIostorinvdtl dtlDao = StIvtIostorinvdtl.builder()
.iostorinvdtl_id(IdUtil.getLongId())
.iostorinvdtl_id(IdUtil.getStringId())
.iostorinv_id(iostorinv_id)
.seq_no(BigDecimal.valueOf(i+1))
.material_id(materDao.getLongValue("material_id"))
@ -164,7 +164,7 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
}
@Override
public void insertOutDtl(List<JSONObject> rows, Long iostorinv_id) {
public void insertOutDtl(List<JSONObject> rows, String iostorinv_id) {
// 删除明细
this.remove(
@ -221,7 +221,7 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
JSONObject unitDao = unitDaoList.get(0);
StIvtIostorinvdtl dtlDao = StIvtIostorinvdtl.builder()
.iostorinvdtl_id(IdUtil.getLongId())
.iostorinvdtl_id(IdUtil.getStringId())
.iostorinv_id(iostorinv_id)
.seq_no(BigDecimal.valueOf(i+1))
.material_id(materDao.getLongValue("material_id"))
@ -261,7 +261,7 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
}
@Override
public void updateStatus(Long iostorinvdtl_id) {
public void updateStatus(String iostorinvdtl_id) {
StIvtIostorinvdtl dtlDao = this.getById(iostorinvdtl_id);
@ -338,7 +338,7 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
* 删除明细并更新子卷包装关系为生成
* @param iostorinv_id 主表标识
*/
private void updateSub(Long iostorinv_id) {
private void updateSub(String iostorinv_id) {
// 所有明细集合
List<StIvtIostorinvdtl> dtlDaoList = this.list(

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

@ -297,7 +297,7 @@ public class OutBussManageServiceImpl implements OutBussManageService {
.collect(Collectors.toList()).get(0);
StIvtIostorinvdis disDao = StIvtIostorinvdis.builder()
.iostorinvdis_id(IdUtil.getLongId())
.iostorinvdis_id(IdUtil.getStringId())
.iostorinv_id(dtlDao.getIostorinv_id())
.iostorinvdtl_id(dtlDao.getIostorinvdtl_id())
.seq_no(BigDecimal.valueOf(i + 1))

16
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/MdMeMaterialBase.java

@ -43,10 +43,10 @@ public class MdMeMaterialBase implements Serializable {
private String english_name;
private long base_unit_id;
private Long base_unit_id;
private Long ass_unit_id;
private long assist_unit_id;
private String base_unit_name;
private String approve_fileno;
@ -78,13 +78,13 @@ public class MdMeMaterialBase implements Serializable {
private BigDecimal cubage;
private String create_id;
private Long create_id;
private String create_name;
private String create_time;
private String update_optid;
private Long update_optid;
private String update_optname;
@ -101,11 +101,5 @@ public class MdMeMaterialBase implements Serializable {
private String ext_id;
private String material_height_type;
private Long ass_unit_id;
private Long product_series;
private Integer standing_time;
}

79
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/MdPbMeasureunit.java

@ -0,0 +1,79 @@
package org.nl.b_lms.storage_manage.md.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("md_pb_measureunit")
public class MdPbMeasureunit implements Serializable {
/**
* 计量单位标识
*/
private Long measure_unit_id;
/**
* 编码
*/
private String unit_code;
/**
* 名称
*/
private String unit_name;
/**
* 数据精度默认值3
*/
private BigDecimal qty_precision;
/**
* 是否启用默认值'1'
*/
private String is_used;
/**
* 创建人
*/
private Long create_id;
/**
* 创建人姓名
*/
private String create_name;
/**
* 创建时间
*/
private String create_time;
/**
* 修改人
*/
private Long update_optid;
/**
* 修改人姓名
*/
private String update_optname;
/**
* 修改时间
*/
private String update_time;
/**
* 是否删除默认值'0'
*/
private String is_delete;
/**
* 外部标识
*/
private String ext_id;
}

8
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdPbMeasureunitMapper.java

@ -0,0 +1,8 @@
package org.nl.b_lms.storage_manage.md.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.b_lms.storage_manage.md.dao.MdPbMeasureunit;
import org.nl.b_lms.storage_manage.st.dao.StIvtSectattr;
public interface MdPbMeasureunitMapper extends BaseMapper<MdPbMeasureunit> {
}

2
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/database/service/dao/mapper/BstIvtBoxlashboundMapper.xml → lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/dao/mapper/MdPbMeasureunitMapper.xml

@ -1,5 +1,5 @@
<?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.database.service.dao.mapper.BstIvtBoxlashboundMapper">
<mapper namespace="org.nl.b_lms.storage_manage.md.dao.mapper.MdPbMeasureunitMapper">
</mapper>

10
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/MdPbMeasureunitService.java

@ -0,0 +1,10 @@
package org.nl.b_lms.storage_manage.md.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.storage_manage.md.dao.MdPbMeasureunit;
import org.nl.b_lms.storage_manage.st.dao.StIvtBsrealstorattr;
public interface MdPbMeasureunitService extends IService<MdPbMeasureunit> {
}

10
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/md/service/impl/MdPbMeasureunitServiceImpl.java

@ -0,0 +1,10 @@
package org.nl.b_lms.storage_manage.md.service.impl;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.storage_manage.md.dao.MdPbMeasureunit;
import org.nl.b_lms.storage_manage.md.dao.mapper.MdPbMeasureunitMapper;
public class MdPbMeasureunitServiceImpl extends ServiceImpl<MdPbMeasureunitMapper, MdPbMeasureunit> implements IService<MdPbMeasureunit> {
}

242
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/StIvtBsrealstorattr.java

@ -0,0 +1,242 @@
package org.nl.b_lms.storage_manage.st.dao;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.math.BigDecimal;
/**
* 实物库属性表实体类
*/
@Data
@TableName("st_ivt_bsrealstorattr")
public class StIvtBsrealstorattr {
/**
* 仓库标识
*/
@TableId(value = "stor_id", type = IdType.NONE)
private Long stor_id;
/**
* 仓库编码
*/
@TableField("stor_code")
private String stor_code;
/**
* 仓库名称
*/
@TableField("stor_name")
private String stor_name;
/**
* 仓库简称
*/
@TableField("simple_name")
private String simple_name;
/**
* 仓库容量
*/
@TableField("stor_capacity")
private BigDecimal stor_capacity;
/**
* 总面积
*/
@TableField("total_area")
private BigDecimal total_area;
/**
* 仓库性质
*/
@TableField("stor_type_scode")
private String stor_type_scode;
/**
* 是否虚拟库
*/
@TableField("is_virtualstore")
private String is_virtualstore;
/**
* 是否半成品库
*/
@TableField("is_semi_finished")
private String is_semi_finished;
/**
* 是否原料库
*/
@TableField("is_materialstore")
private String is_materialstore;
/**
* 是否成品库
*/
@TableField("is_productstore")
private String is_productstore;
/**
* 是否备件库
*/
@TableField("is_attachment")
private String is_attachment;
/**
* 是否允许红冲
*/
@TableField("is_reversed")
private String is_reversed;
/**
* 是否移出业务自动确认
*/
@TableField("is_mvout_auto_cfm")
private String is_mvout_auto_cfm;
/**
* 是否移入业务自动确认
*/
@TableField("is_mvin_auto_cfm")
private String is_mvin_auto_cfm;
/**
* 地区
*/
@TableField("area")
private String area;
/**
* 仓库地址
*/
@TableField("storea_ddress")
private String storea_ddress;
/**
* 负责人
*/
@TableField("principal")
private String principal;
/**
* 办公电话
*/
@TableField("office_phone")
private String office_phone;
/**
* 负责人手机
*/
@TableField("mobile_no")
private String mobile_no;
/**
* 备注
*/
@TableField("remark")
private String remark;
/**
* 显示顺序
*/
@TableField("order_index")
private BigDecimal order_index;
/**
* 状态
*/
@TableField("whstate_scode")
private String whstate_scode;
/**
* 是否启用
*/
@TableField("is_used")
private String is_used;
/**
* 物料基本分类
*/
@TableField("base_class_id")
private String base_class_id;
/**
* 创建人
*/
@TableField("create_id")
private Long create_id;
/**
* 创建人姓名
*/
@TableField("create_name")
private String create_name;
/**
* 创建时间
*/
@TableField("create_time")
private String create_time;
/**
* 修改人
*/
@TableField("update_optid")
private Long update_optid;
/**
* 修改人姓名
*/
@TableField("update_optname")
private String update_optname;
/**
* 修改时间
*/
@TableField("update_time")
private String update_time;
/**
* 拥有者ID
*/
@TableField("sysownerid")
private Long sysownerid;
/**
* 部门ID
*/
@TableField("sysdeptid")
private Long sysdeptid;
/**
* 公司ID
*/
@TableField("syscompanyid")
private Long syscompanyid;
/**
* 是否删除
*/
@TableField("is_delete")
private String is_delete;
/**
* 外部标识
*/
@TableField("ext_id")
private String ext_id;
/**
* 部门名称
*/
@TableField("depart_name")
private String depart_name;
/**
* 公司名称
*/
@TableField("company_name")
private String company_name;
}

205
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/StIvtSectattr.java

@ -0,0 +1,205 @@
package org.nl.b_lms.storage_manage.st.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 库区属性表
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_sectattr")
public class StIvtSectattr {
/**
* 库区标识
*/
@TableId(value = "sect_id", type = IdType.NONE)
private Long sect_id;
/**
* 库区编码
*/
@TableField("sect_code")
private String sect_code;
/**
* 库区名称
*/
@TableField("sect_name")
private String sect_name;
/**
* 库区简称
*/
@TableField("simple_name")
private String simple_name;
/**
* 库区类型
*/
@TableField("sect_type_attr")
private String sect_type_attr;
/**
* 仓库标识
*/
@TableField("stor_id")
private Long stor_id;
/**
* 仓库类型
*/
@TableField("stor_type")
private String stor_type;
/**
* 容量
*/
@TableField("capacity")
private BigDecimal capacity;
/**
* 宽度
*/
@TableField("width")
private BigDecimal width;
/**
* 高度
*/
@TableField("height")
private BigDecimal height;
/**
* 深度
*/
@TableField("zdepth")
private BigDecimal zdepth;
/**
* 起始X坐标
*/
@TableField("xqty")
private BigDecimal xqty;
/**
* 起始Y坐标
*/
@TableField("yqty")
private BigDecimal yqty;
/**
* 起始Z坐标
*/
@TableField("zqty")
private BigDecimal zqty;
/**
* 负责人
*/
@TableField("sect_manager_name")
private String sect_manager_name;
/**
* 负责人电话
*/
@TableField("mobile_no")
private String mobile_no;
/**
* 备注
*/
@TableField("remark")
private String remark;
/**
* 创建人
*/
@TableField("create_id")
private Long create_id;
/**
* 创建人姓名
*/
@TableField("create_name")
private String create_name;
/**
* 创建时间
*/
@TableField("create_time")
private String create_time;
/**
* 修改人
*/
@TableField("update_optid")
private Long update_optid;
/**
* 修改人姓名
*/
@TableField("update_optname")
private String update_optname;
/**
* 修改时间
*/
@TableField("update_time")
private String update_time;
/**
* 是否删除
*/
@TableField("is_delete")
private String is_delete;
/**
* 背景色
*/
@TableField("back_ground_color")
private String back_ground_color;
/**
* 前景色
*/
@TableField("front_ground_color")
private String front_ground_color;
/**
* 背景图片
*/
@TableField("back_ground_pic")
private String back_ground_pic;
/**
* 字体显示方向
*/
@TableField("font_direction_scode")
private String font_direction_scode;
/**
* 所在楼层
*/
@TableField("floor_no")
private BigDecimal floor_no;
/**
* 是否启用
*/
@TableField("is_used")
private String is_used;
/**
* 外部标识
*/
@TableField("ext_id")
private String ext_id;
}

359
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/StIvtStructattr.java

@ -0,0 +1,359 @@
package org.nl.b_lms.storage_manage.st.dao;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
/**
* 仓位属性表
*/
@Data
@TableName("st_ivt_structattr")
public class StIvtStructattr {
/**
* 仓位标识
*/
@TableId(value = "struct_id", type = IdType.NONE)
private Long struct_id;
/**
* 仓位编码
*/
@TableField("struct_code")
private String struct_code;
/**
* 仓位名称
*/
@TableField("struct_name")
private String struct_name;
/**
* 仓位简称
*/
@TableField("simple_name")
private String simple_name;
/**
* 区域标识
*/
@TableField("sect_id")
private Long sect_id;
/**
* 区域编码
*/
@TableField("sect_code")
private String sect_code;
/**
* 区域名称
*/
@TableField("sect_name")
private String sect_name;
/**
* 仓库标识
*/
@TableField("stor_id")
private Long stor_id;
/**
* 仓库编码
*/
@TableField("stor_code")
private String stor_code;
/**
* 仓库名称
*/
@TableField("stor_name")
private String stor_name;
/**
* 仓库类型
*/
@TableField("stor_type")
private String stor_type;
/**
* 容量
*/
@TableField("capacity")
private BigDecimal capacity;
/**
* 宽度
*/
@TableField("width")
private BigDecimal width;
/**
* 高度
*/
@TableField("height")
private BigDecimal height;
/**
* 深度
*/
@TableField("zdepth")
private BigDecimal zdepth;
/**
* 承受重量
*/
@TableField("weight")
private BigDecimal weight;
/**
* 起始X坐标
*/
@TableField("xqty")
private BigDecimal xqty;
/**
* 起始Y坐标
*/
@TableField("yqty")
private BigDecimal yqty;
/**
* 起始Z坐标
*/
@TableField("zqty")
private BigDecimal zqty;
/**
* 是否临时仓位
*/
@TableField("is_tempstruct")
private String is_tempstruct;
/**
*
*/
@TableField("row_num")
private BigDecimal row_num;
/**
*
*/
@TableField("col_num")
private BigDecimal col_num;
/**
*
*/
@TableField("layer_num")
private BigDecimal layer_num;
/**
*
*/
@TableField("block_num")
private BigDecimal block_num;
/**
* 入库顺序
*/
@TableField("in_order_seq")
private BigDecimal in_order_seq;
/**
* 出库顺序
*/
@TableField("out_order_seq")
private BigDecimal out_order_seq;
/**
* 入空载具顺序
*/
@TableField("in_empty_seq")
private BigDecimal in_empty_seq;
/**
* 出空载具顺序
*/
@TableField("out_empty_seq")
private BigDecimal out_empty_seq;
/**
* 放置类型
*/
@TableField("placement_type")
private String placement_type;
/**
* 创建人
*/
@TableField("create_id")
private Long create_id;
/**
* 创建人姓名
*/
@TableField("create_name")
private String create_name;
/**
* 创建时间
*/
@TableField("create_time")
private String create_time;
/**
* 修改人
*/
@TableField("update_optid")
private Long update_optid;
/**
* 修改人姓名
*/
@TableField("update_optname")
private String update_optname;
/**
* 修改时间
*/
@TableField("update_time")
private String update_time;
/**
* 是否删除
*/
@TableField("is_delete")
private String is_delete;
/**
* 背景色
*/
@TableField("back_ground_color")
private String back_ground_color;
/**
* 前景色
*/
@TableField("front_ground_color")
private String front_ground_color;
/**
* 背景图片
*/
@TableField("back_ground_pic")
private String back_ground_pic;
/**
* 字体显示方向
*/
@TableField("font_direction_scode")
private String font_direction_scode;
/**
* 是否启用
*/
@TableField("is_used")
private String is_used;
/**
* 是否判断高度
*/
@TableField("is_zdepth")
private String is_zdepth;
/**
* 存储载具标识
*/
@TableField("storagevehicle_id")
private Long storagevehicle_id;
/**
* 存储载具号
*/
@TableField("storagevehicle_code")
private String storagevehicle_code;
/**
* 是否空载具
*/
@TableField("is_emptyvehicle")
private String is_emptyvehicle;
/**
* 载具数量
*/
@TableField("storagevehicle_qty")
private BigDecimal storagevehicle_qty;
/**
* 锁定类型
*/
@TableField("lock_type")
private String lock_type;
/**
* 锁定任务类型
*/
@TableField("taskdtl_type")
private String taskdtl_type;
/**
* 锁定任务明细标识
*/
@TableField("taskdtl_id")
private Long taskdtl_id;
/**
* 锁定任务编码
*/
@TableField("task_code")
private String task_code;
/**
* 锁定单据类型
*/
@TableField("inv_type")
private String inv_type;
/**
* 锁定单据标识
*/
@TableField("inv_id")
private Long inv_id;
/**
* 锁定单据编码
*/
@TableField("inv_code")
private String inv_code;
/**
* 物料高度类型
*/
@TableField("material_height_type")
private String material_height_type;
/**
* 外部标识
*/
@TableField("ext_id")
private String ext_id;
/**
* 备注
*/
@TableField("remark")
private String remark;
/**
* 存搭载具类型
*/
@TableField("storagevehicle_type")
private String storagevehicle_type;
}

8
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtBsrealstorattrMapper.java

@ -0,0 +1,8 @@
package org.nl.b_lms.storage_manage.st.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.b_lms.storage_manage.st.dao.StIvtBsrealstorattr;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
public interface StIvtBsrealstorattrMapper extends BaseMapper<StIvtBsrealstorattr> {
}

5
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtBsrealstorattrMapper.xml

@ -0,0 +1,5 @@
<?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.st.dao.mapper.StIvtBsrealstorattrMapper">
</mapper>

7
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtSectattrMapper.java

@ -0,0 +1,7 @@
package org.nl.b_lms.storage_manage.st.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.b_lms.storage_manage.st.dao.StIvtSectattr;
public interface StIvtSectattrMapper extends BaseMapper<StIvtSectattr> {
}

5
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtSectattrMapper.xml

@ -0,0 +1,5 @@
<?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.st.dao.mapper.StIvtSectattrMapper">
</mapper>

7
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtStructattrMapper.java

@ -0,0 +1,7 @@
package org.nl.b_lms.storage_manage.st.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
public interface StIvtStructattrMapper extends BaseMapper<StIvtStructattr> {
}

5
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/mapper/StIvtStructattrMapper.xml

@ -0,0 +1,5 @@
<?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.st.dao.mapper.StIvtStructattrMapper">
</mapper>

7
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/StIvtBsrealstorattrService.java

@ -0,0 +1,7 @@
package org.nl.b_lms.storage_manage.st.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.storage_manage.st.dao.StIvtBsrealstorattr;
public interface StIvtBsrealstorattrService extends IService<StIvtBsrealstorattr> {
}

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

@ -0,0 +1,11 @@
package org.nl.b_lms.storage_manage.st.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.storage_manage.st.dao.StIvtBsrealstorattr;
public interface StIvtSectattrService extends IService<StIvtBsrealstorattr> {
}

7
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/StIvtStructattrService.java

@ -0,0 +1,7 @@
package org.nl.b_lms.storage_manage.st.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
public interface StIvtStructattrService extends IService<StIvtStructattr> {
}

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

@ -0,0 +1,9 @@
package org.nl.b_lms.storage_manage.st.service.impl;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.storage_manage.st.dao.StIvtSectattr;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtSectattrMapper;
public class StIvtBsrealstorattrServiceImpl extends ServiceImpl<StIvtSectattrMapper, StIvtSectattr> implements IService<StIvtSectattr> {
}

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

@ -0,0 +1,14 @@
package org.nl.b_lms.storage_manage.st.service.impl;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.storage_manage.st.dao.StIvtSectattr;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtSectattrMapper;
import org.springframework.stereotype.Service;
@Service
public class StIvtSectattrServiceImpl extends ServiceImpl<StIvtSectattrMapper, StIvtSectattr> implements IService<StIvtSectattr> {
}

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

@ -0,0 +1,14 @@
package org.nl.b_lms.storage_manage.st.service.impl;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper;
import org.springframework.stereotype.Service;
@Service
public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMapper, StIvtStructattr> implements IService<StIvtStructattr> {
}

50
lms/nladmin-system/src/main/java/org/nl/modules/system/service/GenCodeService.java

@ -0,0 +1,50 @@
package org.nl.modules.system.service;
import com.alibaba.fastjson.JSONObject;
import org.springframework.data.domain.Pageable;
import java.util.Map;
import java.util.Set;
public interface GenCodeService {
/**
* 分页查询
*
* @param form 条件
* @param pageable 分页参数
* @return /
*/
JSONObject queryAll(Map form, Pageable pageable);
/**
* 新增编码
*
* @param form
*/
public void create(Map form);
/**
* 删除编码
*
* @param ids
*/
public void delete(Set<String> ids);
/**
* 更新编码
*
* @param json
*/
public void update(JSONObject json);
public String codeDemo(Map form);
/**
* 根据编码获取id
*
* @param code
* @return
*/
public String queryIdByCode(String code);
}

184
lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GenCodeServiceImpl.java

@ -0,0 +1,184 @@
package org.nl.modules.system.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.service.GenCodeService;
import org.nl.modules.wql.core.bean.ResultBean;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
@Service
@RequiredArgsConstructor
@CacheConfig(cacheNames = "genCode")
public class GenCodeServiceImpl implements GenCodeService {
@Override
public JSONObject queryAll(Map form, Pageable pageable) {
String where = "1=1";
if (form.get("blurry") != null) {
where = "code like '%" + (String) form.get("blurry") + "%' OR name = '%" + form.get("blurry") + "%'";
}
ResultBean rb = WQLObject.getWQLObject("sys_code_rule").pagequery(WqlUtil.getHttpContext(pageable), where, "code desc ");
final JSONObject json = rb.pageResult();
JSONArray ja = json.getJSONArray("content");
JSONArray new_ja = new JSONArray();
for (int i = 0; i < ja.size(); i++) {
JSONObject jo = ja.getJSONObject(i);
HashMap map = new HashMap();
map.put("code", jo.getString("code"));
map.put("flag", "0");
String demo = this.codeDemo(map);
jo.put("demo", demo);
new_ja.add(jo);
}
json.put("content", new_ja);
return json;
}
@Override
public void create(Map form) {
String currentUserId = SecurityUtils.getCurrentUserId();
String currentUsername = SecurityUtils.getCurrentUsername();
WQLObject wql = WQLObject.getWQLObject("sys_code_rule");
JSONObject json = new JSONObject();
String id = IdUtil.simpleUUID();
String now = DateUtil.now();
String code = (String) form.get("code");
JSONObject jo = wql.query("code = '" + code + "'").uniqueResult(0);
if (jo != null) {
throw new BadRequestException("该编码code已存在,请校验!");
}
json.put("id", id);
json.put("code", form.get("code"));
json.put("name", form.get("name"));
json.put("create_id", currentUserId);
json.put("update_optid", currentUserId);
json.put("create_name", currentUsername);
json.put("update_optname", currentUsername);
json.put("create_time", now);
json.put("update_time", now);
WQLObject.getWQLObject("sys_code_rule").insert(json);
}
@Override
public void delete(Set<String> ids) {
for (String code : ids) {
WQLObject.getWQLObject("sys_code_rule").delete("id = '" + code + "'");
WQLObject.getWQLObject("sys_code_rule_detail").delete("code_rule_id = '" + code + "'");
}
}
@Override
public void update(JSONObject json) {
WQLObject wql = WQLObject.getWQLObject("sys_code_rule");
String code = json.getString("code");
String id = json.getString("id");
JSONObject jo = wql.query("id<>'" + id + "code = '" + code + "'").uniqueResult(0);
if (jo != null) {
throw new BadRequestException("该编码code已存在,请校验!");
}
String now = DateUtil.now();
json.put("update_optid", SecurityUtils.getCurrentUserId());
json.put("update_time", now);
json.put("update_optname", SecurityUtils.getCurrentUsername());
WQLObject.getWQLObject("sys_code_rule").update(json);
}
@Override
@Transactional(Transactional.TxType.REQUIRES_NEW)
public String codeDemo(Map form) {
String code = (String) form.get("code");
String id = this.queryIdByCode(code);
//如果flag=1就执行更新数据库的操作
String flag = (String) form.get("flag");
WQLObject wo = WQLObject.getWQLObject("sys_code_rule_detail");
JSONArray ja = wo.query("code_rule_id = '" + id + "' order by sort_num FOR UPDATE").getResultJSONArray(0);
String demo = "";
boolean is_same = true;
for (int i = 0; i < ja.size(); i++) {
String value = "";
JSONObject jo = ja.getJSONObject(i);
//固定直接取值
if (jo.getString("type").equals("01")) {
value = jo.getString("init_value");
}
//日期判断数据库的值与当前值是否相同来决定顺序的值
if (jo.getString("type").equals("02")) {
String current_value = jo.getString("current_value");
Date date = DateUtil.date();
String format = jo.getString("format");
String now_date = DateUtil.format(date, format);
if (!now_date.equals(current_value)) {
is_same = false;
}
if (flag.equals("1")) {
jo.put("init_value", now_date);
jo.put("current_value", now_date);
}
value = now_date;
}
//顺序的值:如果日期一样就+步长,等于最大值就归为初始值;日期不一样就归为初始值
if (jo.getString("type").equals("03")) {
String num_value = "";
int step = jo.getInteger("step");
Long max_value = jo.getLong("max_value");
if (!is_same || (jo.getLongValue("current_value") + step > max_value)) {
num_value = jo.getString("init_value");
} else {
num_value = (jo.getInteger("current_value") + step) + "";
}
int size = num_value.length();
int length = jo.getInteger("length");
String fillchar = jo.getString("fillchar");
for (int m = 0; m < (length - size); m++) {
value += fillchar;
}
value += num_value;
if (flag.equals("1")) {
if (!is_same) {
int init_value = jo.getInteger("init_value");
if (StrUtil.isEmpty((init_value + ""))) {
throw new BadRequestException("请完善编码数值的初始值!");
}
jo.put("current_value", init_value + "");
} else {
int num_curr = jo.getInteger("current_value");
if (num_curr >= max_value) {
num_curr = jo.getInteger("init_value");
jo.put("current_value", num_curr + "");
} else {
jo.put("current_value", (num_curr + step) + "");
}
}
}
}
demo += value;
if (flag.equals("1")) {
wo.update(jo);
}
}
return demo;
}
@Override
public String queryIdByCode(String code) {
JSONObject jo = WQLObject.getWQLObject("sys_code_rule").query("code = '" + code + "'").uniqueResult(0);
String id = jo.getString("id");
return id;
}
}

19
lms/nladmin-system/src/main/java/org/nl/modules/system/util/CodeUtil.java

@ -0,0 +1,19 @@
package org.nl.modules.system.util;
import org.nl.modules.system.service.GenCodeService;
import org.nl.modules.wql.util.SpringContextHolder;
import java.util.HashMap;
public class CodeUtil {
public static String getNewCode(String ruleCode) {
GenCodeService bean = SpringContextHolder.getBean(GenCodeService.class);
String flag = "1";
HashMap<String, String> map = new HashMap<>();
map.put("flag", flag);
map.put("code", ruleCode);
return bean.codeDemo(map);
}
}

11
lms/nladmin-system/src/main/java/org/nl/modules/system/util/YamlUtil.java

@ -0,0 +1,11 @@
package org.nl.modules.system.util;
import java.util.Properties;
public class YamlUtil {
public static Properties properties;
public static String getValue(String key) {
return (String) properties.get(key);
}
}

40
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/RawAssistIStorController.java

@ -1,5 +1,6 @@
package org.nl.wms.st.inbill.rest;
import com.alibaba.fastjson.JSONArray;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.logging.annotation.Log;
@ -39,6 +40,24 @@ public class RawAssistIStorController {
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/getIODtl")
@Log("查询出入库单明细")
//@PreAuthorize("@el.check('materialtype:list')")
public ResponseEntity<Object> getIODtl(@RequestParam Map whereJson) {
return new ResponseEntity<>(rawAssistIStorService.getIODtl(whereJson), HttpStatus.OK);
}
@PostMapping("/getDisDtl")
@Log("查询入库分配载具明细")
//@PreAuthorize("@el.check('materialtype:list')")
public ResponseEntity<Object> getDisDtl(@RequestBody Map whereJson) {
return new ResponseEntity<>(rawAssistIStorService.getDisDtl(whereJson), HttpStatus.OK);
}
@GetMapping("/getBillDtl")
@Log("查询入库单来源")
@ -47,6 +66,16 @@ public class RawAssistIStorController {
return new ResponseEntity<>(rawAssistIStorService.getBillDtl(whereJson, page), HttpStatus.OK);
}
@PostMapping()
@Log("新增入库单")
//@PreAuthorize("@el.check('structrelamaterial:edit')")
public ResponseEntity<Object> insertDtl(@RequestBody Map whereJson) {
rawAssistIStorService.insertDtl(whereJson);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
@ -69,5 +98,16 @@ public class RawAssistIStorController {
}
@PostMapping("/queryBoxMater")
@Log("查询箱内子卷")
//@PreAuthorize("@el.check('materialtype:list')")
public ResponseEntity<Object> queryBoxMater(@RequestBody JSONArray whereJson) {
return new ResponseEntity<>(rawAssistIStorService.queryBoxMater(whereJson), HttpStatus.OK);
}
}

9
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/RawAssistIStorService.java

@ -1,5 +1,6 @@
package org.nl.wms.st.inbill.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.springframework.data.domain.Pageable;
@ -17,6 +18,11 @@ public interface RawAssistIStorService {
Map<String, Object> getBillDtl(Map whereJson, Pageable page);
JSONArray getIODtl(Map whereJson);
JSONArray getDisDtl(Map whereJson);
String insertDtl(Map whereJson);
void deleteAll(Long[] ids);
@ -26,4 +32,7 @@ public interface RawAssistIStorService {
JSONObject autoDis(JSONObject whereJson);
JSONArray queryBoxMater(JSONArray rows);
}

35
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/RawAssistIStorDto.java

@ -0,0 +1,35 @@
package org.nl.wms.st.inbill.service.dto;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class RawAssistIStorDto {
private String bussType;
private String storId;
private String billType;
private String createMode;
private String billStatus;
private String billCode;
private String sapPcsnIn;
private String pcsnIn;
private String boxNoIn;
private String vbelnIn;
private String inStorId;
private String sapPcsn;
private String pcsn;
private String boxNo;
private String vbeln;
private String beginTime;
private String endTime;
private Integer pageNum;
private Integer pageSize;
}

2
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/RegionioDto.java

@ -20,7 +20,7 @@ public class RegionioDto implements Serializable {
* 防止精度丢失
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long iostorinv_id;
private String iostorinv_id;
/**
* 单据编号

104
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InbillServiceImpl.java

@ -7,8 +7,13 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.b_lms.sch.point.dao.mapper.SchBasePointMapper;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
@ -16,6 +21,7 @@ import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.user.ISysUserService;
import org.nl.wms.st.inbill.service.StorPublicService;
import org.nl.wms.st.returns.service.impl.InAndOutRetrunServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -33,54 +39,78 @@ public class InbillServiceImpl {
private final ISysUserService iSysUserService;
@Autowired
private StIvtStructattrMapper stIvtStructattrMapper;
@Autowired
private SchBasePointMapper schBasePointMapper;
public void operatePoint(String operate, JSONObject form) {
WQLObject point_table = WQLObject.getWQLObject("SCH_BASE_Point");
WQLObject struct_table = WQLObject.getWQLObject("ST_IVT_StructAttr");
String end_point = form.getString("end_point");
HashMap<String, String> map = new HashMap<>();
//operate:0生成、1完成、2单据确认
switch (operate) {
case "0":
//锁定终点
//锁定单据信息
map.put("lock_type", "2");
map.put("inv_type", form.getString("inv_type"));
map.put("inv_id", form.getString("inv_id"));
map.put("inv_code", form.getString("inv_code"));
point_table.update(map, "point_code = '" + end_point + "'");
struct_table.update(map, "struct_code = '" + end_point + "'");
case "0": { // 锁定终点
String invType = form.getString("inv_type");
String invId = form.getString("inv_id");
String invCode = form.getString("inv_code");
// 更新 SCH_BASE_Point 表
SchBasePoint point = new SchBasePoint();
point.setLock_type("2");
schBasePointMapper.update(point, new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, end_point));
// 更新 ST_IVT_StructAttr 表
StIvtStructattr struct = new StIvtStructattr();
struct.setLock_type("2");
struct.setInv_type(invType);
struct.setInv_id(Long.valueOf(invId));
struct.setInv_code(invCode);
stIvtStructattrMapper.update(struct, new LambdaQueryWrapper<StIvtStructattr>()
.eq(StIvtStructattr::getStruct_code, end_point));
break;
case "1":
}
case "1": {
// 暂无实现
break;
case "2":
//解锁终点,绑定载具
String vehicle_code = form.getString("vehicle_code");
map.put("lock_type", "1");
map.put("point_status", "02");
map.put("vehicle_code", vehicle_code);
map.put("taskdtl_type", "");
map.put("taskdtl_id", "");
map.put("task_code", "");
map.put("inv_type", "");
map.put("inv_id", "");
map.put("inv_code", "");
point_table.update(map, "point_code = '" + end_point + "'");
HashMap<String, String> struct_map = new HashMap<>();
struct_map.put("lock_type", "1");
struct_map.put("storagevehicle_code", vehicle_code);
struct_map.put("taskdtl_type", "");
struct_map.put("taskdtl_id", "");
struct_map.put("task_code", "");
struct_map.put("inv_type", "");
struct_map.put("inv_id", "");
struct_map.put("inv_code", "");
struct_table.update(struct_map, "struct_code = '" + end_point + "'");
}
case "2": { // 解锁终点,绑定载具
String vehicleCode = form.getString("vehicle_code");
// 更新 SCH_BASE_Point 表
SchBasePoint point = new SchBasePoint();
point.setLock_type("1");
point.setPoint_status("02");
point.setVehicle_code(vehicleCode);
schBasePointMapper.update(point, new LambdaQueryWrapper<SchBasePoint>()
.eq(SchBasePoint::getPoint_code, end_point));
// 更新 ST_IVT_StructAttr 表
StIvtStructattr struct = new StIvtStructattr();
struct.setLock_type("1");
struct.setStoragevehicle_code(vehicleCode);
struct.setTaskdtl_type("");
struct.setTaskdtl_id(null);
struct.setTask_code("");
struct.setInv_type("");
struct.setInv_id(null);
struct.setInv_code("");
stIvtStructattrMapper.update(struct, new LambdaQueryWrapper<StIvtStructattr>()
.eq(StIvtStructattr::getStruct_code, end_point));
break;
}
default:
break;
}
}
@Transactional(rollbackFor = Exception.class)
public void confirmDis(JSONObject form) {
WQLObject dis_table = WQLObject.getWQLObject("ST_IVT_IOStorInvDis");

640
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java

@ -1,11 +1,13 @@
package org.nl.wms.st.inbill.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -13,16 +15,23 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.dao.mapper.PdmBiSubpackagerelationMapper;
import org.nl.b_lms.sch.point.dao.SchBasePoint;
import org.nl.b_lms.sch.point.service.IschBasePointService;
import org.nl.b_lms.sch.tasks.TwoInTask;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvMapper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvdisMapper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.StIvtIostorinvdtlMapper;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.*;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper.*;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dto.IostorInvQuery;
import org.nl.b_lms.storage_manage.md.dao.MdMeMaterialBase;
import org.nl.b_lms.storage_manage.md.dao.MdPbMeasureunit;
import org.nl.b_lms.storage_manage.md.dao.mapper.MdMeMaterialBaseMapper;
import org.nl.b_lms.storage_manage.md.dao.mapper.MdPbMeasureunitMapper;
import org.nl.b_lms.storage_manage.st.dao.StIvtBsrealstorattr;
import org.nl.b_lms.storage_manage.st.dao.StIvtSectattr;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtBsrealstorattrMapper;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtSectattrMapper;
import org.nl.b_lms.storage_manage.st.dao.mapper.StIvtStructattrMapper;
import org.nl.modules.system.util.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
@ -30,6 +39,7 @@ import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.basedata.st.service.dto.StorattrDto;
import org.nl.wms.basedata.st.service.impl.StructattrServiceImpl;
import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl;
import org.nl.wms.pda.mps.eum.RegionTypeEnum;
@ -37,6 +47,7 @@ import org.nl.wms.sch.service.PointService;
import org.nl.wms.sch.service.dto.PointDto;
import org.nl.wms.st.inbill.service.RawAssistIStorService;
import org.nl.wms.st.inbill.service.StorPublicService;
import org.nl.wms.st.inbill.service.dto.RawAssistIStorDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
@ -71,7 +82,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
private MdMeMaterialBaseMapper mdMeMaterialBaseMapper;
@Autowired
private PointService pointService;
private IschBasePointService ischBasePointService;
@Autowired
private InbillServiceImpl inbillService;
@ -79,53 +90,124 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
@Autowired
private StorPublicService storPublicService;
@Autowired
private StIvtSectattrMapper stIvtSectattrMapper;
@Autowired
private StIvtStructattrMapper stIvtStructattrMapper;
@Autowired
private StIvtBsrealstorattrMapper stIvtBsrealstorattrMapper;
@Autowired
private MdPbMeasureunitMapper mdPbMeasureunitMapper;
@Override
public Map<String, Object> pageQuery(Map whereJson, Pageable page) {
JSONObject params = new JSONObject();
RawAssistIStorDto rawAssistIStorDto = new RawAssistIStorDto();
// 基础查询参数
params.put("buss_type", whereJson.get("buss_type"));
params.put("stor_id", whereJson.get("stor_id"));
params.put("bill_type", whereJson.get("bill_type"));
params.put("create_mode", whereJson.get("create_mode"));
params.put("bill_status", whereJson.get("bill_status"));
rawAssistIStorDto.setBussType((String) whereJson.get("buss_type"));
rawAssistIStorDto.setStorId((String) whereJson.get("stor_id"));
rawAssistIStorDto.setBillType((String) whereJson.get("bill_type"));
rawAssistIStorDto.setCreateMode((String) whereJson.get("create_mode"));
rawAssistIStorDto.setBillStatus((String) whereJson.get("bill_status"));
// 模糊/集合查询参数
params.put("bill_code", whereJson.get("bill_code"));
params.put("sap_pcsn", whereJson.get("sap_pcsn"));
params.put("pcsn", whereJson.get("pcsn"));
params.put("box_no", whereJson.get("box_no"));
params.put("vbeln", whereJson.get("vbeln"));
rawAssistIStorDto.setBillCode((String) whereJson.get("bill_code"));
String sap_pcsn = MapUtil.getStr(whereJson, "sap_pcsn");
String pcsn = MapUtil.getStr(whereJson, "pcsn");
String box_no = MapUtil.getStr(whereJson, "box_no");
String vbeln = MapUtil.getStr(whereJson, "vbeln");
// 空格查询
if (StrUtil.isNotEmpty(pcsn)) {
// 判断是否有空格
boolean matches = pcsn.matches(".*\\s.*");
if (matches) {
String[] s = pcsn.split(" ");
String pcsn_in = String.join("','", Arrays.asList(s));
rawAssistIStorDto.setPcsnIn(pcsn_in);
} else {
rawAssistIStorDto.setPcsn(pcsn);
}
}
// 空格查询
if (StrUtil.isNotEmpty(sap_pcsn)) {
// 判断是否有空格
boolean matches = sap_pcsn.matches(".*\\s.*");
if (matches) {
String[] s = sap_pcsn.split(" ");
String sap_pcsn_in = String.join("','", Arrays.asList(s));
rawAssistIStorDto.setSapPcsnIn(sap_pcsn_in);
} else {
rawAssistIStorDto.setSapPcsn(sap_pcsn);
}
}
// 空格查询
if (StrUtil.isNotEmpty(box_no)) {
// 判断是否有空格
boolean matches = box_no.matches(".*\\s.*");
if (matches) {
String[] s = box_no.split(" ");
String box_no_in = String.join("','", Arrays.asList(s));
rawAssistIStorDto.setBoxNoIn(box_no_in);
} else {
rawAssistIStorDto.setBoxNo(box_no);
}
}
// 空格查询
if (StrUtil.isNotEmpty(vbeln)) {
// 判断是否有空格
boolean matches = vbeln.matches(".*\\s.*");
if (matches) {
String[] s = vbeln.split(" ");
String vbeln_in = String.join("','", Arrays.asList(s));
rawAssistIStorDto.setVbelnIn(vbeln_in);
} else {
rawAssistIStorDto.setVbeln(vbeln);
}
}
// 时间范围
params.put("begin_time", whereJson.get("begin_time"));
params.put("end_time", whereJson.get("end_time"));
rawAssistIStorDto.setBeginTime((String) whereJson.get("begin_time"));
rawAssistIStorDto.setEndTime((String) whereJson.get("end_time"));
// 用户权限仓库
UserStorServiceImpl userStorService = new UserStorServiceImpl();
String in_stor_id = userStorService.getInStor();
if (ObjectUtil.isNotEmpty(in_stor_id)) {
params.put("in_stor_id", in_stor_id);
rawAssistIStorDto.setInStorId(in_stor_id);
}
// 多值查询处理:空格转 IN 列表
handleMultiValueParams(whereJson, params, "pcsn");
handleMultiValueParams(whereJson, params, "sap_pcsn");
handleMultiValueParams(whereJson, params, "box_no");
handleMultiValueParams(whereJson, params, "vbeln");
// 分页参数
int pageSize = page.getPageSize();
int pageNumber = page.getPageNumber();
int offset = (pageNumber) * pageSize;
params.put("offset", offset);
params.put("limit", pageSize);
rawAssistIStorDto.setPageNum(offset);
rawAssistIStorDto.setPageSize(pageSize);
// 调用 MyBatis 查询
List<IostorInvQuery> list = stIvtIostorinvMapper.getIosInv(params);
List<IostorInvQuery> list = stIvtIostorinvMapper.getIosInv(rawAssistIStorDto);
// 返回结果
@ -135,19 +217,186 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
return result;
}
/**
* 处理空格分隔的多值参数转换为 SQL IN 条件
*/
private void handleMultiValueParams(Map source, Map target, String key) {
String value = (String) source.get(key);
if (StrUtil.isNotEmpty(value)) {
if (value.contains(" ")) {
String[] values = value.split("\\s+");
target.put(key + "_in", Arrays.asList(values));
} else {
target.put(key, value);
@Override
@Transactional(rollbackFor = Exception.class)
public String insertDtl(Map whereJson) {
ArrayList<HashMap<String, String>> rows = (ArrayList<HashMap<String, String>>) whereJson.get("tableData");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
double totalQty = 0;
String iostorinvId = cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId() + "";
String billCode = CodeUtil.getNewCode("IO_CODE");
StIvtBsrealstorattr stIvtBsrealstorattr = stIvtBsrealstorattrMapper.selectById(Long.parseLong((String) whereJson.get("stor_id")));
// 构建主表数据(使用 Builder)
StIvtIostorinv mst = StIvtIostorinv.builder()
.iostorinv_id(iostorinvId)
.bill_code(billCode)
.buss_type(((String) whereJson.get("bill_type")).substring(0, 4))
.io_type("0")
.bill_type((String) whereJson.get("bill_type"))
.biz_date(whereJson.get("biz_date").toString().substring(0, 10))
.stor_id(Long.valueOf((String) whereJson.get("stor_id")))
.stor_code(stIvtBsrealstorattr.getStor_code())
.stor_name(stIvtBsrealstorattr.getStor_name())
.detail_count(BigDecimal.valueOf(rows.size()))
.remark((String) whereJson.get("remark"))
.bill_status((String) whereJson.get("bill_status"))
.create_mode("01")
.input_optid(Long.valueOf(currentUserId))
.input_optname(nickName)
.input_time(String.valueOf(DateUtil.parse(now)))
.update_optid(Long.valueOf(currentUserId))
.update_optname(nickName)
.update_time(String.valueOf(DateUtil.parse(now)))
.is_delete("0")
.is_upload("0")
.sysdeptid(SecurityUtils.getDeptId())
.syscompanyid(SecurityUtils.getDeptId())
.build();
for (int i = 0; i < rows.size(); i++) {
HashMap<String, String> row = rows.get(i);
// 获取物料信息
String productName = row.get("product_name");
QueryWrapper<MdMeMaterialBase> materialWrapper = new QueryWrapper<>();
materialWrapper.eq("material_code", productName);
MdMeMaterialBase material = mdMeMaterialBaseMapper.selectOne(materialWrapper);
if (material == null) {
throw new BadRequestException("LMS系统不存在物料:【" + productName + "】");
}
QueryWrapper<MdPbMeasureunit> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("measure_unit_id", material.getBase_unit_id());
MdPbMeasureunit unit = mdPbMeasureunitMapper.selectOne(queryWrapper);
if (unit == null) {
throw new BadRequestException("找不到对应的计量单位:" + material.getBase_unit_id());
}
// 插入明细表(使用 Builder)
StIvtIostorinvdtl dtl = StIvtIostorinvdtl.builder()
.iostorinvdtl_id(IdUtil.getStringId())
.iostorinv_id(iostorinvId)
.seq_no(BigDecimal.valueOf(i + 1))
.material_id(material.getMaterial_id())
.pcsn(row.get("container_name"))
.bill_status("10")
.quality_scode("01")
.qty_unit_id(material.getBase_unit_id())
.qty_unit_name(unit.getUnit_name())
.assign_qty(new BigDecimal(row.get("net_weight")))
.plan_qty(new BigDecimal(row.get("net_weight")))
.box_no(row.get("package_box_sn"))
.build();
stIvtIostorinvdtlMapper.insert(dtl);
// 查询是否已经分配货位或任务
String boxNo = row.get("package_box_sn");
List<StIvtIostorinvdis> nowDisRows = stIvtIostorinvdisMapper.getstartAndDisRows(boxNo);
if (!nowDisRows.isEmpty()) {
throw new BadRequestException("该木箱已经分配过货位,无法继续分配!");
}
// 检查木箱是否在库内
QueryWrapper<StIvtStructattr> structQueryWrapper = new QueryWrapper<>();
structQueryWrapper.eq("storagevehicle_code", boxNo);
StIvtStructattr structattr = stIvtStructattrMapper.selectOne(structQueryWrapper);
if (structattr != null) {
throw new BadRequestException("木箱:" + boxNo + "已存在库内,请对数据进行核实!");
}
String planQtyStr = row.get("plan_qty");
BigDecimal planQty = planQtyStr == null || planQtyStr.trim().isEmpty()
? BigDecimal.ZERO
: new BigDecimal(planQtyStr);
// 插入分配表(使用 Builder)
StIvtIostorinvdis dis = StIvtIostorinvdis.builder()
.iostorinvdis_id(cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId() + "")
.iostorinv_id(iostorinvId)
.iostorinvdtl_id(dtl.getIostorinvdtl_id())
.seq_no(BigDecimal.ONE)
.material_id(material.getMaterial_id())
.pcsn(row.get("container_name"))
.box_no(boxNo)
.storagevehicle_code(boxNo)
.quality_scode(row.get("quality_scode"))
.work_status("00")
.qty_unit_id(material.getBase_unit_id())
.qty_unit_name(unit.getUnit_name())
.plan_qty(planQty)
.build();
stIvtIostorinvdisMapper.insert(dis);
// 更新包装关系状态
String billType = (String) whereJson.get("bill_type");
String targetStatus = "0003".equals(billType) ? "3" : "0";
QueryWrapper<PdmBiSubpackagerelation> wrapper = new QueryWrapper<>();
wrapper.eq("package_box_sn", dis.getBox_no())
.eq("status", "1"); // 原状态是 0 才更新
PdmBiSubpackagerelation relation = new PdmBiSubpackagerelation();
relation.setStatus(targetStatus);
pdmBiSubpackagerelationMapper.update(relation, wrapper);
totalQty += Double.parseDouble(row.get("net_weight"));
}
// 更新主表总数量
mst.setTotal_qty(BigDecimal.valueOf(totalQty));
// 插入主表
stIvtIostorinvMapper.insert(mst);
return iostorinvId;
}
@Override
public JSONArray getDisDtl(Map whereJson) {
//查询该明细下的所有入库分配载具明细
String iostorinv_id = (String) whereJson.get("iostorinv_id");
List<StIvtIostorinvdis> disRows = stIvtIostorinvdisMapper.selectList(new QueryWrapper<StIvtIostorinvdis>()
.eq("iostorinvdtl_id", whereJson.get("iostorinvdtl_id"))
.and(wrapper -> wrapper.isNull("task_id").or().eq("task_id", "")));
HashSet<String> vehicle_set = new HashSet<>();
for (int j = 0; j < disRows.size(); j++) {
vehicle_set.add(disRows.get(j).getBox_no());
}
return stIvtIostorinvdisMapper.getDisDtls(vehicle_set,iostorinv_id);
}
@Override
public JSONArray getIODtl(Map whereJson) {
String id = (String) whereJson.get("bill_code");
String open_flag = (String) whereJson.get("open_flag");
JSONArray ja = stIvtIostorinvdtlMapper.selectIoDtl(id, open_flag);
return ja;
}
@ -314,10 +563,10 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id = '" + material.getBase_unit_id() + "'").uniqueResult(0);
// 构建明细数据
Long iostorinvdtlId = IdUtil.getLongId();
String iostorinvdtlId = IdUtil.getStringId();
StIvtIostorinvdtl dtl = StIvtIostorinvdtl.builder()
.iostorinvdtl_id(iostorinvdtlId)
.iostorinv_id(Long.valueOf(iostorinvId))
.iostorinv_id(iostorinvId)
.seq_no(BigDecimal.valueOf(++index))
.material_id(material.getMaterial_id())
.pcsn(row.get("container_name"))
@ -332,8 +581,8 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
// 构建 dis 数据
StIvtIostorinvdis dis = StIvtIostorinvdis.builder()
.iostorinvdis_id(IdUtil.getLongId())
.iostorinv_id(Long.valueOf(iostorinvId))
.iostorinvdis_id(IdUtil.getStringId())
.iostorinv_id(iostorinvId)
.iostorinvdtl_id(iostorinvdtlId)
.seq_no(new BigDecimal(1))
.material_id(material.getMaterial_id())
@ -360,7 +609,6 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
}
@Transactional(rollbackFor = Exception.class)
@Override
public void divStruct(Map whereJson) {
@ -382,19 +630,23 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
auto_div = whereJson2.getBoolean("auto_div");
}
//判断该载具是否已经分配货位或者起点
JSONArray now_dis_rows = WQL.getWO("QST_IVT_RAWASSISTISTOR").addParam("flag", "17").addParam("box_no", map.get("box_no")).process().getResultJSONArray(0);
if (now_dis_rows.size() > 0 && !auto_div) {
List<StIvtIostorinvdis> nowDisRows = stIvtIostorinvdisMapper.getstartAndDisRows(map.get("box_no"));
if (nowDisRows.size() > 0 && !auto_div) {
throw new BadRequestException("该木箱已经分配过货位,无法继续分配!");
}
String point_code = map.get("point_code");
if (StrUtil.isNotEmpty(point_code)) {
HashMap<String, String> point_map = new HashMap<>();
PointDto pointDto = pointService.findByCode(point_code);
point_map.put("point_code", pointDto.getPoint_code());
point_map.put("point_id", pointDto.getPoint_id() + "");
point_map.put("point_name", pointDto.getPoint_name());
WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(point_map, "iostorinv_id = '" + map.get("iostorinv_id") + "' AND box_no = '" + map.get("box_no") + "'");
SchBasePoint pointDto = ischBasePointService.findByCode(point_code);
StIvtIostorinvdis stIvtIostorinvdis = StIvtIostorinvdis.builder()
.point_id(pointDto.getPoint_id())
.build();
QueryWrapper<StIvtIostorinvdis> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("iostorinv_id", map.get("iostorinv_id"))
.eq("box_no", map.get("box_no"));
stIvtIostorinvdisMapper.update(stIvtIostorinvdis, queryWrapper);
}
Boolean checked = whereJson2.getBoolean("checked");
@ -405,12 +657,22 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
JSONObject struct_jo = new JSONObject();
if (whereJson.containsKey("sect_id")) {
String need_sect = (String) whereJson.get("sect_id");
JSONObject need_sect_jo = WQLObject.getWQLObject("st_ivt_sectattr").query("sect_id = '" + need_sect + "'").uniqueResult(0);
// 查询 st_ivt_sectattr 表
QueryWrapper<StIvtSectattr> sectattrQueryWrapper = new QueryWrapper<>();
sectattrQueryWrapper.eq("sect_id", need_sect);
StIvtSectattr sectattr = stIvtSectattrMapper.selectOne(sectattrQueryWrapper);
//判断是否为主存区,主存区调用自动分配,虚拟区调用普通查询
if (StrUtil.isNotEmpty(need_sect) && !"00".equals(need_sect_jo.getString("sect_type_attr"))) {
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("sect_id = '" + need_sect + "' AND lock_type = '1' AND is_delete = '0' AND IFNULL( storagevehicle_code, '' ) = ''").uniqueResult(0);
// 如果为空则扩容
if (ObjectUtil.isEmpty(struct_jo)) {
if (StrUtil.isNotEmpty(need_sect) && !"00".equals(sectattr.getSect_type_attr())) {
QueryWrapper<StIvtStructattr> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sect_id", need_sect)
.eq("lock_type", "1")
.eq("is_delete", "0")
.isNull("storagevehicle_code"); // storagevehicle_code IS NULL
StIvtStructattr structattr = stIvtStructattrMapper.selectOne(queryWrapper);
if (structattr == null) {
JSONObject jsonParam = new JSONObject();
jsonParam.put("sect_id", whereJson.get("sect_id"));
jsonParam.put("stor_id", whereJson.get("stor_id"));
@ -419,7 +681,13 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
StructattrServiceImpl bean = SpringContextHolder.getBean(StructattrServiceImpl.class);
bean.oneCreate(jsonParam);
struct_jo = WQLObject.getWQLObject("st_ivt_structattr").query("sect_id = '" + need_sect + "' AND lock_type = '1' AND is_delete = '0' AND IFNULL( storagevehicle_code, '' ) = ''").uniqueResult(0);
// 再次查询
structattr = stIvtStructattrMapper.selectOne(queryWrapper);
}
if (structattr != null) {
struct_jo = JSON.parseObject(JSON.toJSONString(structattr));
}
} else {
jo_form.put("sect_id", whereJson.get("sect_id"));
@ -440,13 +708,19 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
struct_code = struct_jo.getString("struct_code");
struct_name = struct_jo.getString("struct_name");
} else {
//更新入库分配表仓位相关字段
// 校验仓位是否满足此木箱高度
JSONObject jsonSub = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + map.get("box_no") + "'").uniqueResult(0);
double box_high = jsonSub.getDoubleValue("box_high");
QueryWrapper<PdmBiSubpackagerelation> queryWrapper = new QueryWrapper<>();
if (StrUtil.isNotEmpty(map.get("box_no"))) {
queryWrapper.eq("package_box_sn", map.get("box_no"));
}
PdmBiSubpackagerelation pdmBiSubpackagerelation = pdmBiSubpackagerelationMapper.selectOne(queryWrapper);
//更新入库分配表仓位相关字段
double box_high = Double.parseDouble(pdmBiSubpackagerelation.getBox_high());
JSONObject jsonAttr = WQLObject.getWQLObject("st_ivt_structattr").query("struct_code = '" + map.get("struct_code") + "'").uniqueResult(0);
StIvtStructattr stIvtStructattr = stIvtStructattrMapper.selectOne(new LambdaQueryWrapper<StIvtStructattr>()
.eq(StIvtStructattr::getStruct_code, map.get("struct_code")));
// 入库木箱下限
String in_download_box_high = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("in_download_box_high").getValue();
@ -454,11 +728,11 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
String in_up_box_high = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("in_up_box_high").getValue();
if (Double.parseDouble(in_download_box_high) < box_high && box_high <= Double.parseDouble(in_up_box_high)) {
if (StrUtil.equals(jsonAttr.getString("layer_num"), "3")) {
if (box_high > jsonAttr.getDoubleValue("height")) {
if (StrUtil.equals(String.valueOf(stIvtStructattr.getLayer_num()), "3")) {
if (box_high > Double.parseDouble(stIvtStructattr.getHeight().toString())) {
throw new BadRequestException("木箱高度不符,请检查!");
}
} else if (StrUtil.equals(jsonAttr.getString("layer_num"), "1")) {
} else if (StrUtil.equals(String.valueOf(stIvtStructattr.getLayer_num()), "1")) {
if (box_high > Double.parseDouble(in_download_box_high)) {
throw new BadRequestException("木箱高度不符,请检查!");
}
@ -476,118 +750,176 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
struct_code = map.get("struct_code");
struct_name = map.get("struct_name");
}
HashMap<String, String> dis_map = new HashMap();
dis_map.put("sect_id", sect_id);
dis_map.put("sect_code", sect_code);
dis_map.put("sect_name", sect_name);
dis_map.put("struct_id", struct_id);
dis_map.put("struct_code", struct_code);
dis_map.put("struct_name", struct_name);
StIvtIostorinvdis dis = StIvtIostorinvdis.builder()
.sect_id(Long.valueOf(sect_id))
.sect_code(sect_code)
.sect_name(sect_name)
.struct_id(Long.valueOf(struct_id))
.struct_code(struct_code)
.struct_name(struct_name)
.build();
//锁定货位
JSONObject lock_map = new JSONObject();
lock_map.put("end_point", struct_code);
//查询主表信息
JSONObject mst = WQLObject.getWQLObject("st_ivt_iostorinv").query("iostorinv_id = '" + map.get("iostorinv_id") + "'").uniqueResult(0);
lock_map.put("inv_type", mst.get("bill_type"));
lock_map.put("inv_id", mst.get("iostorinv_id"));
lock_map.put("inv_code", mst.get("bill_code"));
StIvtIostorinv mst = stIvtIostorinvMapper.selectOne(new LambdaQueryWrapper<StIvtIostorinv>()
.eq(StIvtIostorinv::getIostorinv_id, map.get("iostorinv_id")));
JSONObject mstJson = JSON.parseObject(JSON.toJSONString(mst));
lock_map.put("inv_type", mstJson.get("bill_type"));
lock_map.put("inv_id", mstJson.get("iostorinv_id"));
lock_map.put("inv_code", mstJson.get("bill_code"));
inbillService.operatePoint("0", lock_map);
// 判断起点是否不为空
JSONObject ios_dis = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + map.get("iostorinv_id") + "' AND box_no = '" + map.get("box_no") + "'").uniqueResult(0);
String iostorinvId = map.get("iostorinv_id");
String boxNo = map.get("box_no");
// 查询 ST_IVT_IOStorInvDis 表
StIvtIostorinvdis iosDis = stIvtIostorinvdisMapper.selectOne(new LambdaQueryWrapper<StIvtIostorinvdis>()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinvId)
.eq(StIvtIostorinvdis::getBox_no, boxNo));
boolean isVirtual = false;
if (sect_id != null) {
// 查询 st_ivt_sectattr 表
StIvtSectattr sectAttr = stIvtSectattrMapper.selectOne(new LambdaQueryWrapper<StIvtSectattr>()
.eq(StIvtSectattr::getSect_id, sect_id));
JSONObject sect_jo = WQLObject.getWQLObject("st_ivt_sectattr").query("sect_id ='" + sect_id + "'").uniqueResult(0);
boolean is_virtual = false;
if ("09".equals(sect_jo.getString("sect_type_attr"))) {
is_virtual = true;
String task_id = cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId() + "";
dis_map.put("task_id", task_id);
dis_map.put("work_status", "01");
if ("09".equals(sectAttr.getSect_type_attr())) {
isVirtual = true;
String taskId = cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextIdStr();
dis.setTask_id(Long.valueOf(taskId));
dis.setWork_status("01");
}
if (StrUtil.isNotEmpty(ios_dis.getString("point_id")) && !is_virtual) {
}
// 创建任务并下发
if (iosDis != null && ObjectUtil.isNotEmpty(iosDis.getPoint_id()) && !isVirtual) {
TwoInTask task = new TwoInTask();
JSONObject task_form = new JSONObject();
task_form.put("task_type", "010501");
task_form.put("start_device_code", map.get("point_code"));
task_form.put("next_device_code", struct_code);
task_form.put("vehicle_code", map.get("box_no"));
task_form.put("storagevehicle_type", map.get("storagevehicle_type"));
String task_id = task.createTask(task_form);
// 下发
task.immediateNotifyAcs(task_id);
/* if (whereJson.containsKey("auto_issue")) {
}*/
dis_map.put("task_id", task_id);
dis_map.put("work_status", "01");
}
WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(dis_map, "iostorinv_id = '" + map.get("iostorinv_id") + "' AND box_no = '" + map.get("box_no") + "'");
//修改库存
//直接取出入库分配表的库存
JSONArray dis_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + map.get("iostorinv_id") + "' AND box_no = '" + map.get("box_no") + "'").getResultJSONArray(0);
JSONObject mst_jo = WQLObject.getWQLObject("ST_IVT_IOStorInv").query("iostorinv_id = '" + map.get("iostorinv_id") + "'").uniqueResult(0);
for (int i = 0; i < dis_rows.size(); i++) {
JSONObject dis_jo = dis_rows.getJSONObject(i);
JSONObject i_form = new JSONObject();
i_form.put("struct_id", dis_jo.getString("struct_id"));
i_form.put("material_id", dis_jo.getString("material_id"));
i_form.put("pcsn", dis_jo.getString("pcsn"));
i_form.put("change_qty", dis_jo.getString("plan_qty"));
i_form.put("bill_type_scode", mst_jo.getString("bill_type"));
i_form.put("quality_scode", "01");
i_form.put("inv_id", mst_jo.getString("iostorinv_id"));
i_form.put("bill_code", mst_jo.getString("bill_code"));
i_form.put("bill_table", "ST_IVT_IOStorInv");
i_form.put("qty_unit_id", dis_jo.getString("qty_unit_id"));
i_form.put("qty_unit_name", dis_jo.getString("qty_unit_name"));
storPublicService.IOStor(i_form, "31");
JSONObject dtl_jo = WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").query("iostorinvdtl_id = '" + dis_jo.getString("iostorinvdtl_id") + "'").uniqueResult(0);
if (StrUtil.isNotEmpty(ios_dis.getString("point_id")) || is_virtual) {
if (dtl_jo.getDoubleValue("unassign_qty") == 0) {
//判断该明细下是否还存在未分配货位的分配明细
JSONArray disdiv_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinvdtl_id = '" + dis_jo.getString("iostorinvdtl_id") + "' AND (struct_id = '' OR struct_id is null) AND (point_id = '' OR point_id is null)").getResultJSONArray(0);
if (disdiv_rows.size() == 0) {
dtl_jo.put("bill_status", "40");
WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").update(dtl_jo);
//判断主表下的明细是否都为40
JSONArray dtl_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").query("iostorinv_id = '" + dis_jo.getString("iostorinv_id") + "' AND bill_status < '40'").getResultJSONArray(0);
if (dtl_rows.size() == 0) {
mst_jo.put("bill_status", "40");
mst_jo.put("dis_optid", currentUserId);
mst_jo.put("dis_optname", nickName);
mst_jo.put("dis_time", now);
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(mst_jo);
JSONObject taskForm = new JSONObject();
taskForm.put("task_type", "010501");
taskForm.put("start_device_code", map.get("point_code"));
taskForm.put("next_device_code", struct_code);
taskForm.put("vehicle_code", boxNo);
taskForm.put("storagevehicle_type", map.get("storagevehicle_type"));
String taskId = task.createTask(taskForm);
task.immediateNotifyAcs(taskId);
dis.setTask_id(Long.valueOf(taskId));
dis.setWork_status("01");
}
// 更新 ST_IVT_IOStorInvDis 表
stIvtIostorinvdisMapper.update(dis, new LambdaQueryWrapper<StIvtIostorinvdis>()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinvId)
.eq(StIvtIostorinvdis::getBox_no, boxNo));
// 查询分配明细和主表信息
List<StIvtIostorinvdis> disRows = stIvtIostorinvdisMapper.selectList(new LambdaQueryWrapper<StIvtIostorinvdis>()
.eq(StIvtIostorinvdis::getIostorinv_id, iostorinvId)
.eq(StIvtIostorinvdis::getBox_no, boxNo));
StIvtIostorinv mst2 = stIvtIostorinvMapper.selectById(iostorinvId);
JSONObject mstJo = JSON.parseObject(JSON.toJSONString(mst2));
for (StIvtIostorinvdis stIvtIostorinvdis : disRows) {
JSONObject iForm = new JSONObject();
iForm.put("struct_id", stIvtIostorinvdis.getStruct_id());
iForm.put("material_id", stIvtIostorinvdis.getMaterial_id());
iForm.put("pcsn", stIvtIostorinvdis.getPcsn());
iForm.put("change_qty", stIvtIostorinvdis.getPlan_qty());
iForm.put("bill_type_scode", mstJo.getString("bill_type"));
iForm.put("quality_scode", "01");
iForm.put("inv_id", mstJo.getString("iostorinv_id"));
iForm.put("bill_code", mstJo.getString("bill_code"));
iForm.put("bill_table", "ST_IVT_IOStorInv");
iForm.put("qty_unit_id", stIvtIostorinvdis.getQty_unit_id());
iForm.put("qty_unit_name", stIvtIostorinvdis.getQty_unit_name());
storPublicService.IOStor(iForm, "31");
// 查询明细
StIvtIostorinvdtl dtl = stIvtIostorinvdtlMapper.selectById(dis.getIostorinvdtl_id());
if (ObjectUtil.isNotEmpty(iosDis.getPoint_id()) || isVirtual) {
if (dtl.getUnassign_qty().doubleValue() == 0) {
// 查询未分配的明细
List<StIvtIostorinvdis> disDivList = stIvtIostorinvdisMapper.selectList(new LambdaQueryWrapper<StIvtIostorinvdis>()
.eq(StIvtIostorinvdis::getIostorinvdtl_id, dis.getIostorinvdtl_id())
.isNull(StIvtIostorinvdis::getStruct_id)
.isNull(StIvtIostorinvdis::getPoint_id));
if (disDivList.isEmpty()) {
dtl.setBill_status("40");
stIvtIostorinvdtlMapper.updateById(dtl);
// 查询主表下的明细状态
List<StIvtIostorinvdtl> dtlList = stIvtIostorinvdtlMapper.selectList(new LambdaQueryWrapper<StIvtIostorinvdtl>()
.eq(StIvtIostorinvdtl::getIostorinv_id, iostorinvId)
.lt(StIvtIostorinvdtl::getBill_status, "40"));
if (dtlList.isEmpty()) {
mst.setBill_status("40");
mst.setDis_optid(Long.valueOf(currentUserId));
mst.setDis_optname(nickName);
mst.setDis_time(DateUtil.now());
stIvtIostorinvMapper.updateById(mst);
} else {
mst_jo.put("bill_status", "30");
mst_jo.put("dis_optid", currentUserId);
mst_jo.put("dis_optname", nickName);
mst_jo.put("dis_time", now);
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(mst_jo);
mst.setBill_status("30");
mst.setDis_optid(Long.valueOf(currentUserId));
mst.setDis_optname(nickName);
mst.setDis_time(DateUtil.now());
stIvtIostorinvMapper.updateById(mst);
}
}
}
} else {
dtl_jo.put("bill_status", "30");
WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").update(dtl_jo);
mst_jo.put("bill_status", "30");
mst_jo.put("dis_optid", currentUserId);
mst_jo.put("dis_optname", nickName);
mst_jo.put("dis_time", now);
WQLObject.getWQLObject("ST_IVT_IOStorInv").update(mst_jo);
dtl.setBill_status("30");
stIvtIostorinvdtlMapper.updateById(dtl);
mst.setBill_status("30");
mst.setDis_optid(Long.valueOf(currentUserId));
mst.setDis_optname(nickName);
mst.setDis_time(DateUtil.now());
stIvtIostorinvMapper.updateById(mst);
}
}
//如果是虚拟区,直接更新完成分配任务
if (is_virtual) {
if (isVirtual) {
JSONObject dis_form = new JSONObject();
dis_form.put("task_id", dis_map.get("task_id"));
dis_form.put("task_id", dis.getTask_id());
inbillService.confirmDis(dis_form);
}
}
@Override
public JSONArray queryBoxMater(JSONArray rows) {
JSONArray total_rows = new JSONArray();
HashSet<String> set = new HashSet<>();
for (int i = 0; i < rows.size(); i++) {
JSONObject row = rows.getJSONObject(i);
String package_box_sn = row.getString("package_box_sn");
set.add(package_box_sn);
}
for (String s : set) {
List<PdmBiSubpackagerelation> pdmBiSubpackagerelations = pdmBiSubpackagerelationMapper.selectList(new LambdaQueryWrapper<PdmBiSubpackagerelation>().eq(PdmBiSubpackagerelation::getPackage_box_sn, s).eq(PdmBiSubpackagerelation::getStatus, "0"));
for (int i = 0; i < pdmBiSubpackagerelations.size(); i++) {
JSONObject mater = JSON.parseObject(JSON.toJSONString(pdmBiSubpackagerelations.get(i)));
total_rows.add(mater);
}
}
return total_rows;
}
@Override
public JSONObject autoDis(JSONObject whereJson) {
/*

5
lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/RegionioOutServiceImpl.java

@ -3,13 +3,13 @@ package org.nl.wms.st.outbill.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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;
@ -127,8 +127,7 @@ public class RegionioOutServiceImpl implements RegionioOutService {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
dto.setIostorinv_id(IdUtil.getSnowflake(1, 1).nextId());
dto.setIostorinv_id(IdUtil.getStringId());
dto.setBill_code(bill_code);
dto.setIo_type("1");
dto.setBill_status("10");

Loading…
Cancel
Save