Browse Source

feat: 出库冲销查询、冲销功能

master
李永德 1 week ago
parent
commit
1d090f3575
  1. 14
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvService.java
  2. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdisService.java
  3. 24
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinv.java
  4. 8
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinvdis.java
  5. 6
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinvdtl.java
  6. 12
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvMapper.java
  7. 129
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvMapper.xml
  8. 28
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java
  9. 41
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java
  10. 16
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdisServiceImpl.java
  11. 6
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/util/impl/OutBussManageServiceImpl.java
  12. 3
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/StIvtStructivt.java
  13. 9
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/StIvtStructivtService.java
  14. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/service/impl/StIvtStructivtServiceImpl.java
  15. 36
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/OutChargeController.java
  16. 20
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/OutChargeService.java
  17. 24
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/OutChargePageParam.java
  18. 160
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java
  19. 20
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java
  20. 75
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/vo/OutWriteOffVo.java
  21. 6
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/vo/package-info.java
  22. 11
      lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/OutBillTypeEnum.java
  23. 2
      lms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js

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

@ -1,7 +1,13 @@
package org.nl.b_lms.storage_manage.ios.service.iostorInv;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import netscape.javascript.JSObject;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.st.inbill.service.dto.OutChargePageParam;
import org.nl.wms.st.inbill.service.vo.OutWriteOffVo;
import org.springframework.data.domain.Pageable;
import java.util.Map;
@ -140,4 +146,12 @@ public interface IStIvtIostorinvService extends IService<StIvtIostorinv> {
* }
*/
void confirm(Map whereJson);
/**
* 冲销出库分页查询
* @param paramMap
* @param page
* @return
*/
IPage<StIvtIostorinv> outWriteOffPageDatas(OutChargePageParam paramMap, PageQuery page);
}

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

@ -78,5 +78,12 @@ public interface IStIvtIostorinvdisService extends IService<StIvtIostorinvdis> {
* @return
*/
List<OutBillPageVo> getOutBillData(OutBillPageParam paramMap);
/**
* 根据单据id获取分配数据
* @param iosId 出入库单id
* @return
*/
List<StIvtIostorinvdis> getAllocationByIosId(String iosId);
}

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

@ -2,9 +2,7 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.dao;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
@ -12,6 +10,7 @@ import java.math.BigDecimal;
/**
* <p>
* 出入库单主表
* 追加了NoArgsConstructor与AllArgsConstructor
* </p>
*
* @author generator
@ -19,9 +18,10 @@ import java.math.BigDecimal;
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_iostorinv")
public class StIvtIostorinv implements Serializable {
private static final long serialVersionUID = 1L;
@ -75,7 +75,7 @@ public class StIvtIostorinv implements Serializable {
/**
* 来源方标识
*/
private Long source_id;
private String source_id;
/**
* 来源方名称
@ -120,7 +120,7 @@ public class StIvtIostorinv implements Serializable {
/**
* 制单人
*/
private Long input_optid;
private String input_optid;
/**
* 制单人姓名
@ -135,7 +135,7 @@ public class StIvtIostorinv implements Serializable {
/**
* 修改人
*/
private Long update_optid;
private String update_optid;
/**
* 修改人姓名
@ -150,7 +150,7 @@ public class StIvtIostorinv implements Serializable {
/**
* 分配人
*/
private Long dis_optid;
private String dis_optid;
/**
* 分配人姓名
@ -165,7 +165,7 @@ public class StIvtIostorinv implements Serializable {
/**
* 确认人
*/
private Long confirm_optid;
private String confirm_optid;
/**
* 确认人姓名
@ -200,7 +200,7 @@ public class StIvtIostorinv implements Serializable {
/**
* 回传人
*/
private Long upload_optid;
private String upload_optid;
/**
* 回传时间
@ -215,7 +215,7 @@ public class StIvtIostorinv implements Serializable {
/**
* 冲销人
*/
private Long writeoff_optid;
private String writeoff_optid;
/**
* 冲销时间
@ -305,7 +305,7 @@ public class StIvtIostorinv implements Serializable {
/**
* 移入仓库标识
*/
private Long out_stor_id;
private String out_stor_id;
/**
* 回传MES

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

@ -50,7 +50,7 @@ public class StIvtIostorinvdis implements Serializable {
/**
* 库区标识
*/
private Long sect_id;
private String sect_id;
/**
* 库区编码
@ -65,7 +65,7 @@ public class StIvtIostorinvdis implements Serializable {
/**
* 仓位标识
*/
private Long struct_id;
private String struct_id;
/**
* 仓位编码
@ -100,12 +100,12 @@ public class StIvtIostorinvdis implements Serializable {
/**
* 任务标识
*/
private Long task_id;
private String task_id;
/**
* 存储载具标识
*/
private Long storagevehicle_id;
private String storagevehicle_id;
/**
* 存储载具编码

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

@ -2,9 +2,7 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.dao;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
@ -21,6 +19,8 @@ import java.math.BigDecimal;
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_iostorinvdtl")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StIvtIostorinvdtl implements Serializable {
private static final long serialVersionUID = 1L;

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

@ -3,11 +3,13 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.mapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import lombok.extern.slf4j.Slf4j;
import com.baomidou.mybatisplus.core.metadata.IPage;
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.OutChargePageParam;
import org.nl.wms.st.inbill.service.dto.RawAssistIStorDto;
import org.nl.wms.st.inbill.service.vo.OutWriteOffVo;
import org.springframework.data.domain.Pageable;
import java.util.List;
@ -51,4 +53,12 @@ public interface StIvtIostorinvMapper extends BaseMapper<StIvtIostorinv> {
*/
List<IostorInvQuery> getIosInv(@Param("params") RawAssistIStorDto rawAssistIStorDto);
/**
* 出库冲销分页查询
* @param pages
* @param paramMap
* @return
*/
IPage<StIvtIostorinv> outWriteOffPageDatas(IPage<StIvtIostorinv> pages, OutChargePageParam paramMap);
}

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

