diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java index 1e1cb71..65ada0c 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; +import java.math.BigDecimal; import java.util.Map; /** @@ -26,4 +27,6 @@ public interface MdPbStoragevehicleextMapper extends BaseMapper */ IPage getCanuseIvt(Page page, @Param("param") Map whereJson); + + BigDecimal queryCanuseSumByPcsn(@Param("pcsn") String pcsn); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml index f4b0355..e3a2076 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml @@ -56,4 +56,14 @@ ORDER BY ext.insert_time Desc + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java index 89ff540..0f9d82d 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java @@ -26,6 +26,7 @@ import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; import org.nl.wms.basedata_manage.service.dao.Sectattr; import org.nl.wms.basedata_manage.service.dao.Structattr; import org.nl.wms.basedata_manage.service.dao.mapper.StructattrMapper; +import org.nl.wms.warehouse_management.enums.IOSEnum; import org.nl.wms.warehouse_management.service.dao.IOStorInv; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -239,12 +240,20 @@ public class StructattrServiceImpl extends ServiceImpl(Structattr.class) + .set(Structattr::getInv_id,jsonObject.getString("inv_id")) + .set(Structattr::getInv_code,jsonObject.getString("inv_code")) + .set(Structattr::getInv_type,jsonObject.getString("inv_type")) + .set(Structattr::getStoragevehicle_code,jsonObject.getString("storagevehicle_code")) + .set(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(Structattr::getStruct_code,jsonObject.getString("struct_code")) + ); break; case "2": @@ -253,7 +262,7 @@ public class StructattrServiceImpl extends ServiceImpl query(@RequestParam Map whereJson, PageQuery page, String[] stor_id, String[] bill_status, String[] bill_type) { + return new ResponseEntity<>(TableDataInfo.build(iOutBillService.pageQuery(whereJson, page, stor_id, bill_status, bill_type)), HttpStatus.OK); + } + + @GetMapping("/getCanuseIvt") + @Log("获取可用库存物料") + public ResponseEntity getCanuseIvt(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iOutBillService.getCanuseIvt(whereJson,page)),HttpStatus.OK); + } + + @PostMapping() + @Log("新增出库单") + public ResponseEntity insertDtl(@RequestBody JSONObject whereJson) { + iOutBillService.insertDtl(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @GetMapping("/getOutBillDtl") + @Log("查询明细") + public ResponseEntity getOutBillDtl(@RequestParam Map whereJson) { + return new ResponseEntity<>(iOutBillService.getOutBillDtl(whereJson), HttpStatus.OK); + } + + @GetMapping("/getOutBillDis") + @Log("查询未出库单分配") + public ResponseEntity getOutBillDis(@RequestParam Map whereJson) { + return new ResponseEntity<>(iOutBillService.getOutBillDis(whereJson), HttpStatus.OK); + } + + @PostMapping("/allDiv") + @Log("出库单全部分配") + public ResponseEntity allDiv(@RequestBody JSONObject whereJson) { + iOutBillService.allDiv(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/RawAssistIStorController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/RawAssistIStorController.java index 3f0b19d..43af3b5 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/RawAssistIStorController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/RawAssistIStorController.java @@ -81,13 +81,6 @@ public class RawAssistIStorController { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } - @PostMapping("/allDivStruct") - @Log("全部分配货位") - public ResponseEntity allDivStruct(@RequestBody JSONObject whereJson) { - iRawAssistIStorService.allDivStruct(whereJson); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - @PostMapping("/unDivStruct") @Log("取消分配货位") public ResponseEntity unDivStruct(@RequestBody Map whereJson) { @@ -102,47 +95,6 @@ public class RawAssistIStorController { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } - @PostMapping("/queryTask") - @Log("查询任务") - public ResponseEntity queryTask(@RequestBody Map whereJson) { - return new ResponseEntity<>(iRawAssistIStorService.queryTask(whereJson), HttpStatus.OK); - } - - @PostMapping("/updateTask") - @Log("变更任务") - public ResponseEntity updateTask(@RequestBody Map whereJson) { - iRawAssistIStorService.updateTask(whereJson); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @PostMapping("/delTask") - @Log("删除任务") - public ResponseEntity delTask(@RequestBody Map whereJson) { - iRawAssistIStorService.delTask(whereJson); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @PostMapping("/reIssueTask") - @Log("下发") - public ResponseEntity reIssueTask(@RequestBody Map whereJson) { - iRawAssistIStorService.reIssueTask(whereJson); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @PostMapping("/confirmTask") - @Log("完成任务") - public ResponseEntity confirmTask(@RequestBody Map whereJson) { - iRawAssistIStorService.confirmTask(whereJson); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @PostMapping("/cancelTask") - @Log("取消完成任务") - public ResponseEntity cancelTask(@RequestBody Map whereJson) { - iRawAssistIStorService.cancelTask(whereJson); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - @PostMapping("/confirm") @Log("完成单据") public ResponseEntity confirm(@RequestBody Map whereJson) { @@ -150,17 +102,16 @@ public class RawAssistIStorController { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } - @PostMapping("/backConfirm") - @Log("完成入库负单") - public ResponseEntity backConfirm(@RequestBody Map whereJson) { - iRawAssistIStorService.backConfirm(whereJson); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - @PostMapping("/autoDis") @Log("自动分配") public ResponseEntity autoDis(@RequestBody JSONObject whereJson) { iRawAssistIStorService.autoDis(whereJson); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + + @PostMapping("/getInBillTaskDtl") + @Log("入库详情作业明细查询") + public ResponseEntity getInBillTaskDtl(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(iRawAssistIStorService.getInBillTaskDtl(whereJson), HttpStatus.OK); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java index b831e77..db784d5 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java @@ -21,6 +21,18 @@ public enum IOSEnum { // 更新库存类型 UPDATE_IVT_TYPE(MapOf.of("入库", "1", "出库", "2")), + //单据出入库类型 + IO_TYPE(MapOf.of("入库","0", "出库", "1")), + + //单据状态 + BILL_STATUS(MapOf.of("生成","10", "分配中", "20", "分配完", "30", "完成", "99")), + + //入库分配明细状态 + INBILL_DIS_STATUS(MapOf.of("生成", "00", "执行中", "01", "完成", "99")), + + //组盘记录状态 + GROUP_PLATE_STATUS(MapOf.of("组盘", "01", "入库", "02", "出库", "03")), + // 锁类型 LOCK_TYPE(MapOf.of("未锁定", "0", "入库锁", "1", "出库锁", "2" , "移入锁", "3", "移出锁", "4" diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IOutBillService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IOutBillService.java new file mode 100644 index 0000000..0f5371f --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IOutBillService.java @@ -0,0 +1,78 @@ +package org.nl.wms.warehouse_management.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.warehouse_management.service.dao.IOStorInv; +import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto; +import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + * @author dsh + * 2025/5/29 + */ +public interface IOutBillService extends IService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + IPage pageQuery(Map whereJson, PageQuery page, String[] stor_id, String[] bill_status, String[] bill_type); + + /** + * 获取可用库存物料 + * @param whereJson : { + * 分页参数:page,size + * stor_id: 仓库id + * sect_id: 库区id + * struct_code: 货位编码 + * material_code: 物料编码 + * pcsn: 批次 + * } + * @param page : 分页对象 + * @return 返回结果 + */ + IPage getCanuseIvt(Map whereJson, PageQuery page); + + /** + * 新增出库单 + * + * @param whereJson 参数举例: + * {bill_code=, stor_id=1473161852946092032, stor_code=01, stor_name=原材料库, bill_status=10, total_qty=2, detail_count=1, bill_type=010201, remark=, biz_date=2022-01-08, create_mode=, tableData=[{material_id=1309, material_code=090301010001, bill_status=10, material_name=碳化钨粉 02, pcsn=, quality_scode=02, ivt_level=01, is_active=1, plan_qty=2, qty_unit_name=千克\公斤, qty_unit_id=1, remark=, edit=true}]} + * / + */ + String insertDtl(JSONObject whereJson); + + /** + * 查询出库单明细 + * + * @param whereJson / + * @return + */ + List getOutBillDtl(Map whereJson); + + /** + * 查询未出库分配 + * @param whereJson + * @return + */ + List getOutBillDis(Map whereJson); + + /** + * 全部分配,对同一出库单明细进行分配 + * + * @param whereJson / + */ + void allDiv(JSONObject whereJson); + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java index 1f07f89..8f71cd0 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java @@ -41,31 +41,15 @@ public interface IRawAssistIStorService extends IService { void divStruct(Map whereJson); - void allDivStruct(JSONObject form); - void unDivStruct(Map whereJson); void divPoint(Map whereJson); - void updateTask(Map whereJson); - - void delTask(Map whereJson); - - void reIssueTask(Map whereJson); - - void confirmTask(Map whereJson); - - void cancelTask(Map whereJson); - void confirm(Map whereJson); - void backConfirm(Map whereJson); - List getDisDtl(Map whereJson); - JSONArray queryTask(Map whereJson); - Structattr autoDis(JSONObject whereJson); - JSONObject autoDisMove(JSONObject whereJson); + List getInBillTaskDtl(Map whereJson); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvDisMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvDisMapper.java index 102cfbf..efd032f 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvDisMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvDisMapper.java @@ -7,6 +7,7 @@ import org.nl.wms.warehouse_management.service.dao.IOStorInvDis; import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto; import java.util.List; +import java.util.Map; /** * @author dsh @@ -16,4 +17,9 @@ import java.util.List; public interface IOStorInvDisMapper extends BaseMapper { List queryInBillDisDtlByIosId(@Param("iostorinvdtl_id")String iostorinvdtl_id); + + List getInBillTaskDtl(@Param("iostorinvdtl_id")String iostorinvdtl_id); + + //查询未出库单分配 + List queryOutBillDisDtl(@Param("params") Map whereJson); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvDisMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvDisMapper.xml index c7c4a82..9c488ce 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvDisMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvDisMapper.xml @@ -18,4 +18,42 @@ + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java index deaea09..11219ec 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java @@ -21,8 +21,10 @@ public interface IOStorInvMapper extends BaseMapper { IPage queryAllByPage (IPage page,@Param("params") Map whereJson); - IPage getBillDtl (IPage page, @Param("params") Map whereJson); + IPage getGroupPlate (IPage page, @Param("params") Map whereJson); List getIODtl (@Param("params") Map whereJson); + IPage queryOutBillPage (IPage page,@Param("params") Map whereJson); + } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml index b83cbc2..74e99a7 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml @@ -47,8 +47,9 @@ ORDER BY ios.iostorinv_id Desc - + SELECT MAX(group_id),storagevehicle_code,gp.material_id,pcsn,MAX(gp.qty_unit_id) as qty_unit_id,MAX(gp.qty_unit_name) as qty_unit_name,SUM(qty) as qty,SUM(qty) as plan_qty,MAX(remark),MAX(`status`),mtl.material_code, mtl.material_name + FROM md_pb_groupplate gp LEFT JOIN md_me_materialbase mtl ON gp.material_id = mtl.material_id gp.status = '01' @@ -73,7 +74,7 @@ gp.create_time <= #{params.end_time} - ORDER BY gp.create_time Desc + GROUP by storagevehicle_code,gp.material_id,pcsn - + SELECT DISTINCT ios.* FROM st_ivt_iostorinv ios + LEFT JOIN st_ivt_iostorinvdtl dtl ON ios.iostorinv_id = dtl.iostorinv_id + LEFT JOIN st_ivt_iostorinvdis dis ON dtl.iostorinvdtl_id = dis.iostorinvdtl_id + + ios.is_delete = '0' AND ios.io_type = '1' + + AND + ios.bill_code LIKE #{params.bill_code} + + + + AND + ios.is_upload = #{params.is_upload} + + + + AND + ios.stor_id IN #{params.storIds} + + + + AND + ios.bill_status IN #{params.billStatuses} + + + + AND + ios.bill_type IN #{params.billTypes} + + + + AND + dis.pcsn LIKE #{params.pcsn} + + + + AND + dis.pcsn IN #{params.pcsn_in} + + + + AND + ios.input_time >= #{params.begin_time} + + + AND + ios.input_time <= #{params.end_time} + + + ORDER BY ios.iostorinv_id Desc diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/GroupPlateDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/GroupPlateDto.java index 4d74480..6db78a2 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/GroupPlateDto.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/GroupPlateDto.java @@ -27,4 +27,9 @@ public class GroupPlateDto extends GroupPlate{ * 计划数量 */ private BigDecimal plan_qty; + + /** + * 总数量 + */ + private BigDecimal sum_qty; } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/IOStorInvDisDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/IOStorInvDisDto.java index 00a830c..68885c1 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/IOStorInvDisDto.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/IOStorInvDisDto.java @@ -20,4 +20,14 @@ public class IOStorInvDisDto extends IOStorInvDis { */ private String material_name; + /** + * 任务号 + */ + private String task_code; + + /** + * 入库时间 + */ + private String insert_time; + } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java new file mode 100644 index 0000000..892a253 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/OutBillServiceImpl.java @@ -0,0 +1,499 @@ +package org.nl.wms.warehouse_management.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.NumberUtil; +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.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.IdUtil; +import org.nl.wms.basedata_manage.enums.BaseDataEnum; +import org.nl.wms.basedata_manage.service.IBsrealStorattrService; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; +import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; +import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.IOutBillService; +import org.nl.wms.warehouse_management.service.dao.IOStorInv; +import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl; +import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper; +import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper; +import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper; +import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto; +import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; + +/** + * @author dsh + * 2025/5/29 + */ +@Service +public class OutBillServiceImpl extends ServiceImpl implements IOutBillService { + + @Resource + private IOStorInvMapper ioStorInvMapper; + + @Resource + private IOStorInvDisMapper ioStorInvDisMapper; + + /** + * 载具扩展属性mapper + */ + @Resource + private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper; + + @Resource + private IBsrealStorattrService iBsrealStorattrService; + + @Resource + private IOStorInvDtlMapper ioStorInvDtlMapper; + + + @Override + public IPage pageQuery(Map whereJson, PageQuery page, String[] stor_id, String[] bill_status, String[] bill_type) { + HashMap map = new HashMap<>(whereJson); + + if (StrUtil.isNotEmpty(map.get("bill_code"))) { + map.put("bill_code", "%" + map.get("bill_code") + "%"); + } + if (StrUtil.isNotEmpty(map.get("is_upload"))) { + map.put("is_upload", map.get("is_upload")); + } + + // 空格查询 + if (StrUtil.isNotEmpty(map.get("pcsn"))) { + // 判断是否有空格 + String pcsn = MapUtil.getStr(map, "pcsn"); + + boolean matches = pcsn.matches(".*\\s.*"); + + if (matches) { + String[] s = pcsn.split(" "); + String pcsn_in = String.join("','", Arrays.asList(s)); + + map.put("pcsn_in", "('"+pcsn_in+"')"); + map.put("pcsn", ""); + } else { + map.put("pcsn", "%" + map.get("pcsn") + "%"); + } + } + + if (ObjectUtil.isNotEmpty(stor_id)) { + String storIds = "("; + for (int i = 0; i < stor_id.length; i++) { + if (i != stor_id.length - 1) { + storIds += "'" + stor_id[i] + "',"; + } else { + storIds += "'" + stor_id[i] + "')"; + } + } + map.put("storIds", storIds); + } + + if (ObjectUtil.isNotEmpty(bill_status)) { + String billStatuses = "("; + for (int i = 0; i < bill_status.length; i++) { + if (i != bill_status.length - 1) { + billStatuses += "'" + bill_status[i] + "',"; + } else { + billStatuses += "'" + bill_status[i] + "')"; + } + } + map.put("billStatuses", billStatuses); + } + + if (ObjectUtil.isNotEmpty(bill_type)) { + String billTypes = "("; + for (int i = 0; i < bill_type.length; i++) { + if (i != bill_type.length - 1) { + billTypes += "'" + bill_type[i] + "',"; + } else { + billTypes += "'" + bill_type[i] + "')"; + } + } + map.put("billTypes", billTypes); + } + + return ioStorInvMapper.queryOutBillPage(new Page<>(page.getPage()+1,page.getSize()),map); + } + + @Override + public IPage getCanuseIvt(Map whereJson, PageQuery page) { + return mdPbStoragevehicleextMapper.getCanuseIvt(new Page<>(page.getPage() + 1, page.getSize()), + whereJson); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String insertDtl(JSONObject map) { +// if(MapUtil.getStr(map,"bill_type").equals("1011")) { +// String iostorinv_id = inserdtlPic(map); +// return iostorinv_id ; +// } + + //明细 + JSONArray array = map.getJSONArray("tableData"); + + map.remove("tableData"); + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String user = map.getString("user"); + if (ObjectUtil.isNotEmpty(user)) { + if ("mes".equals(user)) { + currentUserId = "2"; + nickName = "mes用户"; + } + if ("sap".equals(user)) { + currentUserId = "3"; + nickName = "sap用户"; + } + } + String now = DateUtil.now(); + String iostorinv_id = IdUtil.getStringId(); + String bill_code = CodeUtil.getNewCode("OUT_STORE_CODE"); + + BsrealStorattr bsrealStorattr = iBsrealStorattrService.findById((String) map.get("stor_id")); + map.put("iostorinv_id", iostorinv_id); + map.put("bill_code", bill_code); + map.put("biz_date", map.getString("biz_date").substring(0, 10)); + String bill_type = (String) map.get("bill_type"); + map.put("buss_type", bill_type.substring(0, 4)); + map.put("io_type", IOSEnum.IO_TYPE.code("出库")); + map.put("detail_count", array.size() + ""); + map.put("create_mode", IOSEnum.CREATE_MODE.code("PC产生")); + map.put("stor_code", bsrealStorattr.getStor_code()); + map.put("stor_name", bsrealStorattr.getStor_name()); + map.put("input_optid", currentUserId); + map.put("input_optname", nickName); + map.put("input_time", now); + map.put("update_optid", currentUserId); + map.put("update_optname", nickName); + map.put("update_time", now); + map.put("is_delete", BaseDataEnum.IS_YES_NOT.code("否")); + map.put("is_upload", BaseDataEnum.IS_YES_NOT.code("否")); + if (ObjectUtil.isNotEmpty(user)) { + if (!"mes".equals(user) || "sap".equals(user)) { + Long deptId = SecurityUtils.getDeptId(); + map.put("sysdeptid", deptId); + map.put("syscompanyid", deptId); + } + } + // 主表重量 + double qty = 0.0; + // 明细数 + int num = array.size(); + for (int i = 0; i < array.size(); i++) { + JSONObject row = array.getJSONObject(i); + // 校验计划数量不能为零 + double plan_qty = row.getDoubleValue("qty"); + if (Double.compare(plan_qty, 0.0) == 0) { + throw new BadRequestException("数量不能为0"); + } + + JSONObject ioStorInvDtl = new JSONObject(); + ioStorInvDtl.put("iostorinvdtl_id", IdUtil.getStringId()); + ioStorInvDtl.put("iostorinv_id", iostorinv_id); + ioStorInvDtl.put("seq_no", (i + 1) + ""); + ioStorInvDtl.put("material_id", row.getString("material_id")); + ioStorInvDtl.put("pcsn", row.getString("pcsn")); + ioStorInvDtl.put("bill_status", IOSEnum.BILL_STATUS.code("生成")); + ioStorInvDtl.put("qty_unit_id", row.get("qty_unit_id")); + ioStorInvDtl.put("qty_unit_name", row.getString("qty_unit_name")); + ioStorInvDtl.put("plan_qty", row.get("qty")); + ioStorInvDtl.put("remark", row.getString("remark")); + ioStorInvDtl.put("assign_qty", "0"); + ioStorInvDtl.put("unassign_qty", row.get("qty")); + + ioStorInvDtlMapper.insert(ioStorInvDtl.toJavaObject(IOStorInvDtl.class)); + + qty += ioStorInvDtl.getDoubleValue("plan_qty"); + + } + map.put("total_qty", qty); + map.put("detail_count", num); + + ioStorInvMapper.insert(map.toJavaObject(IOStorInv.class)); + + return iostorinv_id; + } + + @Override + public List getOutBillDtl(Map whereJson) { + return ioStorInvMapper.getIODtl(whereJson); + } + + @Override + public List getOutBillDis(Map whereJson) { + return ioStorInvDisMapper.queryOutBillDisDtl(whereJson); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void allDiv(JSONObject whereJson) { + + //定义需要更新的仓位集合 + HashMap Struct_map = new HashMap(); + String iostorinv_id = whereJson.getString("iostorinv_id"); + + //查询主表信息 + IOStorInv ioStorInv = ioStorInvMapper.selectById(iostorinv_id); + if (ObjectUtil.isEmpty(ioStorInv)) { + throw new BadRequestException("查不到出库单信息"); + } + + String bill_type = ioStorInv.getBill_type(); + + //查询生成和未分配完的明细 + JSONObject queryDtl = new JSONObject(); + queryDtl.put("bill_status", IOSEnum.BILL_STATUS.code("分配完")); + queryDtl.put("unassign_flag", BaseDataEnum.IS_YES_NOT.code("否")); + queryDtl.put("iostorinv_id", iostorinv_id); + queryDtl.put("iostorinvdtl_id", whereJson.getString("iostorinvdtl_id")); + List dtls = ioStorInvMapper.getIODtl(queryDtl); + if (ObjectUtil.isEmpty(dtls)) { + throw new BadRequestException("当前订单无可分配出库明细"); + } + + for (int i = 0; i < dtls.size(); i++) { + IOStorInvDtlDto dtl = dtls.get(i); + double unassign_qty = dtl.getUnassign_qty().doubleValue(); + String pcsn = dtl.getPcsn(); + /* + * 分配规则: + * 1.按批次先进先出 + * 2.相同批次载具量小优先 + */ + + + if (StrUtil.isBlank(pcsn)) { + throw new BadRequestException("出库明细存在批次号为空"); + } + // 根据批次号查询库存可用 + BigDecimal canuseSum = mdPbStoragevehicleextMapper.queryCanuseSumByPcsn(pcsn); + + if (canuseSum.doubleValue() 0) { +// // 1.有销售订单号 +// jsonMap.put("flag", "1"); +// jsonMap.put("material_id", dtl.getString("material_id")); +// jsonMap.put("sale_order_name", dtl.getString("source_bill_code")); +// jsonMap.put("sect_id", whereJson.getString("sect_id")); +// jsonMap.put("stor_id", whereJson.getString("stor_id")); +// +// JSONObject jsonOneIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0); +// if (ObjectUtil.isEmpty(jsonOneIvt)) { +// throw new BadRequestException("库存不足"); +// } +// +// // 查询这一巷道所有此物料此库存此销售订单的库存 +// jsonMap.put("flag", "2"); +// jsonMap.put("row_num", jsonOneIvt.getString("row_num")); +// jsonMap.put("block_num", jsonOneIvt.getString("block_num")); +// JSONArray ivtAllArr = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().getResultJSONArray(0); +// +// for (int j = 0; j < ivtAllArr.size(); j++) { +// JSONObject ivt = ivtAllArr.getJSONObject(j); +// double canuse_qty = ivt.getDoubleValue("canuse_qty"); +// assign_qty = NumberUtil.add(assign_qty, canuse_qty); +// +// if (unassign_qty >= canuse_qty) { +// unassign_qty = NumberUtil.sub(unassign_qty, canuse_qty); +// } else { +// unassign_qty = 0; +// } +// +// // 查询此木箱下的所有子卷 +// jsonMap.put("flag", "3"); +// jsonMap.put("storagevehicle_code", ivt.getString("storagevehicle_code")); +// JSONArray ivtAllArr2 = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().getResultJSONArray(0); +// +// for (int k = 0; k < ivtAllArr2.size(); k++) { +// // 更新库存 +// JSONObject ivt2 = ivtAllArr2.getJSONObject(k); +// ivt2.put("change_qty", ivt2.getDoubleValue("canuse_qty")); +// ivt2.put("bill_type_scode", jo_mst.getString("bill_type")); +// ivt2.put("inv_id", dtl.getString("iostorinv_id")); +// ivt2.put("bill_code", jo_mst.getString("bill_code")); +// ivt2.put("bill_table", "ST_IVT_IOStorInv"); +// storPublicService.IOStor(ivt2, "11"); +// +// //生成分配明细 +// dtl.put("iostorinvdis_id", cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId()); +// dtl.put("sect_id", ivt2.getString("sect_id")); +// dtl.put("sect_code", ivt2.getString("sect_code")); +// dtl.put("sect_name", ivt2.getString("sect_name")); +// dtl.put("struct_id", ivt2.getString("struct_id")); +// dtl.put("struct_code", ivt2.getString("struct_code")); +// dtl.put("struct_name", ivt2.getString("struct_name")); +// dtl.put("pcsn", ivt2.getString("pcsn")); +// dtl.put("box_no", ivt2.getString("storagevehicle_code")); +// dtl.put("storagevehicle_id", ivt2.getString("storagevehicle_id")); +// dtl.put("storagevehicle_code", ivt2.getString("storagevehicle_code")); +// dtl.put("storagevehicle_type", ivt2.getString("storagevehicle_type")); +// dtl.put("is_issued", "0"); +// dtl.put("plan_qty", ivt2.getDoubleValue("change_qty")); +// dtl.put("real_qty", ivt2.getDoubleValue("change_qty")); +// dtl.put("is_overdue", ivt2.getString("is_overdue")); +// dtl.put("instorage_time", ivt2.getString("instorage_time")); +// +// // 如果所属仓位是虚拟区 则将分配明细状态变为生成 +// JSONObject jsonSect = wo_sect.query("sect_id = '" + ivt2.getString("sect_id") + "'").uniqueResult(0); +// if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { +// dtl.put("work_status", "01"); +// } else { +// dtl.put("work_status", "00"); +// } +// +// if (jo_mst.getString("is_overdue").equals("1")) { +// // 判断是否超期 +// if (ivt2.getString("is_overdue").equals("1")) { +// dtl.put("work_status", "01"); +// } +// } +// wo_dis.insert(dtl); +// } +// //记录需锁定的仓位 +// Struct_map.put(ivt.getString("struct_id"), ivt); +// // 为零结束 +// if (unassign_qty == 0) { +// break; +// } +// } +// } +// +// } else { +// // 确定子卷: 根据子卷找到库存出掉 +// jsonMap.put("flag", "1"); +// jsonMap.put("material_id", dtl.getString("material_id")); +// jsonMap.put("pcsn", dtl.getString("pcsn")); +// jsonMap.put("box_no", dtl.getString("box_no")); +// jsonMap.put("sect_id", whereJson.getString("sect_id")); +// jsonMap.put("stor_id", whereJson.getString("stor_id")); +// +// JSONObject jsonIvt = WQL.getWO("ST_OUTIVT01").addParamMap(jsonMap).process().uniqueResult(0); +// if (ObjectUtil.isEmpty(jsonIvt)) { +// throw new BadRequestException("库存不足"); +// } +// +// double canuse_qty ; +// if (StrUtil.equals(bill_type, "1011")) { +// canuse_qty = dtl.getDoubleValue("plan_qty"); +// } else { +// canuse_qty = jsonIvt.getDoubleValue("canuse_qty"); +// } +// +// jsonIvt.put("change_qty", canuse_qty + ""); +// unassign_qty = 0; +// assign_qty = NumberUtil.add(assign_qty, canuse_qty); +// +// //更新库存 +// jsonIvt.put("bill_type_scode", jo_mst.getString("bill_type")); +// jsonIvt.put("inv_id", dtl.getString("iostorinv_id")); +// jsonIvt.put("bill_code", jo_mst.getString("bill_code")); +// jsonIvt.put("bill_table", "ST_IVT_IOStorInv"); +// storPublicService.IOStor(jsonIvt, "11"); +// //生成分配明细 +// dtl.put("iostorinvdis_id", cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId()); +// dtl.put("sect_id", jsonIvt.getString("sect_id")); +// dtl.put("sect_code", jsonIvt.getString("sect_code")); +// dtl.put("sect_name", jsonIvt.getString("sect_name")); +// dtl.put("struct_id", jsonIvt.getString("struct_id")); +// dtl.put("struct_code", jsonIvt.getString("struct_code")); +// dtl.put("struct_name", jsonIvt.getString("struct_name")); +// dtl.put("pcsn", jsonIvt.getString("pcsn")); +// dtl.put("box_no", jsonIvt.getString("storagevehicle_code")); +// dtl.put("storagevehicle_id", jsonIvt.getString("storagevehicle_id")); +// dtl.put("storagevehicle_code", jsonIvt.getString("storagevehicle_code")); +// dtl.put("storagevehicle_type", jsonIvt.getString("storagevehicle_type")); +// dtl.put("is_issued", "0"); +// dtl.put("plan_qty", jsonIvt.getDoubleValue("change_qty")); +// dtl.put("real_qty", jsonIvt.getDoubleValue("change_qty")); +// dtl.put("is_overdue", jsonIvt.getString("is_overdue")); +// dtl.put("instorage_time", jsonIvt.getString("instorage_time")); +// // 如果所属仓位是虚拟区 则将分配明细状态变为生成 +// JSONObject jsonSect = wo_sect.query("sect_id = '" + jsonIvt.getString("sect_id") + "'").uniqueResult(0); +// if (StrUtil.equals(jsonSect.getString("sect_type_attr"), "09")) { +// dtl.put("work_status", "01"); +// } else { +// dtl.put("work_status", "00"); +// } +// +// // 判断是否超期 +// if (jo_mst.getString("is_overdue").equals("1")) { +// if (jsonIvt.getString("is_overdue").equals("1")) { +// dtl.put("work_status", "01"); +// } +// } +// +// wo_dis.insert(dtl); +// +// //记录需锁定的仓位 (如果此明细有相同物料的且子卷号不能为空的则在最后一个明细分配完成后锁定仓位) +// JSONObject map = new JSONObject(); +// map.put("flag", "5"); +// map.put("material_id", dtl.getString("material_id")); +// map.put("box_no", dtl.getString("box_no")); +// map.put("iostorinv_id", iostorinv_id); +// map.put("iostorinvdtl_id", dtl.getString("iostorinvdtl_id")); +// JSONArray dtlArr = WQL.getWO("ST_OUTIVT01").addParamMap(map).process().getResultJSONArray(0); +// if (dtlArr.size() == 0) { +// Struct_map.put(jsonIvt.getString("struct_id"), jsonIvt); +// } +// +// } +// HashMap map_dtl = new HashMap(); +// //更新明细 +// map_dtl.put("unassign_qty", unassign_qty + ""); +// map_dtl.put("assign_qty", assign_qty + ""); +// if (unassign_qty == 0) { +// map_dtl.put("bill_status", "40"); +// } else { +// map_dtl.put("bill_status", "30"); +// } +// wo_dtl.update(map_dtl, "iostorinvdtl_id='" + dtl.getString("iostorinvdtl_id") + "'"); +// +// //更新主表状态 +// this.updateMststatus(iostorinv_id); +// +// //锁定起点点位、仓位 +// Collection c = Struct_map.values(); +// Iterator it = c.iterator(); +// JSONObject from_start = new JSONObject(); +// from_start.put("lock_type", "3"); +// for (; it.hasNext(); ) { +// JSONObject Struct = it.next(); +// from_start.put("struct_id", Struct.getString("struct_id")); +// from_start.put("inv_type", jo_mst.getString("bill_type")); +// from_start.put("inv_id", jo_mst.getString("iostorinv_id")); +// from_start.put("inv_code", jo_mst.getString("bill_code")); +// storPublicService.updateStructAndPoint(from_start); +// } + } + } + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java index 83b7268..c3ef57f 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java @@ -19,7 +19,9 @@ import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.basedata_manage.enums.BaseDataEnum; import org.nl.wms.basedata_manage.service.IBsrealStorattrService; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo; @@ -29,6 +31,8 @@ import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; import org.nl.wms.sch_manage.service.util.AbstractTask; import org.nl.wms.sch_manage.service.util.tasks.StInTask; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.nl.wms.warehouse_management.enums.IOSEnum; import org.nl.wms.warehouse_management.service.IRawAssistIStorService; import org.nl.wms.warehouse_management.service.dao.GroupPlate; import org.nl.wms.warehouse_management.service.dao.IOStorInv; @@ -78,6 +82,9 @@ public class RawAssistIStorServiceImpl extends ServiceImpl getBillDtl(Map whereJson, PageQuery page) { - return ioStorInvMapper.getBillDtl(new Page<>(page.getPage()+1,page.getSize()),whereJson); + return ioStorInvMapper.getGroupPlate(new Page<>(page.getPage()+1,page.getSize()),whereJson); } @Override @@ -142,7 +149,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl 0) { -// throw new BadRequestException("该木箱已经分配过货位,无法继续分配!"); -// } - //判断该木箱是否已经存在库内 -// JSONObject str_jo = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + row.get("package_box_sn") + "'").uniqueResult(0); - //判断该载具编号是否已经存在库内 Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class).eq(Structattr::getStoragevehicle_code,row.get("storagevehicle_code"))); if (ObjectUtil.isNotEmpty(structattr)) { @@ -209,8 +207,8 @@ public class RawAssistIStorServiceImpl extends ServiceImpl(IOStorInvDtl.class).eq(IOStorInvDtl::getIostorinv_id,iostorinv_id)); ioStorInvDisMapper.delete(new LambdaQueryWrapper<>(IOStorInvDis.class).eq(IOStorInvDis::getIostorinv_id,iostorinv_id)); ArrayList rows = (ArrayList) whereJson.get("tableData"); -// for (int i = 0; i < rows.size(); i++) { -// HashMap row = rows.get(i); -// row.put("iostorinvdtl_id", cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId() + ""); -// row.put("iostorinv_id", iostorinv_id); -// row.put("seq_no", (i + 1) + ""); -// JSONObject material = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + row.get("product_name") + "'").uniqueResult(0); -// if (ObjectUtil.isEmpty(material)) { -// throw new BadRequestException("LMS系统不存在物料:【" + row.get("product_name") + "】,请确认物料是否正确,或SAP系统是否推送到LMS系统"); -// } -// row.put("material_id", material.getString("material_id")); -// row.put("pcsn", row.get("container_name")); -// row.put("bill_status", "10"); -// row.put("quality_scode", "01"); -// row.put("qty_unit_id", material.getString("base_unit_id")); -// JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id = '" + material.getString("base_unit_id") + "'").uniqueResult(0); -// row.put("qty_unit_name", unit.getString("unit_name")); -// row.put("assign_qty", row.get("net_weight")); -// row.put("plan_qty", row.get("net_weight")); -// String net_weight = row.get("net_weight"); -// row.put("box_no", row.get("package_box_sn")); -// -// WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").insert(row); -// -// JSONObject dis = new JSONObject(); -// dis.put("iostorinvdis_id", cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId() + ""); -// dis.put("iostorinv_id", iostorinv_id); -// dis.put("iostorinvdtl_id", row.get("iostorinvdtl_id")); -// dis.put("seq_no", 1); -// dis.put("material_id", row.get("material_id")); -// dis.put("pcsn", row.get("pcsn")); -// dis.put("box_no", row.get("box_no")); -// dis.put("quality_scode", row.get("quality_scode")); -// dis.put("work_status", "00"); -// dis.put("qty_unit_id", material.getString("base_unit_id")); -// dis.put("qty_unit_name", unit.getString("unit_name")); -// dis.put("plan_qty", row.get("plan_qty")); -// WQLObject.getWQLObject("ST_IVT_IOStorInvDis").insert(dis); -// } + for (int i = 0; i < rows.size(); i++) { HashMap row = rows.get(i); JSONObject ioStorInvDtl = new JSONObject(); @@ -328,21 +285,11 @@ public class RawAssistIStorServiceImpl extends ServiceImpl 0) { -// throw new BadRequestException("该木箱已经分配过货位,无法继续分配!"); -// } - //判断该木箱是否已经存在库内 -// JSONObject str_jo = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + row.get("package_box_sn") + "'").uniqueResult(0); //判断该载具编号是否已经存在库内 Structattr structattr = iStructattrService.getOne(new LambdaQueryWrapper<>(Structattr.class).eq(Structattr::getStoragevehicle_code,row.get("storagevehicle_code"))); @@ -360,8 +307,8 @@ public class RawAssistIStorServiceImpl extends ServiceImpl(IOStorInvDis.class) .set(IOStorInvDis::getSect_id,dis_map.getString("sect_id")) .set(IOStorInvDis::getSect_code,dis_map.getString("sect_code")) @@ -469,7 +421,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl0 ? "20" : "30"); + ios.setUpdate_optid(currentUserId); + ios.setUpdate_optname(nickName); + ios.setUpdate_time(now); + ios.setBill_status(disCount>0 ? IOSEnum.BILL_STATUS.code("分配中") : IOSEnum.BILL_STATUS.code("分配完")); ioStorInvMapper.updateById(ios); } - @Override - public void allDivStruct(JSONObject form) { - - } - @Override @Transactional(rollbackFor = Exception.class) public void unDivStruct(Map whereJson) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + ArrayList rows = (ArrayList) whereJson.get("tableMater"); HashMap jo = rows.get(0); @@ -520,7 +474,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl0 ? "20" : "10"); + ios.setUpdate_optid(currentUserId); + ios.setUpdate_optname(nickName); + ios.setUpdate_time(now); + ios.setBill_status(disCount>0 ? IOSEnum.BILL_STATUS.code("分配中") : IOSEnum.BILL_STATUS.code("生成")); ioStorInvMapper.updateById(ios); } @@ -559,10 +516,10 @@ public class RawAssistIStorServiceImpl extends ServiceImpl(GroupPlate.class) - .eq(GroupPlate::getStoragevehicle_code,map.get("storagevehicle_code")) - ); - task_form.put("group_id", groupPlate.getGroup_id()); +// GroupPlate groupPlate = groupPlateMapper.selectOne(new LambdaQueryWrapper<>(GroupPlate.class) +// .eq(GroupPlate::getStoragevehicle_code,map.get("storagevehicle_code")) +// ); +// task_form.put("group_id", groupPlate.getGroup_id()); StInTask stInTask = SpringContextHolder.getBean("STInTask"); @@ -571,69 +528,91 @@ public class RawAssistIStorServiceImpl extends ServiceImpl(IOStorInv.class) .eq(IOStorInv::getIostorinv_id,whereJson.get("iostorinv_id")) ); - if (ObjectUtil.isNotEmpty(ioStorInv) && !"20".equals(ioStorInv.getBill_status()) && !"30".equals(ioStorInv.getBill_status())){ - throw new BadRequestException("主表状态必须为分配中、分配完!"); + if (ObjectUtil.isNotEmpty(ioStorInv) && !IOSEnum.BILL_STATUS.code("分配完").equals(ioStorInv.getBill_status())){ + throw new BadRequestException("主表状态必须为分配完!"); } - // 分配明细中 任务状态必须全部完成 - int count = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) + //解锁原货位点位 + List storInvDisList = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<>(IOStorInvDis.class) .eq(IOStorInvDis::getIostorinv_id,whereJson.get("iostorinv_id")) - .lt(IOStorInvDis::getWork_status,"99") ); - if (count > 0){ - throw new BadRequestException("存在未完成的作业"); + + for (IOStorInvDis ioStorInvDis: storInvDisList){ + if (StrUtil.isNotBlank(ioStorInvDis.getStruct_code())){ + JSONObject finish_map = new JSONObject(); + finish_map.put("struct_code",ioStorInvDis.getStruct_code()); + finish_map.put("storagevehicle_code",ioStorInvDis.getStoragevehicle_code()); + finish_map.put("inv_type", null); + finish_map.put("inv_id", null); + finish_map.put("inv_code", null); + iStructattrService.updateStatusByCode("1",finish_map); + + //修改库存 + List updateIvtList = new ArrayList<>(); + JSONObject jsonIvt = new JSONObject(); + jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE); + jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); + jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); + jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); + jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id()); + jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name()); + jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); + updateIvtList.add(jsonIvt); + iMdPbStoragevehicleextService.updateIvt(updateIvtList); + } + + //更新详情数据 + ioStorInvDisMapper.update(ioStorInvDis,new LambdaUpdateWrapper<>(IOStorInvDis.class) + .set(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) + .set(IOStorInvDis::getReal_qty,ioStorInvDis.getPlan_qty()) + .eq(IOStorInvDis::getIostorinvdis_id,ioStorInvDis.getIostorinvdis_id()) + .ne(IOStorInvDis::getWork_status,IOSEnum.INBILL_DIS_STATUS.code("完成")) + ); + + ioStorInvDtlMapper.update(new IOStorInvDtl(),new LambdaUpdateWrapper<>(IOStorInvDtl.class) + .set(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("完成")) + .set(IOStorInvDtl::getReal_qty,ioStorInvDis.getPlan_qty()) + .eq(IOStorInvDtl::getIostorinvdtl_id,ioStorInvDis.getIostorinvdtl_id()) + .ne(IOStorInvDtl::getBill_status,IOSEnum.BILL_STATUS.code("完成")) + ); + + //更新组盘记录表 + groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class) + .set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库")) + .eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn()) + .eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id()) + .eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code()) + ); } - //将明细全部变成99 - ioStorInvDtlMapper.update(new IOStorInvDtl(),new LambdaUpdateWrapper<>(IOStorInvDtl.class) - .set(IOStorInvDtl::getBill_status,"99") - .eq(IOStorInvDtl::getIostorinv_id,whereJson.get("iostorinv_id")) + //更新主表状态 + ioStorInvMapper.update(ioStorInv,new LambdaUpdateWrapper<>(IOStorInv.class) + .set(IOStorInv::getBill_status,IOSEnum.BILL_STATUS.code("完成")) + .set(IOStorInv::getConfirm_optid,currentUserId) + .set(IOStorInv::getConfirm_optname,nickName) + .set(IOStorInv::getConfirm_time,now) + .eq(IOStorInv::getIostorinv_id,whereJson.get("iostorinv_id")) ); - - } - - @Override - public void backConfirm(Map whereJson) { - } @Override @@ -643,11 +622,6 @@ public class RawAssistIStorServiceImpl extends ServiceImpl structattrList = iStructattrService.list(new LambdaQueryWrapper<>(Structattr.class) .eq(Structattr::getSect_id,sect_id) - .eq(Structattr::getLock_type,"00") + .eq(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定")) + .isNull(Structattr::getStoragevehicle_code).or().eq(Structattr::getStoragevehicle_code,"") ); if (ObjectUtil.isEmpty(structattrList)){ throw new BadRequestException("该库区没有仓位"); @@ -681,7 +656,8 @@ public class RawAssistIStorServiceImpl extends ServiceImpl getInBillTaskDtl(Map whereJson) { + String iostorinvdtl_id = (String) whereJson.get("iostorinvdtl_id"); + return ioStorInvDisMapper.getInBillTaskDtl(iostorinvdtl_id); } } diff --git a/wms/nladmin-ui/src/views/wms/pub/MaterDialog.vue b/wms/nladmin-ui/src/views/wms/pub/MaterDialog.vue new file mode 100644 index 0000000..0a7d3f0 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/pub/MaterDialog.vue @@ -0,0 +1,169 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/inbill/ViewDialog.vue b/wms/nladmin-ui/src/views/wms/st/inbill/ViewDialog.vue index e2fe290..6179bb9 100644 --- a/wms/nladmin-ui/src/views/wms/st/inbill/ViewDialog.vue +++ b/wms/nladmin-ui/src/views/wms/st/inbill/ViewDialog.vue @@ -138,12 +138,11 @@ - + - + - @@ -155,6 +154,7 @@ import { crud } from '@crud/crud' import checkoutbill from '@/views/wms/st/outbill/checkoutbill' import rawassist from '@/views/wms/st/inbill/rawassist' import crudBsrealstorattr from '@/views/wms/basedata/bsrealstorattr/bsrealstorattr' +import { getInBillTaskDtl } from './rawassist' export default { name: 'ViewDialog', @@ -245,7 +245,7 @@ export default { }, queryTableDdis() { if (this.currentdtl !== null) { - checkoutbill.getOutBillTask({ 'iostorinvdtl_id': this.currentdtl.iostorinvdtl_id }).then(res => { + rawassist.getInBillTaskDtl({ 'iostorinvdtl_id': this.currentdtl.iostorinvdtl_id }).then(res => { this.tabledis = res }).catch(() => { this.tabledis = [] diff --git a/wms/nladmin-ui/src/views/wms/st/inbill/index.vue b/wms/nladmin-ui/src/views/wms/st/inbill/index.vue index bcdc8df..6aafc5d 100644 --- a/wms/nladmin-ui/src/views/wms/st/inbill/index.vue +++ b/wms/nladmin-ui/src/views/wms/st/inbill/index.vue @@ -339,7 +339,7 @@ export default { } else { this.dis_flag = true } - if (currentRow.bill_status === '30' || currentRow.bill_status === '40') { + if (currentRow.bill_status === '30') { this.task_flag = false } else { this.task_flag = true diff --git a/wms/nladmin-ui/src/views/wms/st/inbill/rawassist.js b/wms/nladmin-ui/src/views/wms/st/inbill/rawassist.js index 6db399b..09025cb 100644 --- a/wms/nladmin-ui/src/views/wms/st/inbill/rawassist.js +++ b/wms/nladmin-ui/src/views/wms/st/inbill/rawassist.js @@ -184,6 +184,13 @@ export function backConfirm(data) { }) } -export default { add, edit, del, insertDtl, getIODtl, commit, checkVehicle, - deleteDisDtl, getDisDtl, divStruct, allDivStruct, unDivStruct, divPoint, - queryTask, bucketDtl, updateTask, delTask, reIssueTask, confirmTask, cancelTask, confirm, backConfirm } +export function getInBillTaskDtl(data) { + return request({ + url: '/api/in/rawAssist/getInBillTaskDtl', + method: 'post', + data + }) +} + +export default { add, edit, del, insertDtl, getIODtl, commit, + deleteDisDtl, getDisDtl, divStruct, unDivStruct, divPoint, confirm, getInBillTaskDtl } diff --git a/wms/nladmin-ui/src/views/wms/st/outbill/AddDialog.vue b/wms/nladmin-ui/src/views/wms/st/outbill/AddDialog.vue new file mode 100644 index 0000000..a831dfb --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/outbill/AddDialog.vue @@ -0,0 +1,394 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/outbill/AddDtl.vue b/wms/nladmin-ui/src/views/wms/st/outbill/AddDtl.vue new file mode 100644 index 0000000..c746a7f --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/outbill/AddDtl.vue @@ -0,0 +1,213 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue b/wms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue new file mode 100644 index 0000000..ceb1648 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/outbill/DivDialog.vue @@ -0,0 +1,558 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/outbill/StructIvt.vue b/wms/nladmin-ui/src/views/wms/st/outbill/StructIvt.vue new file mode 100644 index 0000000..169e845 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/outbill/StructIvt.vue @@ -0,0 +1,300 @@ + + + diff --git a/wms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue b/wms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue new file mode 100644 index 0000000..43584de --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/outbill/ViewDialog.vue @@ -0,0 +1,307 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js b/wms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js index bc41b9b..5200967 100644 --- a/wms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js +++ b/wms/nladmin-ui/src/views/wms/st/outbill/checkoutbill.js @@ -38,15 +38,6 @@ export function getOutBillDis(params) { params }) } - -export function getOutBillDis2(params) { - return request({ - url: '/api/checkoutbill/getOutBillDis2', - method: 'get', - params - }) -} - export function getOutBillDisDtl(params) { return request({ url: '/api/checkoutbill/getOutBillDisDtl', @@ -262,4 +253,4 @@ export function saveUpdate(data) { data }) } -export default { add, edit, del, allDiv, allCancel, getOutBillDtl, getOutBillDis, getOutBillDis2, setPoint, oneSetPoint, getOutBillTask, getStructIvt, manualDiv, confirm, issueTask, finishTask, cancleTaskfinish, getInvTypes, paramByCodeType, schAreaType, backConfirm, getOutBillDisDtl, getType, allDivOne, moneySubmit, getDisNum, queryBox, getOutBillTask2, oneCancel, cancelTask, allSetPoint, oneSetPoint2, outReturn, updataIsOverdue, excelImport, saveUpdate } +export default { add, edit, del, allDiv, allCancel, getOutBillDtl, getOutBillDis, setPoint, oneSetPoint, getOutBillTask, getStructIvt, manualDiv, confirm, issueTask, finishTask, cancleTaskfinish, getInvTypes, paramByCodeType, schAreaType, backConfirm, getOutBillDisDtl, getType, allDivOne, moneySubmit, getDisNum, queryBox, getOutBillTask2, oneCancel, cancelTask, allSetPoint, oneSetPoint2, outReturn, updataIsOverdue, excelImport, saveUpdate } diff --git a/wms/nladmin-ui/src/views/wms/st/outbill/index.vue b/wms/nladmin-ui/src/views/wms/st/outbill/index.vue new file mode 100644 index 0000000..c33f3d2 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/outbill/index.vue @@ -0,0 +1,429 @@ + + + +