Browse Source

feat: 入库冲销功能

master
李永德 1 week ago
parent
commit
860be10093
  1. 16
      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. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/IStIvtIostorinvdtlService.java
  4. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/StIvtIostorinvdis.java
  5. 13
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvMapper.java
  6. 119
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/dao/mapper/StIvtIostorinvMapper.xml
  7. 15
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java
  8. 7
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdisServiceImpl.java
  9. 8
      lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvdtlServiceImpl.java
  10. 3
      lms/nladmin-system/src/main/java/org/nl/system/service/dict/ISysDictService.java
  11. 4
      lms/nladmin-system/src/main/java/org/nl/system/service/dict/dao/mapper/SysDictMapper.java
  12. 11
      lms/nladmin-system/src/main/java/org/nl/system/service/dict/dao/mapper/SysDictMapper.xml
  13. 6
      lms/nladmin-system/src/main/java/org/nl/system/service/dict/impl/SysDictServiceImpl.java
  14. 33
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/InchargeController.java
  15. 7
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/OutChargeController.java
  16. 15
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/InchargeService.java
  17. 7
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/OutChargeService.java
  18. 4
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/dto/ChargePageParam.java
  19. 173
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/InchargeServiceImpl.java
  20. 19
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java
  21. 2
      lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/vo/WriteOffVo.java
  22. 9
      lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java
  23. 13
      lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/vo/SelectVo.java
  24. 20
      lms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue
  25. 2
      lms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js

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

@ -1,13 +1,11 @@
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.nl.wms.st.inbill.service.dto.ChargePageParam;
import org.nl.wms.st.inbill.service.vo.WriteOffVo;
import org.springframework.data.domain.Pageable;
import java.util.Map;
@ -153,5 +151,13 @@ public interface IStIvtIostorinvService extends IService<StIvtIostorinv> {
* @param page
* @return
*/
IPage<StIvtIostorinv> outWriteOffPageDatas(OutChargePageParam paramMap, PageQuery page);
IPage<StIvtIostorinv> outWriteOffPageDatas(ChargePageParam paramMap, PageQuery page);
/**
* 查询入库冲销分页查询
* @param paramMap
* @param page
* @return
*/
IPage<WriteOffVo> inWriteOffPageDatas(ChargePageParam paramMap, PageQuery page);
}

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

@ -94,5 +94,12 @@ public interface IStIvtIostorinvdisService extends IService<StIvtIostorinvdis> {
* @return
*/
List<OutBillTaskVo> getOutBillTask2(OutBillTaskParam param);
/**
* 根据明细di获取分配数据
* @param iostorinvdtlId 明细id
* @return
*/
List<StIvtIostorinvdis> getBillDisByDtlId(String iostorinvdtlId);
}

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

@ -84,4 +84,11 @@ public interface IStIvtIostorinvdtlService extends IService<StIvtIostorinvdtl> {
* @return
*/
List<OutBillDtlVo> getOutBillDtl(OutBillDtlQueryParam param);
/**
* 根据出入库单据id获取明细数据
* @param id: 出入库id
* @return
*/
List<StIvtIostorinvdtl> getBillDtlByInvId(String id);
}

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

@ -2,10 +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.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
@ -22,6 +19,8 @@ import java.math.BigDecimal;
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_iostorinvdis")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class StIvtIostorinvdis implements Serializable {
private static final long serialVersionUID = 1L;

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

@ -7,9 +7,9 @@ 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.ChargePageParam;
import org.nl.wms.st.inbill.service.dto.RawAssistIStorDto;
import org.nl.wms.st.inbill.service.vo.OutWriteOffVo;
import org.nl.wms.st.inbill.service.vo.WriteOffVo;
import org.springframework.data.domain.Pageable;
import java.util.List;
@ -60,5 +60,12 @@ public interface StIvtIostorinvMapper extends BaseMapper<StIvtIostorinv> {
* @param paramMap
* @return
*/
IPage<StIvtIostorinv> outWriteOffPageDatas(IPage<StIvtIostorinv> pages, OutChargePageParam paramMap);
IPage<StIvtIostorinv> outWriteOffPageDatas(IPage<StIvtIostorinv> pages, ChargePageParam paramMap);
/**
* 入库冲销分页查询
* @param pages
* @param paramMap
* @return
*/
IPage<WriteOffVo> inWriteOffPageDatas(IPage<StIvtIostorinv> pages, ChargePageParam paramMap);
}

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