@ -241,5 +241,134 @@
</where>
</select>
<select id="outWriteOffPageDatas"
resultType="org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv">
SELECT
ios2.trans_code,
ios2.is_writeoff,
ios2.input_optname,
ios2.input_time,
ios2.stor_id,
ios2.syscompanyid,
ios2.writeoff_time,
ios2.car_type,
ios2.create_mode,
ios2.bill_type,
ios2.is_upload,
ios2.upload_mes,
ios2.consignee,
ios2.receiver,
ios2.total_qty,
ios2.receiptphone,
ios2.source_type,
ios2.other_freight,
ios2.sysdeptid,
ios2.upload_sap,
ios2.receiptaddress,
ios2.input_optid,
ios2.buss_type,
ios2.upload_time,
ios2.estimated_freight,
ios2.detail_count,
ios2.carno,
ios2.out_stor_id,
ios2.deliveryaddress,
ios2.update_optid,
ios2.stor_code,
ios2.drivername,
ios2.upload_optid,
ios2.bill_code,
ios2.dis_optname,
ios2.order_number,
ios2.confirm_optid,
ios2.remark,
ios2.writeoff_optid,
ios2.dis_time,
ios2.deliveryunit,
ios2.total_weight,
ios2.deliveryname,
ios2.update_time,
ios2.update_optname,
ios2.driverphone,
ios2.source_name,
ios2.biz_date,
ios2.contractno,
ios2.deliveryphone,
ios2.confirm_optname,
ios2.is_overdue,
ios2.run_freight,
ios2.unload_freight,
ios2.bill_status,
ios2.dis_optid,
ios2.confirm_time,
ios2.is_delete,
ios2.cust_code,
ios2.iostorinv_id,
ios2.logisticscompany,
ios2.stor_name,
ios2.io_type,
ios2.source_id
FROM
(
SELECT
ios.*
FROM
ST_IVT_IOStorInv ios
WHERE
ios.is_delete = '0'
AND
ios.io_type = '1'
AND
ios.is_writeoff = '0'
AND
ios.bill_status = '99'
AND
ios.bill_type in ('1001','1009')
<if test="paramMap.in_stor_id != null and !paramMap.in_stor_id.isEmpty()">
AND ios.stor_id IN
<foreach collection="paramMap.in_stor_id" item="code" separator="," open="(" close=")">
#{code}
</foreach>
</if>
<if test="paramMap.bill_code != null and paramMap.bill_code != ''">
AND ios.bill_code LIKE CONCAT('%', #{paramMap.bill_code}, '%')
</if>
<if test="paramMap.stor_id != null and paramMap.stor_id != ''">
AND ios.stor_id = #{paramMap.stor_id}
</if>
<if test="paramMap.bill_type != null and paramMap.bill_type != ''">
AND ios.bill_type = #{paramMap.bill_type}
</if>
<if test="paramMap.create_mode != null and paramMap.create_mode != ''">
AND ios.create_mode = #{paramMap.create_mode}
</if>
<if test="paramMap.begin_time != null and paramMap.begin_time != ''">
AND ios.input_time <![CDATA[ >= ]]> #{paramMap.begin_time}
</if>
<if test="paramMap.end_time != null and paramMap.end_time != ''">
AND ios.input_time <![CDATA[ <= ]]> #{paramMap.end_time}
</if>
) ios2
INNER JOIN (
SELECT
dis.iostorinv_id
FROM
st_ivt_iostorinvdis dis
<!-- 后续加在分切计划表 -->
<if test="paramMap.sap_pcsn != null and paramMap.sap_pcsn != ''">
LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn AND dis.box_no = sub.package_box_sn
</if>
WHERE
1 = 1
<if test="paramMap.pcsn != null and paramMap.pcsn != ''">
AND ios.pcsn LIKE CONCAT('%', #{paramMap.pcsn}, '%')
</if>
<if test="paramMap.sap_pcsn != null and paramMap.sap_pcsn != ''">
AND sub.sap_pcsn LIKE CONCAT('%', #{paramMap.sap_pcsn}, '%')
</if>
GROUP BY dis.iostorinv_id
) dis2 ON dis2.iostorinv_id = ios2.iostorinv_id
order by iostorinv_id desc
</select>
</mapper>

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

@ -859,7 +859,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 更新单据
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
mstDao.setConfirm_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setConfirm_optid(SecurityUtils.getCurrentUserId());
mstDao.setConfirm_optname(SecurityUtils.getCurrentNickName());
mstDao.setConfirm_time(DateUtil.now());
this.updateById(mstDao);
@ -1701,7 +1701,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 未完成:只更新分配明细状态不更新任务id
disDaoList.forEach(row -> {
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
row.setTask_id(Long.parseLong(task_group_id));
row.setTask_id(task_group_id);
});
iStIvtIostorinvdisService.updateBatchById(disDaoList);
@ -1758,7 +1758,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
disDaoList.forEach(row -> {
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
row.setTask_id(Long.parseLong(task_id));
row.setTask_id(task_id);
row.setPoint_id(jsonPoint.getLongValue("point_id"));
});
iStIvtIostorinvdisService.updateBatchById(disDaoList);
@ -1847,7 +1847,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
// 未完成:只更新分配明细状态不更新任务id
disDaoList.forEach(row -> {
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
row.setTask_id(Long.parseLong(task_group_id));
row.setTask_id(task_group_id);
});
iStIvtIostorinvdisService.updateBatchById(disDaoList);
@ -1904,7 +1904,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
disDaoList.forEach(row -> {
row.setWork_status(IOSEnum.WORK_STATUS.code("生成"));
row.setTask_id(Long.parseLong(task_id));
row.setTask_id(task_id);
row.setPoint_id(jsonPoint.getLongValue("point_id"));
});
iStIvtIostorinvdisService.updateBatchById(disDaoList);
@ -1979,7 +1979,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
public void updateMstStatus(String iostorinv_id) {
StIvtIostorinv mstDao = this.getById(iostorinv_id);
mstDao.setUpdate_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setUpdate_optid(SecurityUtils.getCurrentUserId());
mstDao.setUpdate_optname(SecurityUtils.getCurrentNickName());
mstDao.setUpdate_time(DateUtil.now());
@ -2014,7 +2014,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
if (one_create) {
// 至少一个别的状态
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中"));
mstDao.setDis_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setDis_optid(SecurityUtils.getCurrentUserId());
mstDao.setDis_optname(SecurityUtils.getCurrentNickName());
mstDao.setDis_time(DateUtil.now());
}
@ -2022,7 +2022,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
if (div_create) {
// 分配完状态
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("分配完"));
mstDao.setDis_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setDis_optid(SecurityUtils.getCurrentUserId());
mstDao.setDis_optname(SecurityUtils.getCurrentNickName());
mstDao.setDis_time(DateUtil.now());
}
@ -2030,7 +2030,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
if (confirm_create) {
// 完成状态
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
mstDao.setConfirm_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setConfirm_optid(SecurityUtils.getCurrentUserId());
mstDao.setConfirm_optname(SecurityUtils.getCurrentNickName());
mstDao.setConfirm_time(DateUtil.now());
}
@ -2066,10 +2066,10 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.bill_status(whereJson.getString("bill_status"))
.total_qty(whereJson.getBigDecimal("total_qty"))
.create_mode(IOSEnum.CREATE_MODE.code("PC产生"))
.input_optid(whereJson.getLongValue("input_optid"))
.input_optid(whereJson.getString("input_optid"))
.input_optname(whereJson.getString("input_optname"))
.input_time(DateUtil.now())
.update_optid(whereJson.getLongValue("input_optid"))
.update_optid(whereJson.getString("input_optid"))
.update_optname(whereJson.getString("input_optname"))
.update_time(DateUtil.now())
.is_delete(IOSEnum.IS_NOTANDYES.code("否"))
@ -2079,7 +2079,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
.build();
if (ObjectUtil.isNotEmpty(whereJson.getString("out_stor_id"))) {
mstDao.setOut_stor_id(whereJson.getLongValue("out_stor_id"));
mstDao.setOut_stor_id(whereJson.getString("out_stor_id"));
}
} else {
@ -2092,12 +2092,12 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl<StIvtIostorinvOutM
mstDao.setRemark(whereJson.getString("remark"));
mstDao.setTotal_qty(whereJson.getBigDecimal("total_qty"));
mstDao.setBill_type(whereJson.getString("bill_type"));
mstDao.setUpdate_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setUpdate_optid(SecurityUtils.getCurrentUserId());
mstDao.setUpdate_optname(SecurityUtils.getCurrentNickName());
mstDao.setUpdate_time(DateUtil.now());
if (ObjectUtil.isNotEmpty(whereJson.getString("out_stor_id"))) {
mstDao.setOut_stor_id(whereJson.getLongValue("out_stor_id"));
mstDao.setOut_stor_id(whereJson.getString("out_stor_id"));
}
}
return mstDao;

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

@ -9,6 +9,7 @@ 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.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
@ -31,7 +32,9 @@ 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.util.service.InBussManageService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.util.service.TwoInBussManageService;
import org.nl.b_lms.storage_manage.st.service.StIvtBsrealstorattrService;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
@ -48,7 +51,10 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
import org.nl.wms.sch.service.PointService;
import org.nl.wms.sch.service.dto.PointDto;
import org.nl.wms.st.inbill.service.StorPublicService;
import org.nl.wms.st.inbill.service.dto.OutChargePageParam;
import org.nl.wms.st.inbill.service.vo.OutWriteOffVo;
import org.nl.wms.st.returns.service.impl.InAndOutRetrunServiceImpl;
import org.nl.wms.stat.service.vo.InBillPageVo;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.beans.factory.annotation.Autowired;
@ -132,6 +138,11 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
@Autowired
private RedissonClient redissonClient;
@Autowired
private StIvtIostorinvMapper stIvtIostorinvMapper;
@Autowired
private StIvtBsrealstorattrService bsrealstorattrService;
@Override
public Object pageQuery(Map query, Pageable pageQuery) {
Page<Object> page = PageHelper.startPage(pageQuery.getPageNumber() + 1, pageQuery.getPageSize());
@ -389,7 +400,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
iStIvtIostorinvdtlService.updateStatus(disDao.getIostorinvdtl_id());
// 更新主表状态
StIvtIostorinv mst = updateMstStatus(disDao.getIostorinv_id());
mst.setDis_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mst.setDis_optid(SecurityUtils.getCurrentUserId());
mst.setDis_optname(SecurityUtils.getCurrentNickName());
mst.setDis_time(DateUtil.now());
this.updateById(mst);
@ -520,7 +531,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
// 更新主表状态
StIvtIostorinv mst = updateMstStatus(jsonDis.getString("iostorinv_id"));
mst.setDis_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mst.setDis_optid(SecurityUtils.getCurrentUserId());
mst.setDis_optname(SecurityUtils.getCurrentNickName());
mst.setDis_time(DateUtil.now());
this.updateById(mst);
@ -665,6 +676,14 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
confirmMst(mstDao);
}
@Override
public IPage<StIvtIostorinv> outWriteOffPageDatas(OutChargePageParam paramMap, PageQuery page) {
List<String> userStores = bsrealstorattrService.getStoreForUser(SecurityUtils.getCurrentUserId());
paramMap.setIn_stor_id(userStores);
IPage<StIvtIostorinv> pages = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPage() + 1, page.getSize());
return stIvtIostorinvMapper.outWriteOffPageDatas(pages, paramMap);
}
/**
* 组织主表数据
*
@ -720,10 +739,10 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
.bill_status(whereJson.get("bill_status").toString())
.total_qty(BigDecimal.valueOf(Double.parseDouble(whereJson.get("total_qty").toString())))
.create_mode(IOSEnum.CREATE_MODE.code("PC产生"))
.input_optid(Long.parseLong(currentUserId))
.input_optid(currentUserId)
.input_optname(currentNickName)
.input_time(DateUtil.now())
.update_optid(Long.parseLong(currentUserId))
.update_optid(currentUserId)
.update_optname(currentNickName)
.update_time(DateUtil.now())
.is_delete(IOSEnum.IS_NOTANDYES.code("否"))
@ -732,10 +751,10 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
.sysdeptid(SecurityUtils.getDeptId())
.build();
if (ObjectUtil.isNotEmpty(MapUtil.getStr(whereJson, "out_stor_id"))) {
mstDao.setOut_stor_id(Long.parseLong(MapUtil.getStr(whereJson, "out_stor_id")));
mstDao.setOut_stor_id(MapUtil.getStr(whereJson, "out_stor_id"));
}
if (ObjectUtil.isNotEmpty(MapUtil.getStr(whereJson, "source_id"))) {
mstDao.setSource_id(Long.parseLong(MapUtil.getStr(whereJson, "source_id")));
mstDao.setSource_id(MapUtil.getStr(whereJson, "source_id"));
}
} else {
@ -747,7 +766,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
mstDao.setDetail_count(BigDecimal.valueOf(((ArrayList<HashMap>) whereJson.get("tableData")).size()));
mstDao.setRemark(whereJson.get("remark").toString());
mstDao.setTotal_qty(BigDecimal.valueOf(Double.parseDouble(whereJson.get("total_qty").toString())));
mstDao.setUpdate_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setUpdate_optid(SecurityUtils.getCurrentUserId());
mstDao.setUpdate_optname(SecurityUtils.getCurrentNickName());
mstDao.setUpdate_time(DateUtil.now());
}
@ -791,7 +810,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
public StIvtIostorinv updateMstStatus(String iostorinv_id) {
StIvtIostorinv mstDao = this.getById(iostorinv_id);
mstDao.setUpdate_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setUpdate_optid(SecurityUtils.getCurrentUserId());
mstDao.setUpdate_optname(SecurityUtils.getCurrentNickName());
mstDao.setUpdate_time(DateUtil.now());
@ -836,7 +855,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
if (confirm_create) {
// 完成状态
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
mstDao.setConfirm_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setConfirm_optid(SecurityUtils.getCurrentUserId());
mstDao.setConfirm_optname(SecurityUtils.getCurrentNickName());
mstDao.setConfirm_time(DateUtil.now());
@ -930,7 +949,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
// 更新主表为完成
mstDao.setBill_status(IOSEnum.BILL_STATUS.code("完成"));
mstDao.setConfirm_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setConfirm_optid(SecurityUtils.getCurrentUserId());
mstDao.setConfirm_optname(SecurityUtils.getCurrentNickName());
mstDao.setConfirm_time(DateUtil.now());
@ -1014,7 +1033,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
bean.uploadMES(param);
mstDao.setIs_upload(IOSEnum.IS_NOTANDYES.code("是"));
mstDao.setUpload_mes(IOSEnum.IS_NOTANDYES.code("是"));
mstDao.setUpload_optid(Long.parseLong(SecurityUtils.getCurrentUserId()));
mstDao.setUpload_optid(SecurityUtils.getCurrentUserId());
mstDao.setUpload_time(DateUtil.now());
this.updateById(mstDao);
} catch (Exception e) {

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

@ -5,6 +5,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
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.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@ -103,16 +104,16 @@ public class StIvtIostorinvdisServiceImpl extends ServiceImpl<StIvtIostorinvdisM
.build();
if (ObjectUtil.isNotEmpty(json.getString("sect_id"))) {
disDao.setSect_id(json.getLongValue("sect_id"));
disDao.setSect_id(json.getString("sect_id"));
}
if (ObjectUtil.isNotEmpty(json.getString("struct_id"))) {
disDao.setStruct_id(json.getLongValue("struct_id"));
disDao.setStruct_id(json.getString("struct_id"));
}
if (ObjectUtil.isNotEmpty(json.getString("task_id"))) {
disDao.setTask_id(json.getLongValue("task_id"));
disDao.setTask_id(json.getString("task_id"));
}
if (ObjectUtil.isNotEmpty(json.getString("storagevehicle_id"))) {
disDao.setStoragevehicle_id(json.getLongValue("storagevehicle_id"));
disDao.setStoragevehicle_id(json.getString("storagevehicle_id"));
}
if (ObjectUtil.isNotEmpty(json.getString("point_id"))) {
disDao.setPoint_id(json.getLongValue("point_id"));
@ -287,4 +288,11 @@ public class StIvtIostorinvdisServiceImpl extends ServiceImpl<StIvtIostorinvdisM
}
return stIvtIostorinvdisMapper.getOutBillData(paramMap);
}
@Override
public List<StIvtIostorinvdis> getAllocationByIosId(String iosId) {
LambdaQueryWrapper<StIvtIostorinvdis> lam = new LambdaQueryWrapper<>();
lam.eq(StIvtIostorinvdis::getIostorinv_id, iosId);
return list(lam);
}
}

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

@ -301,16 +301,16 @@ public class OutBussManageServiceImpl implements OutBussManageService {
.iostorinv_id(dtlDao.getIostorinv_id())
.iostorinvdtl_id(dtlDao.getIostorinvdtl_id())
.seq_no(BigDecimal.valueOf(i + 1))
.sect_id(jsonIvt.getLongValue("sect_id"))
.sect_id(jsonIvt.getString("sect_id"))
.sect_code(jsonIvt.getString("sect_code"))
.sect_name(jsonIvt.getString("sect_name"))
.struct_id(jsonIvt.getLongValue("struct_id"))
.struct_id(jsonIvt.getString("struct_id"))
.struct_code(jsonIvt.getString("struct_code"))
.struct_name(jsonIvt.getString("struct_name"))
.material_id(jsonIvt.getLongValue("material_id"))
.pcsn(jsonIvt.getString("pcsn"))
.quality_scode(jsonIvt.getString("quality_scode"))
.storagevehicle_id(jsonIvt.getLongValue("storagevehicle_id"))
.storagevehicle_id(jsonIvt.getString("storagevehicle_id"))
.storagevehicle_code(jsonIvt.getString("storagevehicle_code"))
.is_issued(IOSEnum.IS_NOTANDYES.code("否"))
.qty_unit_id(jsonUnit.getLongValue("measure_unit_id"))

3
lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/st/dao/StIvtStructivt.java

@ -82,7 +82,8 @@ public class StIvtStructivt {
/**
* 计量单位标识
*/
private String qtyUnit_id;
// private String qtyUnit_id;
private String qty_unit_id;
/**
* 入库时间

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

@ -14,6 +14,7 @@ import org.nl.wms.stat.service.vo.PastStructPageVo;
import java.util.List;
/**
* 仓位库存表
* @Author: lyd
* @Date: 2025/6/5
*/
@ -54,4 +55,12 @@ public interface StIvtStructivtService extends IService<StIvtStructivt> {
* @return
*/
List<PastStructPageVo> getPastStructDatas(PastStructPageParam paramMap);
/**
* 根据批次获取单个库存信息
* @param pcsn 批次
* @param throwEx 查询超出一个是否抛出异常
* @return
*/
StIvtStructivt getOneByPcsn(String pcsn, boolean throwEx);
}

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

@ -64,4 +64,11 @@ public class StIvtStructivtServiceImpl extends ServiceImpl<StIvtStructivtMapper,
public List<PastStructPageVo> getPastStructDatas(PastStructPageParam paramMap) {
return stIvtStructivtMapper.getPastStructDatas(paramMap);
}
@Override
public StIvtStructivt getOneByPcsn(String pcsn, boolean throwEx) {
LambdaQueryWrapper<StIvtStructivt> lam = new LambdaQueryWrapper<>();
lam.eq(StIvtStructivt::getPcsn, pcsn);
return getOne(lam, throwEx);
}
}

