diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java index f5fd7990..805b9aab 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java @@ -1,5 +1,6 @@ package org.nl.config; +import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.nl.common.enums.AcsTaskEnum; import org.nl.modules.wql.util.SpringContextHolder; @@ -10,14 +11,15 @@ import org.nl.wms.product_manage.sch.tasks.WashMachineryTask; import org.nl.wms.product_manage.sch.tasks.callMaterial.WrapCallMaterialTask; import org.nl.wms.product_manage.sch.tasks.sendEmpty.WrapSendEmptyTask; import org.nl.wms.product_manage.sch.tasks.sendMaterial.PlotterSendMaterialTask; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.SmartLifecycle; import org.springframework.context.annotation.Configuration; @Configuration @Slf4j +@Data public class ConventConfig implements SmartLifecycle { - @Override public void start() { AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_FULL, SpringContextHolder.getBean(SpeFullTask.class)); @@ -26,7 +28,7 @@ public class ConventConfig implements SmartLifecycle { AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_SEND_FULL, SpringContextHolder.getBean(PlotterSendMaterialTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_CALL_FULL, SpringContextHolder.getBean(WrapCallMaterialTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_SEND_EMP, SpringContextHolder.getBean(WrapSendEmptyTask.class)); - System.out.println("初始化Task_Collent完成"+AcsToWmsServiceImpl.Task_Collent.size()); + System.out.println("初始化Task_Collent完成777"+AcsToWmsServiceImpl.Task_Collent.size()); } @Override diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java index fa14fc08..50b5c3cd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java @@ -181,7 +181,7 @@ public class AgvInstService { schBaseTask.setBarcodeArr(cacheVehile); schBaseTask.setPoint_code1(startPoint); schBaseTask.setIs_send(true); - schBaseTask.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode()); + schBaseTask.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode()); schBaseTask.setPoint_code3(startPoint); schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); schBaseTask.setUpdate_time(new Date()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/xml/MdPbBucketrecordMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/xml/MdPbBucketrecordMapper.xml index ce376b97..7456c19c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/xml/MdPbBucketrecordMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/mapper/xml/MdPbBucketrecordMapper.xml @@ -21,6 +21,9 @@ and re.status = #{status} + + and re.storagevehicle_code = #{storagevehicle_code} + and ( re.bucketunique like '{bucketunique}%$' ) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java index fb325516..2d985e25 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java @@ -270,38 +270,14 @@ public class SpeEmpTask extends AbstractAcsTask { }); Merge.addAll(notMerge); } - Map> collect = Merge.stream().collect(Collectors.groupingBy(SchBaseTask::getTask_group_id)); - ArrayList result = new ArrayList<>(); - for (List value : collect.values()) { - updateAcsTaskType(value); - result.addAll(value); - } - return result; + updateAcsTaskType(Merge); + return Merge; } private void updateAcsTaskType(List value) { - if (value.size() > 1){ - boolean tag = true; - for (SchBaseTask task : value) { - if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode())){ - task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode()); - } - if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode())){ - task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode()); - } - if (tag){task.setIs_send(true);tag = false;}else {task.setIs_send(false); } - } - } - if (value.size() == 1){ - for (SchBaseTask task : value) { - if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode())){ - task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode()); - } - if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode())){ - task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode()); - } - task.setIs_send(true); - } + for (SchBaseTask task : value) { + task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode()); + task.setIs_send(true); } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java index 1fd04bbe..952cbd0e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java @@ -1,5 +1,6 @@ package org.nl.wms.scheduler_manage.service.scheduler; +import lombok.Data; import lombok.SneakyThrows; import org.apache.poi.ss.formula.functions.T; import org.jetbrains.annotations.NotNull; @@ -10,6 +11,7 @@ import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.ProcessElement; import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.core.io.FileSystemResourceLoader; import org.springframework.core.io.Resource; @@ -19,6 +21,7 @@ import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamReader; +import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; @@ -35,8 +38,14 @@ import java.util.function.Function; @Service public class SchedulerService implements BeanPostProcessor { + private static String schedulerFile; + private static Map converterMap =new HashMap<>(); + @Value(("${schedulerFile}")) + public void setSchedulerFile(String schedulerFile) { + SchedulerService.schedulerFile = schedulerFile; + } public List all(){ List readall = XmlReadUtil.readall(); @@ -78,7 +87,7 @@ public class SchedulerService implements BeanPostProcessor { } return null; }; - ProcessElement processElement = readXml("classpath:/scheduler.xml", function); + ProcessElement processElement = readXml(schedulerFile, function); return processElement; } @@ -102,15 +111,15 @@ public class SchedulerService implements BeanPostProcessor { } return list; }; - List baseElements = readXml("classpath:/scheduler.xml", function); + List baseElements = readXml(schedulerFile, function); return baseElements; } private static T readXml(String path, Function function) throws IOException, XMLStreamException { FileInputStream inputStream = null; InputStreamReader streamReader = null; - Resource resource = loader.getResource(path); try { - inputStream = new FileInputStream(resource.getFile()); + File file = new File(path); + inputStream = new FileInputStream(file); streamReader = new InputStreamReader(inputStream, "UTF-8"); //TODO:schama校验 XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(streamReader); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/check/StIvtCheckmstCpController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/check/StIvtCheckmstCpController.java index 9cd8d2e7..7c77a392 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/check/StIvtCheckmstCpController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/check/StIvtCheckmstCpController.java @@ -1,8 +1,18 @@ package org.nl.wms.storage_manage.productmanage.controller.check; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.ApiOperation; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckmstCpService; +import org.nl.wms.storage_manage.productmanage.service.check.dto.CheckQueryMst; +import org.nl.wms.storage_manage.rawmanage.service.check.IStIvtCheckmstYlService; +import org.nl.wms.storage_manage.rawmanage.service.check.dto.CheckQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; /** *

@@ -13,8 +23,95 @@ import org.springframework.web.bind.annotation.RestController; * @since 2023-05-04 */ @RestController -@RequestMapping("/stIvtCheckmstCp") +@RequestMapping("/api/stIvtCheckmstCp") public class StIvtCheckmstCpController { + @Autowired + private IStIvtCheckmstCpService iStIvtCheckmstCpService; + + @GetMapping + @Log("查询盘点单主表") + @ApiOperation("查询盘点单主表") + public ResponseEntity query(CheckQueryMst query, PageQuery page) { + return new ResponseEntity<>(iStIvtCheckmstCpService.pageQuery(query, page), HttpStatus.OK); + } + + @PostMapping + @Log("创建盘点单") + @ApiOperation("创建盘点单") + public ResponseEntity create(@RequestBody JSONObject whereJson) { + iStIvtCheckmstCpService.create(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/getCheckDtl") + @Log("查询盘点明细") + @ApiOperation("查询盘点明细") + public ResponseEntity getCheckDtl(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(iStIvtCheckmstCpService.getCheckDtl(whereJson), HttpStatus.OK); + } + + @PostMapping("/update") + @Log("修改盘点单") + @ApiOperation("修改盘点单") + public ResponseEntity update(@RequestBody JSONObject whereJson) { + iStIvtCheckmstCpService.update(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/delete") + @Log("删除盘点单") + @ApiOperation("删除盘点单") + public ResponseEntity delete(@RequestBody Long[] ids){ + iStIvtCheckmstCpService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/saveCheck") + @Log("盘点保存") + @ApiOperation("盘点保存") + public ResponseEntity saveCheck(@RequestBody JSONObject whereJson) { + iStIvtCheckmstCpService.saveCheck(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/confirm") + @Log("盘点强制确认") + @ApiOperation("盘点强制确认") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + iStIvtCheckmstCpService.confirm(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/process1") + @Log("实盘为准,生成损溢单修改库存") + @ApiOperation("实盘为准,生成损溢单修改库存") + public ResponseEntity process1(@RequestBody JSONObject whereJson) { + iStIvtCheckmstCpService.process1(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/process0") + @Log("账务为准") + @ApiOperation("账务为准") + public ResponseEntity process0(@RequestBody JSONObject whereJson) { + iStIvtCheckmstCpService.process0(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/getBucketrecord") + @Log("获取箱") + @ApiOperation("获取箱") + public ResponseEntity getBucketrecord(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(iStIvtCheckmstCpService.getBucketrecord(whereJson),HttpStatus.OK); + } + + @PostMapping("/processBox") + @Log("拆箱盘点保存") + @ApiOperation("拆箱盘点保存") + public ResponseEntity processBox(@RequestBody JSONObject whereJson) { + iStIvtCheckmstCpService.processBox(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/IStIvtCheckdtlCpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/IStIvtCheckdtlCpService.java index 921f3300..030f5b4b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/IStIvtCheckdtlCpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/IStIvtCheckdtlCpService.java @@ -1,7 +1,14 @@ package org.nl.wms.storage_manage.productmanage.service.check; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp; +import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp; +import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckmstYl; + +import java.util.List; +import java.util.Map; /** *

@@ -13,4 +20,7 @@ import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp */ public interface IStIvtCheckdtlCpService extends IService { + double create(JSONArray row, StIvtCheckmstCp mst); + + List getCheckDtl(JSONObject map); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/IStIvtCheckmstCpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/IStIvtCheckmstCpService.java index 8ad652fa..b039d4bd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/IStIvtCheckmstCpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/IStIvtCheckmstCpService.java @@ -1,7 +1,14 @@ package org.nl.wms.storage_manage.productmanage.service.check; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp; +import org.nl.wms.storage_manage.productmanage.service.check.dto.CheckQueryMst; +import org.nl.wms.storage_manage.rawmanage.service.check.dto.CheckQuery; + +import java.util.List; +import java.util.Map; /** *

@@ -12,5 +19,37 @@ import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp * @since 2023-05-04 */ public interface IStIvtCheckmstCpService extends IService { + /** + * 分页查询 + * @param query,page / + * @return JSONObject + */ + Object pageQuery(CheckQueryMst query, PageQuery page); + void create(JSONObject jo); + + List getCheckDtl(JSONObject map); + + void update(JSONObject map); + + /** + * 删除 + * @param ids + * { + * 主表id.. + * } + */ + void delete(Long[] ids); + + void saveCheck(JSONObject jo); + + void confirm(JSONObject jo); + + void process0(JSONObject jo); + + void process1(JSONObject jo); + + Object getBucketrecord(JSONObject whereJson); + + void processBox(JSONObject whereJson); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/StIvtCheckdtlCp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/StIvtCheckdtlCp.java index 4fcc9b32..435c56d2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/StIvtCheckdtlCp.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/StIvtCheckdtlCp.java @@ -1,5 +1,6 @@ package org.nl.wms.storage_manage.productmanage.service.check.dao; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -25,6 +26,7 @@ public class StIvtCheckdtlCp implements Serializable { /** * 盘点单明细id */ + @TableId private String checkdtl_id; /** @@ -115,7 +117,7 @@ public class StIvtCheckdtlCp implements Serializable { /** * 盘点结果 */ - private Boolean check_result; + private String check_result; /** * 盘点人 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/StIvtCheckmstCp.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/StIvtCheckmstCp.java index fc8b70b6..bc70e8cd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/StIvtCheckmstCp.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/StIvtCheckmstCp.java @@ -1,5 +1,6 @@ package org.nl.wms.storage_manage.productmanage.service.check.dao; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import lombok.EqualsAndHashCode; @@ -26,6 +27,7 @@ public class StIvtCheckmstCp implements Serializable { /** * 盘点单标识 */ + @TableId private String check_id; /** @@ -76,7 +78,7 @@ public class StIvtCheckmstCp implements Serializable { /** * 创建时间 */ - private LocalDateTime create_time; + private String create_time; /** * 审核人 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/mapper/StIvtCheckdtlCpMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/mapper/StIvtCheckdtlCpMapper.java index 5895150f..1ef5b4e6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/mapper/StIvtCheckdtlCpMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/mapper/StIvtCheckdtlCpMapper.java @@ -1,8 +1,13 @@ package org.nl.wms.storage_manage.productmanage.service.check.dao.mapper; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp; +import java.util.List; +import java.util.Map; + /** *

* 盘点单明细表 Mapper 接口 @@ -13,4 +18,5 @@ import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp */ public interface StIvtCheckdtlCpMapper extends BaseMapper { + List getCheckDtl(@Param("map") Map map); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/mapper/StIvtCheckdtlCpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/mapper/StIvtCheckdtlCpMapper.xml index db74fdf1..36fb345f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/mapper/StIvtCheckdtlCpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dao/mapper/StIvtCheckdtlCpMapper.xml @@ -1,5 +1,37 @@ - + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dto/CheckQueryMst.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dto/CheckQueryMst.java new file mode 100644 index 00000000..af2312a9 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/dto/CheckQueryMst.java @@ -0,0 +1,35 @@ +package org.nl.wms.storage_manage.productmanage.service.check.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp; +import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckmstYl; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class CheckQueryMst extends BaseQuery { + + + private String stor_id; + + private String status; + + private String check_type; + + private String check_code; + + private Boolean is_delete = false; + + + @Override + public void paramMapping() { + super.doP.put("check_code", QParam.builder().k(new String[]{"check_code"}).type(QueryTEnum.LK).build()); + } + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/impl/StIvtCheckdtlCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/impl/StIvtCheckdtlCpServiceImpl.java index 6be30fdf..ce12448a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/impl/StIvtCheckdtlCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/impl/StIvtCheckdtlCpServiceImpl.java @@ -1,11 +1,35 @@ package org.nl.wms.storage_manage.productmanage.service.check.impl; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.storage_manage.CHECKEnum; +import org.nl.wms.storage_manage.IOSEnum; import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckdtlCpService; import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp; +import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp; import org.nl.wms.storage_manage.productmanage.service.check.dao.mapper.StIvtCheckdtlCpMapper; +import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckdtlYl; +import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckmstYl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + /** *

* 盘点单明细表 服务实现类 @@ -17,4 +41,72 @@ import org.springframework.stereotype.Service; @Service public class StIvtCheckdtlCpServiceImpl extends ServiceImpl implements IStIvtCheckdtlCpService { + @Autowired + private IStIvtSectattrService sectattrService; // 库区服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息服务 + + @Override + public double create(JSONArray rows, StIvtCheckmstCp mst) { + double total_qty = 0; + + if (rows.size() > 0 && ObjectUtil.isNotEmpty(mst)) { + // 先删除在插入 + this.remove(new QueryWrapper().eq("check_id", mst.getCheck_id())); + + for (int i = 0; i < rows.size(); i++) { + String checkdtl_id = IdUtil.getStringId(); + StIvtCheckdtlCp row = rows.getJSONObject(i).toJavaObject(StIvtCheckdtlCp.class); + row.setCheckdtl_id(checkdtl_id); + row.setCheck_id(mst.getCheck_id()); + row.setCheck_code(mst.getCheck_code()); + row.setSeq_no(BigDecimal.valueOf(i + 1)); + + // 获取库区信息 + QueryWrapper sect_wrapper = new QueryWrapper<>(); + sect_wrapper.eq("sect_id", row.getSect_id()); + sect_wrapper.eq("is_used", true); + StIvtSectattr sectDao = sectattrService.getOne(sect_wrapper); + if (ObjectUtil.isEmpty(sectDao)) throw new BadRequestException("库区不存在或未启用!"); + row.setSect_name(sectDao.getSect_name()); + + // 获取仓位信息 + QueryWrapper struct_wrapper = new QueryWrapper<>(); + struct_wrapper.eq("struct_id", row.getStruct_id()); + struct_wrapper.eq("is_used", true); + StIvtStructattr structDao = structattrService.getOne(struct_wrapper); + if (ObjectUtil.isEmpty(structDao)) throw new BadRequestException("仓位不存在或未启用!"); + row.setStruct_name(structDao.getStruct_name()); + + // 获取载具信息 + MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleinfo::getStoragevehicle_code, row.getStoragevehicle_code()) + ); + + row.setStoragevehicle_id(vehicleDao.getStoragevehicle_id()); + row.setStoragevehicle_code(vehicleDao.getStoragevehicle_code()); + row.setStatus(CHECKEnum.DTL_STATUS.code("生成")); + this.save(row); + + //锁定货位 + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("盘点锁")) + .set(StIvtStructattr::getInv_code,mst.getCheck_code()) + .eq(StIvtStructattr::getStruct_id, row.getStruct_id()) + ); + } + } + return total_qty; + } + + @Override + public List getCheckDtl(JSONObject map) { + return this.baseMapper.getCheckDtl(map); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/impl/StIvtCheckmstCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/impl/StIvtCheckmstCpServiceImpl.java index 019b09f7..602b53c5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/impl/StIvtCheckmstCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/check/impl/StIvtCheckmstCpServiceImpl.java @@ -1,10 +1,52 @@ package org.nl.wms.storage_manage.productmanage.service.check.impl; +import cn.hutool.core.date.DateUtil; +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.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.jsonwebtoken.lang.Assert; +import org.jetbrains.annotations.NotNull; +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; +import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.mapper.MdPbBucketrecordMapper; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.storage_manage.CHECKEnum; +import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckdtlCpService; import org.nl.wms.storage_manage.productmanage.service.check.IStIvtCheckmstCpService; +import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckdtlCp; import org.nl.wms.storage_manage.productmanage.service.check.dao.StIvtCheckmstCp; import org.nl.wms.storage_manage.productmanage.service.check.dao.mapper.StIvtCheckmstCpMapper; +import org.nl.wms.storage_manage.productmanage.service.check.dto.CheckQueryMst; +import org.nl.wms.storage_manage.productmanage.service.moreOrLess.IStIvtMoreorlessmstCpService; +import org.nl.wms.storage_manage.rawmanage.service.check.IStIvtCheckdtlYlService; +import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckdtlYl; +import org.nl.wms.storage_manage.rawmanage.service.check.dao.StIvtCheckmstYl; +import org.nl.wms.storage_manage.rawmanage.service.check.dto.CheckQuery; +import org.nl.wms.storage_manage.rawmanage.service.moveOrLess.IStIvtMoreorlessmstYlService; +import org.nl.wms.storage_manage.semimanage.MLEnum; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Map; /** *

@@ -17,4 +59,434 @@ import org.springframework.stereotype.Service; @Service public class StIvtCheckmstCpServiceImpl extends ServiceImpl implements IStIvtCheckmstCpService { + @Autowired + private IStIvtBsrealstorattrService stIvtBsrealstorattrService; // 实物属性服务 + + @Autowired + private IStIvtCheckdtlCpService iStIvtCheckdtlCpService; // 盘点明细服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private IStIvtMoreorlessmstCpService iStIvtMoreorlessmstCpService; // 损益主表服务 + + @Autowired + private IMdPbBucketrecordService iMdPbBucketrecordService; // 箱服务 + + @Autowired(required = false) + private MdPbBucketrecordMapper mdPbBucketrecordMapper; // 箱mapper服务 + + @Override + public Object pageQuery(CheckQueryMst query, PageQuery page) { + // 查询条件 + page.setSort("check_code,DESC"); + // 分页查询 + Page pageQuery = this.page(page.build(), query.build()); + TableDataInfo build = TableDataInfo.build(pageQuery); + return build; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(JSONObject form) { + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + + // 调用主表 插入/更新方法 + StIvtCheckmstCp checkmstCp = packageMstForm(new StIvtCheckmstCp(), form); + this.save(checkmstCp); + + //调用明细表 插入方法 + iStIvtCheckdtlCpService.create(rows, checkmstCp); + + } + + @Override + public List getCheckDtl(JSONObject map) { + return iStIvtCheckdtlCpService.getCheckDtl(map); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(JSONObject form) { + Assert.notNull(new Object[]{form, form.get("check_id")}, "请求参数不能为空"); + StIvtCheckmstCp mst = form.toJavaObject(StIvtCheckmstCp.class); + this.updateById(mst); + + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + // 调用明细表 插入/更新方法 + iStIvtCheckdtlCpService.create(rows, mst); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveCheck(JSONObject whereJson) { + JSONObject form = whereJson.getJSONObject("row"); + JSONArray rows = whereJson.getJSONArray("rows"); + + StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper().eq("check_id", form.getString("check_id")).in("status", new String[]{"10", "30"})); + if (jo_mst == null) { + throw new BadRequestException("盘点单状态异常!"); + } + iStIvtCheckdtlCpService.remove(new QueryWrapper().eq("check_id", form.getString("check_id")).in("status", new String[]{"01", "04"})); + for (int i = 0; i < rows.size(); i++) { + JSONObject jo = rows.getJSONObject(i); + String status = jo.getString("status"); + StIvtCheckdtlCp dtl = jo.toJavaObject(StIvtCheckdtlCp.class); + double base_qty = jo.getDoubleValue("base_qty"); + dtl.setSeq_no(BigDecimal.valueOf(i + 1)); + //已盘点过的明细不再处理 + if ("05,06,07,99".contains(status)) { + iStIvtCheckdtlCpService.updateById(dtl); + continue; + } + dtl.setStatus(CHECKEnum.DTL_STATUS.code("盘点中")); + dtl.setCheck_optid(SecurityUtils.getCurrentUserId()); + dtl.setCheck_optname(SecurityUtils.getCurrentNickName()); + dtl.setCheck_time(DateUtil.now()); + double fac_qty = jo.getDoubleValue("fac_qty"); + //判断盈亏 + if (fac_qty > base_qty) { + dtl.setCheck_result("2"); + } else if (fac_qty < base_qty) { + dtl.setCheck_result("1"); + } else { + dtl.setCheck_result("0"); + } + if (StrUtil.isEmpty(jo.getString("checkdtl_id"))) { + jo.put("checkdtl_id", IdUtil.getStringId()); + } + iStIvtCheckdtlCpService.save(dtl); + } + jo_mst.setDtl_num(BigDecimal.valueOf(rows.size())); + jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("盘点中")); + jo_mst.setIs_nok(false); + List dtl_list = iStIvtCheckdtlCpService.list(new QueryWrapper().eq("check_id", form.getString("check_id")).ne("check_result", "0")); + if (dtl_list.size() != 0) { + jo_mst.setIs_nok(true); + } + this.updateById(jo_mst); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void confirm(JSONObject whereJson) { + + JSONObject form = whereJson.getJSONObject("row"); + JSONArray rows = whereJson.getJSONArray("rows"); + + StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper().eq("check_id", form.getString("check_id")).in("status", new String[]{"10", "30"})); + if (jo_mst == null) { + throw new BadRequestException("盘点单状态异常!"); + } + iStIvtCheckdtlCpService.remove(new QueryWrapper().eq("check_id", form.getString("check_id")).in("status", new String[]{"01", "04"})); + //定义需要需要更新的的点位集合 + HashSet set = new HashSet<>(); + for (int i = 0; i < rows.size(); i++) { + JSONObject jo = rows.getJSONObject(i); + String status = jo.getString("status"); + StIvtCheckdtlCp dtl = jo.toJavaObject(StIvtCheckdtlCp.class); + double base_qty = jo.getDoubleValue("base_qty"); + dtl.setSeq_no(BigDecimal.valueOf(i + 1)); + //已盘点过的明细不再处理 + if ("05,06,07,99".contains(status)) { + iStIvtCheckdtlCpService.updateById(dtl); + continue; + } + dtl.setStatus(CHECKEnum.DTL_STATUS.code("已盘点")); + dtl.setCheck_optid(SecurityUtils.getCurrentUserId()); + dtl.setCheck_optname(SecurityUtils.getCurrentNickName()); + dtl.setCheck_time(DateUtil.now()); + double fac_qty = jo.getDoubleValue("fac_qty"); + //判断盈亏 + if (fac_qty > base_qty) { + dtl.setCheck_result("2"); + } else if (fac_qty < base_qty) { + dtl.setCheck_result("1"); + } else { + dtl.setCheck_result("0"); + dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成")); + } + if (StrUtil.isEmpty(jo.getString("checkdtl_id"))) { + jo.put("checkdtl_id", IdUtil.getStringId()); + } + iStIvtCheckdtlCpService.save(dtl); + set.add(dtl.getStruct_id()); + } + jo_mst.setDtl_num(BigDecimal.valueOf(rows.size())); + + jo_mst.setIs_nok(false); + List dtl_list = iStIvtCheckdtlCpService.list(new QueryWrapper().eq("check_id", form.getString("check_id")).ne("check_result", "0")); + if (dtl_list.size() != 0) { + jo_mst.setIs_nok(true); + } + jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("盘点中")); + List finish_list = iStIvtCheckdtlCpService.list(new QueryWrapper().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"})); + //说明全部确认 + if (finish_list.size() == jo_mst.getDtl_num().intValue()) { + iStIvtCheckdtlCpService.update(new UpdateWrapper().set("status", "99").eq("check_id", form.getString("check_id"))); + + jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成")); + jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId()); + jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName()); + jo_mst.setConfirm_time(DateUtil.now()); + //锁定起点点位、仓位 + set.forEach(struct_id -> structattrService.update(new UpdateWrapper().set("lock_type", "0").set("inv_code", "").eq("struct_id", struct_id))); + } + this.updateById(jo_mst); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void process0(JSONObject whereJson) { + JSONObject form = whereJson.getJSONObject("form"); + JSONObject row = whereJson.getJSONObject("row"); + + StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper().eq("check_id", form.getString("check_id")).ne("status", "99")); + if (jo_mst == null) { + throw new BadRequestException("盘点单状态异常!"); + } + StIvtCheckdtlCp dtl = row.toJavaObject(StIvtCheckdtlCp.class); + dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成")); + dtl.setProcess_optid(SecurityUtils.getCurrentUserId()); + dtl.setProcess_time(DateUtil.now()); + dtl.setProcess_type(CHECKEnum.PROCESS_TYPE.code("账务为准")); + dtl.setIs_process(true); + iStIvtCheckdtlCpService.updateById(dtl); + List finish_list = iStIvtCheckdtlCpService.list(new QueryWrapper().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"})); + //说明全部确认 + if (finish_list.size() == jo_mst.getDtl_num().intValue()) { + iStIvtCheckdtlCpService.update(new UpdateWrapper().set("status", "99").eq("check_id", form.getString("check_id"))); + + jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成")); + jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId()); + jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName()); + jo_mst.setConfirm_time(DateUtil.now()); + //解锁起点点位、仓位 + finish_list.stream() + .map(finish -> finish.getStruct_id()) + .distinct() + .forEach(struct_id -> structattrService.update(new UpdateWrapper().set("inv_code", "").set("lock_type", "0").eq("struct_id", struct_id))); + } + this.updateById(jo_mst); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void process1(JSONObject whereJson) { + JSONObject form = whereJson.getJSONObject("form"); + JSONObject row = whereJson.getJSONObject("row"); + + StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper().eq("check_id", form.getString("check_id")).ne("status", "99")); + StIvtCheckdtlCp dtl = row.toJavaObject(StIvtCheckdtlCp.class); + if (jo_mst == null) { + throw new BadRequestException("盘点单状态异常!"); + } + + //创建损溢单 + JSONObject mol_jo = new JSONObject(); + mol_jo.put("buss_type", MLEnum.BILL_TYPE.code("盘点损溢")); + if (row.getString("check_result").equals("1")) { + mol_jo.put("mol_type", MLEnum.MOL_TYPE.code("损")); + } else { + mol_jo.put("mol_type", MLEnum.MOL_TYPE.code("溢")); + } + mol_jo.put("stor_id", jo_mst.getStor_id()); + mol_jo.put("remark", "盘点单:" + jo_mst.getCheck_code() + "生成的损溢单"); + + //创建明细 + JSONObject dtl_jo = new JSONObject(); + dtl_jo.put("sect_id", dtl.getSect_id()); + dtl_jo.put("material_id", dtl.getMaterial_id()); + dtl_jo.put("struct_id", dtl.getStruct_id()); + dtl_jo.put("qty_unit_id", dtl.getQty_unit_id()); + dtl_jo.put("qty_unit_name", dtl.getQty_unit_name()); + dtl_jo.put("mol_qty", row.getString("check_result").equals("1") ? NumberUtil.sub(dtl.getBase_qty(), dtl.getFac_qty()) : NumberUtil.sub(dtl.getFac_qty(), dtl.getBase_qty())); + dtl_jo.put("source_billdtl_id", dtl.getCheckdtl_id()); + dtl_jo.put("source_bill_type", jo_mst.getCheck_type()); + dtl_jo.put("source_bill_code", jo_mst.getCheck_code()); + dtl_jo.put("source_bill_table", "ST_IVT_CheckMst_CP"); + dtl_jo.put("storagevehicle_id", dtl.getStoragevehicle_id()); + dtl_jo.put("storagevehicle_code", dtl.getStoragevehicle_code()); + JSONArray mol_rows = new JSONArray(); + mol_rows.add(dtl_jo); + mol_jo.put("tableData", mol_rows); + mol_jo.put("auto_confirm", "1"); + //创建损溢单 + iStIvtMoreorlessmstCpService.create(mol_jo); + + + dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成")); + dtl.setProcess_optid(SecurityUtils.getCurrentUserId()); + dtl.setProcess_time(DateUtil.now()); + dtl.setProcess_type(CHECKEnum.PROCESS_TYPE.code("实盘为准")); + dtl.setIs_process(true); + iStIvtCheckdtlCpService.updateById(dtl); + List finish_list = iStIvtCheckdtlCpService.list(new QueryWrapper().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"})); + //说明全部确认 + if (finish_list.size() == jo_mst.getDtl_num().intValue()) { + iStIvtCheckdtlCpService.update(new UpdateWrapper().set("status", "99").eq("check_id", form.getString("check_id"))); + + jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成")); + jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId()); + jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName()); + jo_mst.setConfirm_time(DateUtil.now()); + //解锁起点点位、仓位 + finish_list.stream() + .map(finish -> finish.getStruct_id()) + .distinct() + .forEach(struct_id -> structattrService.update(new UpdateWrapper().set("inv_code", "").set("lock_type", "0").eq("struct_id", struct_id))); + } + this.updateById(jo_mst); + } + + @Override + public Object getBucketrecord(JSONObject whereJson) { + + List maps = mdPbBucketrecordMapper.queryAll(whereJson); + + if (ObjectUtil.isEmpty(maps)) { + JSONObject param = new JSONObject(); + param.put("checkdtl_id", whereJson.getString("checkdtl_id")); + + List checkDtl = this.getCheckDtl(param); + + for (Map json : checkDtl) { + json.put("storage_qty", json.get("base_qty")); + } + + maps = checkDtl; + } + + + return maps; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void processBox(JSONObject whereJson) { + JSONObject form = whereJson.getJSONObject("form"); + JSONArray row = whereJson.getJSONArray("row"); + + StIvtCheckmstCp jo_mst = this.getOne(new QueryWrapper().eq("check_id", form.getString("check_id")).ne("status", "99")); + + StIvtCheckdtlCp dtl = iStIvtCheckdtlCpService.getById(form.getString("checkdtl_id")); + if (jo_mst == null) { + throw new BadRequestException("盘点单状态异常!"); + } + + //创建损溢单 + JSONObject mol_jo = new JSONObject(); + mol_jo.put("buss_type", MLEnum.BILL_TYPE.code("盘点损溢")); + if (dtl.getCheck_result().equals("1")) { + mol_jo.put("mol_type", MLEnum.MOL_TYPE.code("损")); + } else { + mol_jo.put("mol_type", MLEnum.MOL_TYPE.code("溢")); + } + mol_jo.put("stor_id", jo_mst.getStor_id()); + mol_jo.put("remark", "盘点单:" + jo_mst.getCheck_code() + "生成的损溢单"); + + //创建明细 + JSONArray mol_rows = new JSONArray(); + for (int i = 0; i < row.size(); i++) { + JSONObject json = row.getJSONObject(i); + JSONObject dtl_jo = new JSONObject(); + dtl_jo.put("sect_id", dtl.getSect_id()); + dtl_jo.put("material_id", dtl.getMaterial_id()); + dtl_jo.put("struct_id", dtl.getStruct_id()); + dtl_jo.put("qty_unit_id", dtl.getQty_unit_id()); + dtl_jo.put("qty_unit_name", dtl.getQty_unit_name()); + dtl_jo.put("bucketunique", json.getString("bucketunique")); + dtl_jo.put("mol_qty", dtl.getCheck_result().equals("1") ? NumberUtil.sub(json.getBigDecimal("storage_qty"), json.getBigDecimal("ivt_qty_ck")) : NumberUtil.sub(json.getBigDecimal("ivt_qty_ck"), json.getBigDecimal("storage_qty"))); + dtl_jo.put("source_billdtl_id", dtl.getCheckdtl_id()); + dtl_jo.put("source_bill_type", jo_mst.getCheck_type()); + dtl_jo.put("source_bill_code", jo_mst.getCheck_code()); + dtl_jo.put("source_bill_table", "ST_IVT_CheckMst_CP"); + dtl_jo.put("storagevehicle_id", dtl.getStoragevehicle_id()); + dtl_jo.put("storagevehicle_code", dtl.getStoragevehicle_code()); + mol_rows.add(dtl_jo); + + } + mol_jo.put("tableData", mol_rows); + mol_jo.put("auto_confirm", "1"); + //创建损溢单 + iStIvtMoreorlessmstCpService.create(mol_jo); + + dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成")); + dtl.setProcess_optid(SecurityUtils.getCurrentUserId()); + dtl.setProcess_time(DateUtil.now()); + dtl.setProcess_type(CHECKEnum.PROCESS_TYPE.code("实盘为准")); + dtl.setIs_process(true); + iStIvtCheckdtlCpService.updateById(dtl); + List finish_list = iStIvtCheckdtlCpService.list(new QueryWrapper().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"})); + //说明全部确认 + if (finish_list.size() == jo_mst.getDtl_num().intValue()) { + iStIvtCheckdtlCpService.update(new UpdateWrapper().set("status", "99").eq("check_id", form.getString("check_id"))); + + jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成")); + jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId()); + jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName()); + jo_mst.setConfirm_time(DateUtil.now()); + //解锁起点点位、仓位 + finish_list.stream() + .map(finish -> finish.getStruct_id()) + .distinct() + .forEach(struct_id -> structattrService.update(new UpdateWrapper().set("inv_code", "").set("lock_type", "0").eq("struct_id", struct_id))); + } + this.updateById(jo_mst); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Long[] ids) { + for (Long id : ids) { + StIvtCheckmstCp dao = this.getOne(new QueryWrapper().eq("check_id", id)); + dao.setIs_delete(true); + + //获取所有明细下的仓位解锁 + List dtl_list = iStIvtCheckdtlCpService.list(new QueryWrapper().eq("check_id", id)); + dtl_list.stream() + .map(dtl -> dtl.getStruct_id()) + .distinct() + .forEach(struct_id -> structattrService.update(new UpdateWrapper().set("inv_code", "").set("lock_type", "0").eq("struct_id", struct_id))); + this.updateById(dao); + } + } + + @NotNull + private StIvtCheckmstCp packageMstForm(StIvtCheckmstCp checkmstCp, JSONObject whereJson) { + JSONArray rows = whereJson.getJSONArray("tableData"); + // 新增 + checkmstCp.setCheck_id(IdUtil.getStringId()); + checkmstCp.setCheck_code(CodeUtil.getNewCode("PD_CODE")); + checkmstCp.setBuss_type(whereJson.getString("check_type")); + checkmstCp.setCheck_type(checkmstCp.getBuss_type()); + + // 获取仓库信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("stor_id", whereJson.getString("stor_id")); + wrapper.eq("is_used", true); + StIvtBsrealstorattr bsrealDao = stIvtBsrealstorattrService.getOne(wrapper); + if (ObjectUtil.isEmpty(bsrealDao)) throw new BadRequestException("仓库不存在或未启用!"); + + checkmstCp.setStor_id(bsrealDao.getStor_id()); + checkmstCp.setStor_name(bsrealDao.getStor_name()); + checkmstCp.setDtl_num(BigDecimal.valueOf(rows.size())); + checkmstCp.setCreate_mode(CHECKEnum.CREATE_MODE.code("PC产生")); + checkmstCp.setStatus(CHECKEnum.BILL_STATUS.code("生成")); + checkmstCp.setCreate_id(SecurityUtils.getCurrentUserId()); + checkmstCp.setCreate_name(SecurityUtils.getCurrentNickName()); + checkmstCp.setCreate_time(DateUtil.now()); + checkmstCp.setIs_delete(false); + checkmstCp.setIs_upload(true); + // TODO 暂时写死 + checkmstCp.setSysdeptid("111"); + checkmstCp.setSyscompanyid("111"); + + checkmstCp.setRemark(whereJson.getString("remark")); + + return checkmstCp; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/structIvt/StIvtStructivtYlController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/structIvt/StIvtStructivtYlController.java index 0b03c860..43caf5a1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/structIvt/StIvtStructivtYlController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/structIvt/StIvtStructivtYlController.java @@ -36,6 +36,13 @@ public class StIvtStructivtYlController { return new ResponseEntity<>(structivtYlService.getRawIvt(query, page), HttpStatus.OK); } + @GetMapping("/getProductIvt") + @Log("查询可用的成品库存") + @ApiOperation("查询可用的成品库存") + public ResponseEntity getProductIvt(StructIvtYLQuery query, PageQuery page) { + return new ResponseEntity<>(structivtYlService.getProductIvt(query,page), HttpStatus.OK); + } + @PostMapping("/getStructIvt") @Log("查询库存") @ApiOperation("查询库存") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/IStIvtStructivtYlService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/IStIvtStructivtYlService.java index 4c3cda74..46bf7420 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/IStIvtStructivtYlService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/IStIvtStructivtYlService.java @@ -28,4 +28,12 @@ public interface IStIvtStructivtYlService extends IService { Object getRawIvt(StructIvtYLQuery query, PageQuery page); List getStructIvt(StructIvtYLQuery query); + + /** + * 分页查询可用的成品库存 + * + * @param query / + * @return JSONObject + */ + Object getProductIvt(StructIvtYLQuery query, PageQuery page); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/StIvtStructivtYlMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/StIvtStructivtYlMapper.java index 74c92292..5d236d49 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/StIvtStructivtYlMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/StIvtStructivtYlMapper.java @@ -22,5 +22,7 @@ public interface StIvtStructivtYlMapper extends BaseMapper { List getRawIvt(@Param("query") StructIvtYLQuery query, @Param("pageQuery") PageQuery pageQuery); + List getProductIvt(@Param("query") StructIvtYLQuery query, @Param("pageQuery") PageQuery pageQuery); + List getStructIvt(@Param("query") StructIvtYLQuery query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/xml/StIvtStructivtYlMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/xml/StIvtStructivtYlMapper.xml index 1b88c84d..b7f1092c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/xml/StIvtStructivtYlMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/xml/StIvtStructivtYlMapper.xml @@ -37,6 +37,42 @@ + +