@ -370,5 +370,124 @@
) dis2 ON dis2.iostorinv_id = ios2.iostorinv_id
order by iostorinv_id desc
</select>
<select id="inWriteOffPageDatas" resultType="org.nl.wms.st.inbill.service.vo.WriteOffVo">
SELECT
ios.trans_code,
ios.is_writeoff,
ios.input_optname,
ios.input_time,
ios.stor_id,
ios.syscompanyid,
ios.writeoff_time,
ios.car_type,
ios.create_mode,
ios.bill_type,
ios.is_upload,
ios.upload_mes,
ios.consignee,
ios.receiver,
ios.total_qty,
ios.receiptphone,
ios.source_type,
ios.other_freight,
ios.sysdeptid,
ios.upload_sap,
ios.receiptaddress,
ios.input_optid,
ios.buss_type,
ios.upload_time,
ios.estimated_freight,
ios.detail_count,
ios.carno,
ios.out_stor_id,
ios.deliveryaddress,
ios.update_optid,
ios.stor_code,
ios.drivername,
ios.upload_optid,
ios.bill_code,
ios.dis_optname,
ios.order_number,
ios.confirm_optid,
ios.remark,
ios.writeoff_optid,
ios.dis_time,
ios.deliveryunit,
ios.total_weight,
ios.deliveryname,
ios.update_time,
ios.update_optname,
ios.driverphone,
ios.source_name,
ios.biz_date,
ios.contractno,
ios.deliveryphone,
ios.confirm_optname,
ios.is_overdue,
ios.run_freight,
ios.unload_freight,
ios.bill_status,
ios.dis_optid,
ios.confirm_time,
ios.is_delete,
ios.cust_code,
ios.iostorinv_id,
ios.logisticscompany,
ios.stor_name,
ios.io_type,
ios.source_id
FROM
ST_IVT_IOStorInv ios
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.sap_pcsn != null and paramMap.sap_pcsn != ''">
AND sub.sap_pcsn LIKE CONCAT('%', #{paramMap.sap_pcsn}, '%')
</if>
<if test="paramMap.pcsn != null and paramMap.pcsn != ''">
AND dis.pcsn LIKE CONCAT('%', #{paramMap.pcsn}, '%')
</if>
GROUP BY
dis.iostorinv_id
) b ON b.iostorinv_id = ios.iostorinv_id
WHERE
ios.is_delete = '0'
AND ios.io_type = '0'
AND ios.bill_status = '99'
AND ios.is_writeoff = '0'
AND ios.bill_type = '0002'
<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>
ORDER BY ios.input_time DESC
</select>
</mapper>

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

@ -51,10 +51,9 @@ 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.inbill.service.dto.ChargePageParam;
import org.nl.wms.st.inbill.service.vo.WriteOffVo;
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;
@ -677,13 +676,21 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl<StIvtIostorinvMapper,
}
@Override
public IPage<StIvtIostorinv> outWriteOffPageDatas(OutChargePageParam paramMap, PageQuery page) {
public IPage<StIvtIostorinv> outWriteOffPageDatas(ChargePageParam 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);
}
@Override
public IPage<WriteOffVo> inWriteOffPageDatas(ChargePageParam 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.inWriteOffPageDatas(pages, paramMap);
}
/**
* 组织主表数据
*

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

@ -315,4 +315,11 @@ public class StIvtIostorinvdisServiceImpl extends ServiceImpl<StIvtIostorinvdisM
});
return outBillTask2;
}
@Override
public List<StIvtIostorinvdis> getBillDisByDtlId(String iostorinvdtlId) {
LambdaQueryWrapper<StIvtIostorinvdis> lam = new LambdaQueryWrapper<>();
lam.eq(StIvtIostorinvdis::getIostorinvdtl_id, iostorinvdtlId);
return list(lam);
}
}

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

@ -2,6 +2,7 @@ package org.nl.b_lms.storage_manage.ios.service.iostorInv.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -325,6 +326,13 @@ public class StIvtIostorinvdtlServiceImpl extends ServiceImpl<StIvtIostorinvdtlM
return stIvtIostorinvdtlMapper.getOutBillDtl(param);
}
@Override
public List<StIvtIostorinvdtl> getBillDtlByInvId(String id) {
LambdaQueryWrapper<StIvtIostorinvdtl> lam = new LambdaQueryWrapper<>();
lam.eq(StIvtIostorinvdtl::getIostorinv_id, id);
return list(lam);
}
/**
* 组织分配明细所需数据
* @param dtlDao 明细实体类

3
lms/nladmin-system/src/main/java/org/nl/system/service/dict/ISysDictService.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dto.DictQuery;
import org.nl.wms.st.outbill.service.vo.SelectVo;
import java.util.List;
import java.util.Map;
@ -101,4 +102,6 @@ public interface ISysDictService extends IService<Dict> {
* @return
*/
List<Dict> queryDetailsPost(String code);
List<SelectVo> getInvTypes();
}