36
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/OutChargeController.java

@ -3,8 +3,12 @@ package org.nl.wms.st.inbill.rest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.modules.logging.annotation.Log;
import org.nl.wms.st.inbill.service.OutChargeService;
import org.nl.wms.st.inbill.service.dto.OutChargePageParam;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
@ -25,20 +29,32 @@ public class OutChargeController {
private final OutChargeService outChargeService;
@GetMapping
@Log("出库单查询")
// @GetMapping
// @Log("出库单查询")
//
// //@PreAuthorize("@el.check('regionio:list')")
// public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
// return new ResponseEntity<>(outChargeService.queryAll(whereJson, page), HttpStatus.OK);
// }
//@PreAuthorize("@el.check('regionio:list')")
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
return new ResponseEntity<>(outChargeService.queryAll(whereJson, page), HttpStatus.OK);
@GetMapping
@Log("出库冲销查询")
public ResponseEntity<Object> query(OutChargePageParam paramMap, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(outChargeService.outWriteOffPageDatas(paramMap, page)), HttpStatus.OK);
}
@PostMapping("/charge")
@Log("冲销")
// @PostMapping("/charge")
// @Log("冲销")
// //@PreAuthorize("@el.check('regionio:add')")
// public ResponseEntity<Object> charge(@RequestBody Map whereJson) {
// outChargeService.charge(whereJson);
// return new ResponseEntity<>(HttpStatus.CREATED);
// }
//@PreAuthorize("@el.check('regionio:add')")
public ResponseEntity<Object> charge(@RequestBody Map whereJson) {
outChargeService.charge(whereJson);
@PostMapping("/charge")
@Log("出库冲销 - 做入库")
public ResponseEntity<Object> outWriteOffCharge(@RequestBody StIvtIostorinv paramMap) {
outChargeService.outWriteOffCharge(paramMap);
return new ResponseEntity<>(HttpStatus.CREATED);
}

20
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/OutChargeService.java

@ -1,5 +1,12 @@
package org.nl.wms.st.inbill.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import netscape.javascript.JSObject;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.st.inbill.service.dto.OutChargePageParam;
import org.nl.wms.st.inbill.service.vo.OutWriteOffVo;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.RequestBody;
@ -30,4 +37,17 @@ public interface OutChargeService {
*/
void charge(@RequestBody Map whereJson);
/**
* 冲销出库的出库单查询
* @param paramMap
* @param page
* @return
*/
IPage<StIvtIostorinv> outWriteOffPageDatas(OutChargePageParam paramMap, PageQuery page);
/**
* 冲销出库
* @param outbound 出库单
*/
void outWriteOffCharge(StIvtIostorinv outbound);
}

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

@ -0,0 +1,24 @@
package org.nl.wms.st.inbill.service.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 出库冲销分页参数
* @Author: lyd
* @Date: 2025/6/10
*/
@Data
public class OutChargePageParam implements Serializable {
private String bill_code;
private String stor_id;
private List<String> in_stor_id;
private String begin_time;
private String end_time;
private String create_mode;
private String bill_type;
private String pcsn;
private String sap_pcsn;
}

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

@ -8,34 +8,68 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.extern.slf4j.Slf4j;
import org.nl.b_lms.pdm.subpackagerelation.dao.PdmBiSubpackagerelation;
import org.nl.b_lms.pdm.subpackagerelation.service.IpdmBiSubpackagerelationService;
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdisService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.IStIvtIostorinvdtlService;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdis;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinvdtl;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructivt;
import org.nl.b_lms.storage_manage.st.service.StIvtStructivtService;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.modules.wql.WQL;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl;
import org.nl.wms.st.inbill.service.OutChargeService;
import org.nl.wms.st.inbill.service.dto.OutChargePageParam;
import org.nl.wms.stat.service.enums.InBillTypeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.nl.common.utils.IdUtil.getStringId;
/**
* @author Liuxy
* @description 服务实现
* @date 2022-08-11
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class OutChargeServiceImpl implements OutChargeService {
/** 单据表 */
@Autowired
private IStIvtIostorinvService iStIvtIostorinvService;
/** 出入库单分配表 */
@Autowired
private IStIvtIostorinvdisService iostorinvdisService;
/** 出入库单明细表 */
@Autowired
private IStIvtIostorinvdtlService iostorinvdtlService;
/** 仓位库存表 */
@Autowired
private StIvtStructivtService structivtService;
@Autowired
private IpdmBiSubpackagerelationService subpackagerelationService;
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
String bill_code = MapUtil.getStr(whereJson, "bill_code");
@ -160,7 +194,10 @@ public class OutChargeServiceImpl implements OutChargeService {
whereJson.put("writeoff_time", "");
whereJson.put("upload_mes", "");
whereJson.put("upload_sap", "");
mst_wql.insert(whereJson);
// mst_wql.insert(whereJson);
// if (true) {
// throw new BadRequestException("测试中...");
// }
ArrayList<String> ivtList = new ArrayList<>(); // 存在库存的集合
for (int i = 0; i < dis_rows.size(); i++) {
@ -191,7 +228,7 @@ public class OutChargeServiceImpl implements OutChargeService {
dis_row.put("assign_qty", dis_row.getString("plan_qty"));
dis_row.put("unassign_qty", "0");
//插入手工入库明细表
dtl_wql.insert(dis_row);
// dtl_wql.insert(dis_row);
dis_row.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId());
dis_row.put("seq_no", 1);
@ -206,7 +243,7 @@ public class OutChargeServiceImpl implements OutChargeService {
dis_row.put("point_id", "");
dis_row.put("task_id", "");
//插入分配表
dis_wql.insert(dis_row);
// dis_wql.insert(dis_row);
//将包装关系中对应的记录状态改为包装
HashMap<String, String> map = new HashMap<>();
@ -226,4 +263,115 @@ public class OutChargeServiceImpl implements OutChargeService {
}
@Override
public IPage<StIvtIostorinv> outWriteOffPageDatas(OutChargePageParam paramMap, PageQuery page) {
return iStIvtIostorinvService.outWriteOffPageDatas(paramMap, page);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void outWriteOffCharge(StIvtIostorinv outbound) {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
String now = DateUtil.now();
String oldOutOrderId = outbound.getIostorinv_id();
// 1、校验主表状态为完成
StIvtIostorinv oldOutOrder = iStIvtIostorinvService.getById(oldOutOrderId);
if (!"99".equals(oldOutOrder.getBill_status())) {
throw new BadRequestException("出库单[" + outbound.getBill_code() + "]的状态必须为完成!");
}
// 2、更新销售出库为已冲销
// 需要冲销的出库单Id
LambdaUpdateWrapper<StIvtIostorinv> iosInvLam = new LambdaUpdateWrapper<>();
iosInvLam.set(StIvtIostorinv::getIs_writeoff, SlitterConstant.SLITTER_YES)
.set(StIvtIostorinv::getUpdate_time, now)
.eq(StIvtIostorinv::getIostorinv_id, oldOutOrderId);
iStIvtIostorinvService.update(iosInvLam);
// 3、生成手工入库单
// 获取出库单对应的分配数据
List<StIvtIostorinvdis> outboundDisList = iostorinvdisService.getAllocationByIosId(oldOutOrderId);
String manualInStorageOrderId = getStringId();
String manualInBillCode = CodeUtil.getNewCode("IO_CODE");
outbound.setIostorinv_id(manualInStorageOrderId);
outbound.setBill_code(manualInBillCode);
outbound.setIo_type("0");
outbound.setBill_type(InBillTypeEnum.MANUAL_IN.getCode());
outbound.setBuss_type("0009");
outbound.setBill_status("30");
outbound.setInput_optid(currentUserId);
outbound.setInput_optname(nickName);
outbound.setInput_time(now);
outbound.setUpdate_optid(currentUserId);
outbound.setUpdate_optname(nickName);
outbound.setUpdate_time(now);
outbound.setDis_optid(currentUserId);
outbound.setDis_optname(nickName);
outbound.setDis_time(now);
outbound.setConfirm_optid("0");
outbound.setConfirm_optname("");
outbound.setConfirm_time("");
outbound.setIs_upload("");
outbound.setUpload_optid("0");
outbound.setUpload_time("");
outbound.setIs_writeoff("0");
outbound.setWriteoff_optid("0");
outbound.setWriteoff_time("");
outbound.setUpload_mes("");
outbound.setUpload_sap("");
iStIvtIostorinvService.save(outbound);
// 4、插入明细表、分配表
// 存在库存的集合
ArrayList<String> ivtList = new ArrayList<>();
List<StIvtIostorinvdis> needSaveDisList = new ArrayList<>();
List<StIvtIostorinvdtl> needSaveDtlList = new ArrayList<>();
for (int i = 0; i < outboundDisList.size(); i++) {
//插入明细表
String newDtlId = getStringId();
StIvtIostorinvdis disRow = outboundDisList.get(i);
// 校验是否存在库存
StIvtStructivt structivt = structivtService.getOneByPcsn(disRow.getPcsn(), false);
if (ObjectUtil.isNotEmpty(structivt)) {
ivtList.add(structivt.getPcsn());
}
// 根据dis获取dtl(一个dis对应一个dtl【实际仓储中可能多对一】)
StIvtIostorinvdtl outDtl = iostorinvdtlService.getById(disRow.getIostorinvdtl_id());
StIvtIostorinvdtl oldDtl = outDtl;
// 转换为冲销出库的手工入库明细
// 新的明细id
outDtl.setIostorinvdtl_id(newDtlId);
// 新的单据id
outDtl.setIostorinv_id(manualInStorageOrderId);
outDtl.setSeq_no(BigDecimal.valueOf(i + 1));
outDtl.setBill_status("30");
outDtl.setReal_qty(BigDecimal.ZERO);
outDtl.setSource_billdtl_id(oldDtl.getSource_billdtl_id());
outDtl.setSource_bill_type(oldOutOrder.getBill_type());
outDtl.setSource_bill_code(oldOutOrder.getBill_code());
outDtl.setSource_bill_table("st_ivt_iostorinvdtl");
outDtl.setAssign_qty(disRow.getPlan_qty());
outDtl.setUnassign_qty(BigDecimal.ZERO);
// 手工入库明细 后面批次插入
needSaveDtlList.add(outDtl);
disRow.setIostorinvdis_id(getStringId());
disRow.setSeq_no(BigDecimal.ONE);
disRow.setSect_id("");
disRow.setSect_code("");
disRow.setSect_name("");
disRow.setWork_status("00");
disRow.setReal_qty(BigDecimal.ZERO);
disRow.setPoint_id(0L);
disRow.setTask_id("");
needSaveDisList.add(disRow);
//将包装关系中对应的记录状态改为包装
LambdaUpdateWrapper<PdmBiSubpackagerelation> upLam = new LambdaUpdateWrapper<>();
upLam.set(PdmBiSubpackagerelation::getStatus, "1")
.eq(PdmBiSubpackagerelation::getPackage_box_sn, disRow.getBox_no());
if ("1001".equals(oldOutOrder.getBill_type())) {
upLam.eq(PdmBiSubpackagerelation::getStatus, "3");
}
subpackagerelationService.update(upLam);
}
iostorinvdtlService.updateBatchById(needSaveDtlList);
iostorinvdisService.updateBatchById(needSaveDisList);
}
}

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

@ -248,10 +248,10 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
.remark((String) whereJson.get("remark"))
.bill_status((String) whereJson.get("bill_status"))
.create_mode("01")
.input_optid(Long.valueOf(currentUserId))
.input_optid(currentUserId)
.input_optname(nickName)
.input_time(String.valueOf(DateUtil.parse(now)))
.update_optid(Long.valueOf(currentUserId))
.update_optid(currentUserId)
.update_optname(nickName)
.update_time(String.valueOf(DateUtil.parse(now)))
.is_delete("0")
@ -496,7 +496,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
String now = DateUtil.now();
// 2. 更新主表信息
mainRecord.setUpdate_optid(Long.valueOf(currentUserId));
mainRecord.setUpdate_optid(currentUserId);
mainRecord.setUpdate_optname(nickName);
mainRecord.setUpdate_time(now);
@ -751,10 +751,10 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
struct_name = map.get("struct_name");
}
StIvtIostorinvdis dis = StIvtIostorinvdis.builder()
.sect_id(Long.valueOf(sect_id))
.sect_id(sect_id)
.sect_code(sect_code)
.sect_name(sect_name)
.struct_id(Long.valueOf(struct_id))
.struct_id(struct_id)
.struct_code(struct_code)
.struct_name(struct_name)
.build();
@ -791,7 +791,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
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.setTask_id(taskId);
dis.setWork_status("01");
}
}
@ -809,7 +809,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
String taskId = task.createTask(taskForm);
task.immediateNotifyAcs(taskId);
dis.setTask_id(Long.valueOf(taskId));
dis.setTask_id(taskId);
dis.setWork_status("01");
}
@ -864,13 +864,13 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
if (dtlList.isEmpty()) {
mst.setBill_status("40");
mst.setDis_optid(Long.valueOf(currentUserId));
mst.setDis_optid(currentUserId);
mst.setDis_optname(nickName);
mst.setDis_time(DateUtil.now());
stIvtIostorinvMapper.updateById(mst);
} else {
mst.setBill_status("30");
mst.setDis_optid(Long.valueOf(currentUserId));
mst.setDis_optid(currentUserId);
mst.setDis_optname(nickName);
mst.setDis_time(DateUtil.now());
stIvtIostorinvMapper.updateById(mst);
@ -882,7 +882,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService {
stIvtIostorinvdtlMapper.updateById(dtl);
mst.setBill_status("30");
mst.setDis_optid(Long.valueOf(currentUserId));
mst.setDis_optid(currentUserId);
mst.setDis_optname(nickName);
mst.setDis_time(DateUtil.now());
stIvtIostorinvMapper.updateById(mst);

75
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/vo/OutWriteOffVo.java

@ -0,0 +1,75 @@
package org.nl.wms.st.inbill.service.vo;
import lombok.Data;
/**
* @Author: lyd
* @Date: 2025/6/10
*/
@Data
public class OutWriteOffVo {
private String trans_code;
private String is_writeoff;
private String input_optname;
private String input_time;
private String stor_id;
private String syscompanyid;
private String writeoff_time;
private String car_type;
private String create_mode;
private String bill_type;
private String is_upload;
private String upload_mes;
private String consignee;
private String receiver;
private String total_qty;
private String receiptphone;
private String source_type;
private String other_freight;
private String sysdeptid;
private String upload_sap;
private String receiptaddress;
private String input_optid;
private String buss_type;
private String upload_time;
private String estimated_freight;
private String detail_count;
private String carno;
private String out_stor_id;
private String deliveryaddress;
private String update_optid;
private String stor_code;
private String drivername;
private String upload_optid;
private String bill_code;
private String dis_optname;
private String order_number;
private String confirm_optid;
private String remark;
private String writeoff_optid;
private String dis_time;
private String deliveryunit;
private String total_weight;
private String deliveryname;
private String update_time;
private String update_optname;
private String driverphone;
private String source_name;
private String biz_date;
private String contractno;
private String deliveryphone;
private String confirm_optname;
private String is_overdue;
private String run_freight;
private String unload_freight;
private String bill_status;
private String dis_optid;
private String confirm_time;
private String is_delete;
private String cust_code;
private String iostorinv_id;
private String logisticscompany;
private String stor_name;
private String io_type;
private String source_id;
}

6
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/vo/package-info.java

@ -0,0 +1,6 @@
/**
* 前端显示实体包
* @Author: lyd
* @Date: 2025/6/10
*/
package org.nl.wms.st.inbill.service.vo;

11
lms/nladmin-system/src/main/java/org/nl/wms/stat/service/enums/OutBillTypeEnum.java

@ -9,6 +9,17 @@ import java.util.Map;
* @Date: 2025/6/6
*/
public enum OutBillTypeEnum {
SHIP_OUT("1001", "发货出库"),
RE_CUT_OUT("1003", "改切出库"),
TRANSFER_OUT("1004", "调拨出库"),
UNBOXING_OUT("1005", "拆箱出库"),
RE_INSPECTION_OUT("1006", "返检出库"),
BEYOND_SERVICE_LIFE("1007", "超期报废"),
RETURN_FOR_SCRAP("1008", "退货报废"),
QUALITY_ISSUES_SCRAP("10010", "质量问题报废"),
OTHER_SCRAP("1002", "其他报废"),
SORTING_OUT("1011", "分拣出库"),
MANUAL_OUT("1009", "手工出库")
;
private final String code;

2
lms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js

@ -63,7 +63,7 @@ export function getOutBillTask(params) {
}
export function getInvTypes() {
return request({
url: '/api/checkoutbill/getInvTypes',
url: '/api/check/getInvTypes',
method: 'get'
})
}

Loading…
Cancel
Save