4
lms/nladmin-system/src/main/java/org/nl/system/service/dict/dao/mapper/SysDictMapper.java

@ -2,6 +2,9 @@ package org.nl.system.service.dict.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.system.service.dict.dao.Dict;
import org.nl.wms.st.outbill.service.vo.SelectVo;
import java.util.List;
/**
* <p>
@ -13,4 +16,5 @@ import org.nl.system.service.dict.dao.Dict;
*/
public interface SysDictMapper extends BaseMapper<Dict> {
List<SelectVo> getInvTypes();
}

11
lms/nladmin-system/src/main/java/org/nl/system/service/dict/dao/mapper/SysDictMapper.xml

@ -2,4 +2,15 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.system.service.dict.dao.mapper.SysDictMapper">
<select id="getInvTypes" resultType="org.nl.wms.st.outbill.service.vo.SelectVo">
SELECT
max(value) AS CODE,
max(label) AS NAME
FROM
sys_dict
WHERE
1 = 1
AND CODE LIKE '%INV_TYPE%'
group by value
</select>
</mapper>

6
lms/nladmin-system/src/main/java/org/nl/system/service/dict/impl/SysDictServiceImpl.java

@ -16,6 +16,7 @@ import org.nl.system.service.dict.ISysDictService;
import org.nl.system.service.dict.dao.Dict;
import org.nl.system.service.dict.dao.mapper.SysDictMapper;
import org.nl.system.service.dict.dto.DictQuery;
import org.nl.wms.st.outbill.service.vo.SelectVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
@ -219,4 +220,9 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, Dict> impleme
return sysDictMapper.selectList(lam);
}
@Override
public List<SelectVo> getInvTypes() {
return sysDictMapper.getInvTypes();
}
}

33
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/rest/InchargeController.java

@ -4,8 +4,12 @@ package org.nl.wms.st.inbill.rest;
import com.alibaba.fastjson.JSONObject;
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.InchargeService;
import org.nl.wms.st.inbill.service.dto.ChargePageParam;
import org.nl.wms.st.vehiclebill.service.dto.EmptyvehiclerecordDto;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
@ -28,12 +32,17 @@ public class InchargeController {
private final InchargeService inchargeService;
// @GetMapping
// @Log("查询入库冲销")
//
// //@PreAuthorize("@el.check('emptyvehiclerecord:list')")
// public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
// return new ResponseEntity<>(inchargeService.queryAll(whereJson, page), HttpStatus.OK);
// }
@GetMapping
@Log("查询入库冲销")
//@PreAuthorize("@el.check('emptyvehiclerecord:list')")
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
return new ResponseEntity<>(inchargeService.queryAll(whereJson, page), HttpStatus.OK);
public ResponseEntity<Object> query(ChargePageParam paramMap, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(inchargeService.inWriteOffPageDatas(paramMap, page)), HttpStatus.OK);
}
@PostMapping
@ -63,12 +72,18 @@ public class InchargeController {
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/charge")
@Log("冲销")
// @PostMapping("/charge")
// @Log("冲销")
// public ResponseEntity<Object> charge(@RequestBody JSONObject whereJson) {
// inchargeService.charge(whereJson);
// return new ResponseEntity<>(HttpStatus.OK);
// }
public ResponseEntity<Object> charge(@RequestBody JSONObject whereJson) {
inchargeService.charge(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
@PostMapping("/charge")
@Log("出库冲销 - 做出库")
public ResponseEntity<Object> inWriteOffCharge(@RequestBody StIvtIostorinv paramMap) {
inchargeService.inWriteOffCharge(paramMap);
return new ResponseEntity<>(HttpStatus.CREATED);
}
}

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

@ -8,14 +8,11 @@ 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.nl.wms.st.inbill.service.dto.ChargePageParam;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
* @author Liuxy
* @date 2022-08-11
@ -39,7 +36,7 @@ public class OutChargeController {
@GetMapping
@Log("出库冲销查询")
public ResponseEntity<Object> query(OutChargePageParam paramMap, PageQuery page) {
public ResponseEntity<Object> query(ChargePageParam paramMap, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(outChargeService.outWriteOffPageDatas(paramMap, page)), HttpStatus.OK);
}

15
lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/InchargeService.java

@ -1,6 +1,11 @@
package org.nl.wms.st.inbill.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.nl.b_lms.storage_manage.ios.service.iostorInv.dao.StIvtIostorinv;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.st.inbill.service.dto.ChargePageParam;
import org.nl.wms.st.inbill.service.vo.WriteOffVo;
import org.nl.wms.st.vehiclebill.service.dto.EmptyvehiclerecordDto;
import org.springframework.data.domain.Pageable;
@ -75,4 +80,14 @@ public interface InchargeService {
* @param whereJson /
*/
void charge(JSONObject whereJson);
/**
* 查询入库冲销
* @param paramMap
* @param page
* @return
*/
IPage<WriteOffVo> inWriteOffPageDatas(ChargePageParam paramMap, PageQuery page);
void inWriteOffCharge(StIvtIostorinv paramMap);
}

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

@ -1,12 +1,9 @@
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.nl.wms.st.inbill.service.dto.ChargePageParam;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.RequestBody;
@ -43,7 +40,7 @@ public interface OutChargeService {
* @param page
* @return
*/
IPage<StIvtIostorinv> outWriteOffPageDatas(OutChargePageParam paramMap, PageQuery page);
IPage<StIvtIostorinv> outWriteOffPageDatas(ChargePageParam paramMap, PageQuery page);
/**
* 冲销出库

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

@ -6,12 +6,12 @@ import java.io.Serializable;
import java.util.List;
/**
* 出库冲销分页参数
* 冲销分页参数
* @Author: lyd
* @Date: 2025/6/10
*/
@Data
public class OutChargePageParam implements Serializable {
public class ChargePageParam implements Serializable {
private String bill_code;
private String stor_id;
private List<String> in_stor_id;

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

@ -9,26 +9,50 @@ 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.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
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.StIvtSectattr;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructattr;
import org.nl.b_lms.storage_manage.st.dao.StIvtStructivt;
import org.nl.b_lms.storage_manage.st.service.StIvtSectattrService;
import org.nl.b_lms.storage_manage.st.service.StIvtStructattrService;
import org.nl.b_lms.storage_manage.st.service.StIvtStructivtService;
import org.nl.common.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.InchargeService;
import org.nl.wms.st.inbill.service.StorPublicService;
import org.nl.wms.st.inbill.service.dto.ChargePageParam;
import org.nl.wms.st.inbill.service.vo.WriteOffVo;
import org.nl.wms.st.vehiclebill.service.dto.EmptyvehiclerecordDto;
import org.nl.wms.stat.service.enums.OutBillTypeEnum;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
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 服务实现
@ -40,6 +64,16 @@ import java.util.Map;
public class InchargeServiceImpl implements InchargeService {
private final StorPublicService storPublicService;
/** 出入库单分配表 */
private final IStIvtIostorinvService iStIvtIostorinvService;
private final IStIvtIostorinvdisService iostorinvdisService;
/** 出入库单明细表 */
private final IStIvtIostorinvdtlService iostorinvdtlService;
/** 仓位库存表 */
private final StIvtStructivtService structivtService;
private final IpdmBiSubpackagerelationService subpackagerelationService;
private final StIvtStructattrService structattrService;
private final StIvtSectattrService sectattrService;
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
@ -336,4 +370,141 @@ public class InchargeServiceImpl implements InchargeService {
mstTab.update(jsonInMst);
}
@Override
public IPage<WriteOffVo> inWriteOffPageDatas(ChargePageParam paramMap, PageQuery page) {
return iStIvtIostorinvService.inWriteOffPageDatas(paramMap, page);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void inWriteOffCharge(StIvtIostorinv inbound) {
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
Long deptId = SecurityUtils.getDeptId();
// 根据入库单创建出库单
String oldInOrderId = inbound.getIostorinv_id();
StIvtIostorinv oldInOrder = iStIvtIostorinvService.getById(oldInOrderId);
StIvtIostorinv outOrder = new StIvtIostorinv();
outOrder.setIostorinv_id(getStringId());
outOrder.setBill_code(CodeUtil.getNewCode("IO_CODE"));
outOrder.setIo_type("1");
outOrder.setBuss_type(OutBillTypeEnum.MANUAL_OUT.getCode());
outOrder.setBill_type(OutBillTypeEnum.MANUAL_OUT.getCode());
outOrder.setBiz_date(DateUtil.today());
outOrder.setStor_id(oldInOrder.getStor_id());
outOrder.setStor_code(oldInOrder.getStor_code());
outOrder.setStor_name(oldInOrder.getStor_name());
outOrder.setTotal_qty(oldInOrder.getTotal_qty());
outOrder.setTotal_weight(oldInOrder.getTotal_weight());
outOrder.setDetail_count(oldInOrder.getDetail_count());
outOrder.setBill_status("40");
outOrder.setInput_optid(currentUserId);
outOrder.setInput_optname(nickName);
outOrder.setInput_time(DateUtil.now());
outOrder.setUpdate_optid(currentUserId);
outOrder.setUpdate_optname(nickName);
outOrder.setUpdate_time(DateUtil.now());
outOrder.setDis_optid(currentUserId);
outOrder.setDis_optname(nickName);
outOrder.setDis_time(DateUtil.now());
outOrder.setConfirm_optid("");
outOrder.setConfirm_optname("");
outOrder.setConfirm_time("");
outOrder.setSysdeptid(deptId);
outOrder.setSyscompanyid(deptId);
iStIvtIostorinvService.save(outOrder);
// 根据入库明细生成出库明细
List<StIvtIostorinvdis> needSaveOutDisList = new ArrayList<>();
List<StIvtIostorinvdtl> needSaveOutDtlList = new ArrayList<>();
List<String> needLockStructIds = new ArrayList<>();
// 获取入库明细
List<StIvtIostorinvdtl> inDtls = iostorinvdtlService.getBillDtlByInvId(oldInOrderId);
for (int i = 0; i < inDtls.size(); i++) {
StIvtIostorinvdtl inDtl = inDtls.get(i);
StIvtIostorinvdtl outDtl = new StIvtIostorinvdtl();
outDtl.setIostorinvdtl_id(getStringId());
outDtl.setIostorinv_id(outOrder.getIostorinv_id());
outDtl.setSeq_no(inDtl.getSeq_no());
outDtl.setMaterial_id(inDtl.getMaterial_id());
outDtl.setPcsn(inDtl.getPcsn());
outDtl.setBox_no(inDtl.getBox_no());
outDtl.setQuality_scode("01");
outDtl.setBill_status("40");
outDtl.setQty_unit_id(inDtl.getQty_unit_id());
outDtl.setQty_unit_name(inDtl.getQty_unit_name());
outDtl.setPlan_qty(inDtl.getPlan_qty());
outDtl.setSource_billdtl_id(inDtl.getSource_billdtl_id());
outDtl.setAssign_qty(inDtl.getAssign_qty());
outDtl.setUnassign_qty(inDtl.getUnassign_qty());
outDtl.setVbeln(inDtl.getVbeln());
outDtl.setPosnr(inDtl.getPosnr());
needSaveOutDtlList.add(outDtl);
// 根据入库分配明细生成出库分配明细
List<StIvtIostorinvdis> inDiss = iostorinvdisService.getBillDisByDtlId(inDtl.getIostorinvdtl_id());
for (int j = 0; j < inDiss.size(); j++) {
StIvtIostorinvdis inDis = inDiss.get(j);
StIvtIostorinvdis outDis = new StIvtIostorinvdis();
outDis.setIostorinvdis_id(getStringId());
outDis.setIostorinv_id(outOrder.getIostorinv_id());
outDis.setIostorinvdtl_id(outDtl.getIostorinvdtl_id());
outDis.setSeq_no(inDis.getSeq_no());
outDis.setSect_id(inDis.getSect_id());
outDis.setSect_code(inDis.getSect_code());
outDis.setSect_name(inDis.getSect_name());
outDis.setStruct_id(inDis.getStruct_id());
outDis.setStruct_code(inDis.getStruct_code());
outDis.setStruct_name(inDis.getStruct_name());
outDis.setMaterial_id(inDis.getMaterial_id());
outDis.setPcsn(inDis.getPcsn());
outDis.setBox_no(inDis.getBox_no());
outDis.setPoint_id(0L);
outDis.setTask_id("");
outDis.setQuality_scode("01");
// 如果是虚拟库区则将执行状态改为生成:01
StIvtSectattr sectattr = sectattrService.getById(inDis.getSect_id());
if ("09".equals(sectattr.getSect_type_attr())) {
outDis.setWork_status("01");
} else {
outDis.setWork_status("00");
}
outDis.setQty_unit_id(inDis.getQty_unit_id());
outDis.setQty_unit_name(inDis.getQty_unit_name());
outDis.setPlan_qty(inDis.getPlan_qty());
outDis.setReal_qty(inDis.getReal_qty());
needSaveOutDisList.add(outDis);
StIvtStructivt structivt = structivtService.getOne(new LambdaQueryWrapper<StIvtStructivt>()
.eq(StIvtStructivt::getPcsn, outDis.getPcsn())
.eq(StIvtStructivt::getCanuse_qty, inDis.getReal_qty()), false);
if (ObjectUtil.isEmpty(structivt)) {
throw new BadRequestException("库存不存在或库存数量不正确");
}
// todo: 原来的方法
JSONObject jsonIvt = JSON.parseObject(JSON.toJSONString(structivt));
jsonIvt.put("bill_type_scode", outOrder.getBill_type());
jsonIvt.put("inv_id", outOrder.getIostorinv_id());
jsonIvt.put("bill_code", outOrder.getBill_code());
jsonIvt.put("bill_table", "ST_IVT_IOStorInv");
jsonIvt.put("change_qty", inDis.getReal_qty());
storPublicService.IOStor(jsonIvt, "11");
needLockStructIds.add(jsonIvt.getString("struct_id"));
}
}
iostorinvdtlService.updateBatchById(needSaveOutDtlList);
iostorinvdisService.updateBatchById(needSaveOutDisList);
LambdaUpdateWrapper<StIvtStructattr> upLam = new LambdaUpdateWrapper<>();
upLam.set(StIvtStructattr::getLock_type, "3")
.in(StIvtStructattr::getStruct_id, needLockStructIds);
structattrService.update(upLam);
// 修改入库单 是否冲销为 是
oldInOrder.setIs_writeoff(SlitterConstant.SLITTER_YES);
oldInOrder.setWriteoff_optid(currentUserId);
oldInOrder.setWriteoff_time(DateUtil.now());
iStIvtIostorinvService.updateById(oldInOrder);
}
}

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

@ -31,7 +31,7 @@ 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.st.inbill.service.dto.ChargePageParam;
import org.nl.wms.stat.service.enums.InBillTypeEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
@ -194,10 +194,7 @@ public class OutChargeServiceImpl implements OutChargeService {
whereJson.put("writeoff_time", "");
whereJson.put("upload_mes", "");
whereJson.put("upload_sap", "");
// mst_wql.insert(whereJson);
// if (true) {
// throw new BadRequestException("测试中...");
// }
mst_wql.insert(whereJson);
ArrayList<String> ivtList = new ArrayList<>(); // 存在库存的集合
for (int i = 0; i < dis_rows.size(); i++) {
@ -228,7 +225,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);
@ -243,7 +240,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<>();
@ -264,7 +261,7 @@ public class OutChargeServiceImpl implements OutChargeService {
}
@Override
public IPage<StIvtIostorinv> outWriteOffPageDatas(OutChargePageParam paramMap, PageQuery page) {
public IPage<StIvtIostorinv> outWriteOffPageDatas(ChargePageParam paramMap, PageQuery page) {
return iStIvtIostorinvService.outWriteOffPageDatas(paramMap, page);
}
@ -371,7 +368,13 @@ public class OutChargeServiceImpl implements OutChargeService {
}
subpackagerelationService.update(upLam);
}
// 判断是否存在库存
if (ivtList.size() > 0) {
String msg = String.join(",", ivtList);
throw new BadRequestException("此子卷已存在库存:" + msg);
}
iostorinvdtlService.updateBatchById(needSaveDtlList);
iostorinvdisService.updateBatchById(needSaveDisList);
}
}

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

@ -7,7 +7,7 @@ import lombok.Data;
* @Date: 2025/6/10
*/
@Data
public class OutWriteOffVo {
public class WriteOffVo {
private String trans_code;
private String is_writeoff;
private String input_optname;

9
lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/rest/CheckOutBillController.java

@ -2,6 +2,7 @@ package org.nl.wms.st.outbill.rest;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.logging.annotation.Log;
import org.nl.system.service.dict.ISysDictService;
import org.nl.wms.st.outbill.service.CheckOutBillService;
import org.nl.wms.st.outbill.service.dto.OutBillDtlQueryParam;
import org.nl.wms.st.outbill.service.dto.OutBillTaskParam;
@ -10,7 +11,6 @@ import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
/**
* @Author: lyd
@ -22,6 +22,8 @@ import java.util.Map;
public class CheckOutBillController {
@Resource
private CheckOutBillService checkOutBillService;
@Resource
private ISysDictService dictService;
@GetMapping("/getOutBillDtl")
@Log("查询出库明细")
public ResponseEntity<Object> getOutBillDtl(OutBillDtlQueryParam param) {
@ -32,4 +34,9 @@ public class CheckOutBillController {
public ResponseEntity<Object> getOutBillTask2(@RequestBody OutBillTaskParam param) {
return new ResponseEntity<>(checkOutBillService.getOutBillTask2(param), HttpStatus.OK);
}
@GetMapping("/getInvTypes")
@Log("查询单据字段")
public ResponseEntity<Object> getInvTypes() {
return new ResponseEntity<>(dictService.getInvTypes(), HttpStatus.OK);
}
}

13
lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/vo/SelectVo.java

@ -0,0 +1,13 @@
package org.nl.wms.st.outbill.service.vo;
import lombok.Data;
/**
* @Author: lyd
* @Date: 2025/6/11
*/
@Data
public class SelectVo {
private String CODE;
private String NAME;
}

20
lms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue

@ -84,7 +84,7 @@
<el-form-item label="业务日期" prop="biz_date">
<el-date-picker v-model="form.biz_date" type="date" placeholder="选择日期" style="width: 210px" value-format="yyyy-MM-dd" :disabled="true" />
</el-form-item>
<el-form-item label="移入仓库" prop="out_stor_id" v-if="form.bill_type === '1004'">
<el-form-item v-if="form.bill_type === '1004'" label="移入仓库" prop="out_stor_id">
<label slot="label">移入仓库:</label>
<el-select
v-model="form.out_stor_id"
@ -113,8 +113,8 @@
<el-card class="box-card" shadow="never" :body-style="{padding:'0'}">
<!--表格渲染-->
<el-table
v-loading="loading"
ref="table"
v-loading="loading"
:data="tableDtl"
style="width: 100%;"
max-height="300"
@ -125,7 +125,7 @@
@current-change="handleDtlCurrentChange"
>
<el-table-column type="index" label="序号" width="55" align="center" />
<el-table-column prop="bill_code" label="单据号" align="center" width="120"/>
<el-table-column prop="bill_code" label="单据号" align="center" width="120" />
<el-table-column :formatter="bill_statusFormat" prop="bill_status" label="状态" />
<el-table-column min-width="140" show-overflow-tooltip prop="material_code" label="物料编码" align="center" />
<el-table-column min-width="120" show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
@ -135,7 +135,7 @@
<el-table-column prop="assign_qty" :formatter="crud.formatNum3" label="已分配重量" align="center" width="100px" />
<el-table-column prop="unassign_qty" :formatter="crud.formatNum3" label="未分配重量" align="center" width="100px" />
<el-table-column prop="qty_unit_name" label="单位" align="center" />
<!-- <el-table-column prop="source_bill_type" label="源单类型" align="center" width="130px" :formatter="invtypeFormat" />-->
<!-- <el-table-column prop="source_bill_type" label="源单类型" align="center" width="130px" :formatter="invtypeFormat" />-->
<el-table-column prop="source_bill_code" label="源单号" align="center" width="130px" />
<el-table-column prop="vbeln" label="交货单号" align="center" width="120px" />
<el-table-column prop="posnr" label="行号" align="center" width="70px" />
@ -149,8 +149,8 @@
<el-card class="box-card" shadow="never" :body-style="{padding:'0'}">
<!--表格渲染-->
<el-table
v-loading="loading2"
ref="table2"
v-loading="loading2"
:data="tabledis"
style="width: 100%;"
max-height="300"
@ -169,10 +169,10 @@
<el-table-column prop="struct_code" label="仓位" align="center" show-overflow-tooltip />
<el-table-column prop="sect_name" label="区域" align="center" show-overflow-tooltip />
<el-table-column show-overflow-tooltip prop="instorage_time" width="150px" label="入库时间" align="center" />
<el-table-column show-overflow-tooltip prop="is_overdue" width="150px" label="是否超期" align="center" :formatter="formatOverdue"/>
<el-table-column show-overflow-tooltip prop="is_overdue" width="150px" label="是否超期" align="center" :formatter="formatOverdue" />
<!-- <el-table-column prop="next_point_code" label="目的位置" align="center" />-->
<!-- <el-table-column prop="task_code" label="任务号" align="center" />-->
<!-- <el-table-column prop="task_type" label="任务类型" align="center" width="150px" :formatter="taskdtl_typeFormat" />-->
<!-- <el-table-column prop="task_code" label="任务号" align="center" />-->
<!-- <el-table-column prop="task_type" label="任务类型" align="center" width="150px" :formatter="taskdtl_typeFormat" />-->
<el-table-column prop="task_status" label="状态" align="center" width="110px" :formatter="task_statusFormat" />
</el-table>
</el-card>
@ -191,7 +191,7 @@ export default {
name: 'ViewDialog',
components: { },
mixins: [crud()],
dicts: ['io_bill_status', 'work_status', 'task_status', 'SCH_TASK_TYPE_DTL','ST_INV_OUT_TYPE', 'INANDOUT_BILL_TYPE', 'IS_OR_NOT'],
dicts: ['io_bill_status', 'work_status', 'task_status', 'SCH_TASK_TYPE_DTL', 'ST_INV_OUT_TYPE', 'INANDOUT_BILL_TYPE', 'IS_OR_NOT'],
props: {
dialogShow: {
type: Boolean,
@ -244,6 +244,8 @@ export default {
this.currentdtl = null
this.tableDtl = []
this.tabledis = []
this.loading2 = false
this.loading = true
this.$emit('AddChanged')
},
bill_statusFormat(row) {

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/check/getInvTypes',
url: '/api/checkoutbill/getInvTypes',
method: 'get'
})
}

Loading…
Cancel
Save