From d1511d2d12b4223882fcfdabd3ba6b59c038edc4 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期三, 08 一月 2025 21:29:46 +0800
Subject: [PATCH] #拣货单功能开发
---
zy-asrs-admin/src/views/out/flat/index.vue | 142 ++++++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheetDetl.java | 25 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PickSheetService.java | 8
zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/domain/BaseParam.java | 2
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java | 39 +++
zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetDetlMapper.xml | 2
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java | 8
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java | 106 +++++++-
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PickSheetController.java | 47 +++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/PageRequest.java | 23 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ManPickSheetDetlMapper.java | 13
zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetMapper.xml | 1
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PickSheetDetlService.java | 8
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheet.java | 15 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PickSheetServiceImpl.java | 60 ++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/PickSheetDetlDto.java | 14 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java | 192 ++++++++++---
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PickSheetDetlServiceImpl.java | 12
zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/PageResult.java | 13 +
19 files changed, 636 insertions(+), 94 deletions(-)
diff --git a/zy-asrs-admin/src/views/out/flat/index.vue b/zy-asrs-admin/src/views/out/flat/index.vue
new file mode 100644
index 0000000..9018f2e
--- /dev/null
+++ b/zy-asrs-admin/src/views/out/flat/index.vue
@@ -0,0 +1,142 @@
+<template>
+ <a-table :columns="columns" :data-source="datasource" bordered>
+ <template #bodyCell="{column, record}">
+ <template v-if="column.key === 'operate'">
+ <a-button @click="viewDetail(record)" type="link">
+ {{ "鏌ョ湅鏄庣粏" }}
+ </a-button>
+ <a-button @click="showDeleteConfirm(record)" danger type="link">{{"鍒犻櫎"}}</a-button>
+ </template>
+ <template v-if="column.key === 'status'">
+ <a-tag :color="record.status === 1 ? 'green' : 'volcano'">
+ {{record.status === 1 ? "姝e父" : "绂佺敤"}}
+ </a-tag>
+ </template>
+ </template>
+ </a-table>
+ <a-modal ref="sheetDetl" v-model:open="show" :width="'80%'" title="鎷h揣鍗曟槑缁�" @ok="handleOk">
+ <a-table :columns="childNodes" :data-source="childList">
+ <template #bodyCell="{column, record}">
+ <template v-if="column.key === 'status'">
+ <a-tag :color="record.status === 1 ? 'green' : 'volcano'">
+ {{record.status === 1 ? "姝e父" : "绂佺敤"}}
+ </a-tag>
+ </template>
+ </template>
+ </a-table>
+ </a-modal>
+</template>
+
+<script>
+ import {post, get} from "@/utils/request.js";
+ import {message, Modal} from "ant-design-vue";
+ import { createVNode } from 'vue';
+ import {formatMessage} from "@/utils/localeUtils.js";
+ import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
+
+ export default {
+ name: "out-stock-flat",
+ data() {
+ return {
+ columns: [
+ {key: 'number', title: '搴忓彿', dataIndex: 'number'},
+ {key: 'pickNo', title: '鍗曞彿', dataIndex: 'pickNo'},
+ {key: 'waveNo', title: '娉㈡鍙�', dataIndex: 'waveNo'},
+ {key: 'anfme', title: '鏁伴噺', dataIndex: 'anfme'},
+ {key: 'status', title: '鍗曟嵁鐘舵��', dataIndex: 'status'},
+ {key: 'memo', title: '澶囨敞', dataIndex: ''},
+ {key: 'createdTime', title: '鍒涘缓鏃堕棿', dataIndex: 'createdTime'},
+ {key: 'updatedTime', title: '淇敼鏃堕棿', dataIndex: 'updatedTime'},
+ {key: 'operate', title: '鎿嶄綔', dataIndex: 'operate'}
+ ],
+ childNodes: [
+ {key: 'number', title: '搴忓彿', dataIndex: 'number'},
+ {key: 'maktx', title: '鐗╂枡鍚嶇О', dataIndex: 'maktx'},
+ {key: 'matnr', title: '鐗╂枡缂栫爜', dataIndex: 'matnr'},
+ {key: 'batch', title: '鎵瑰彿', dataIndex: 'batch'},
+ {key: 'locNo', title: '搴撲綅', dataIndex: 'locNo'},
+ {key: 'barcode', title: '鎷栫洏鐮�', dataIndex: 'barcode'},
+ {key: 'anfme', title: '鏁伴噺', dataIndex: 'anfme'},
+ {key: 'memo', title: '澶囨敞', dataIndex: ''},
+ {key: 'status', title: '鍗曟嵁鐘舵��', dataIndex: 'status'},
+ // {key: 'operate', title: '鎿嶄綔', dataIndex: 'operate'}
+ ],
+ datasource: [],
+ childList:[],
+ show: false,
+ }
+ },
+
+ mounted() {
+ //鑾峰彇鎷h揣鍗曟暟鎹簮
+ this.getOutFlatSheet();
+ },
+
+ methods: {
+ showDeleteConfirm(record){
+ let that = this
+ Modal.confirm({
+ title: '鏄惁纭鍒犻櫎褰撳墠鎷h揣鍗�',
+ icon: createVNode(ExclamationCircleOutlined),
+ content: '杩炲悓鏄庣粏涓�璧峰垹闄�',
+ okText: '纭',
+ okType: 'danger',
+ cancelText: '鍙栨秷',
+ onOk() {
+ that.removeRow(record)
+ },
+ onCancel() {
+ console.log('Cancel');
+ },
+ });
+ },
+
+ //鍒犻櫎褰撳墠琛�
+ removeRow(record) {
+ let that = this
+ get('/api/pick/flat/remove/' + record.id).then((resp)=>{
+ let result = resp.data;
+ if (result.code == 200) {
+ that.getOutFlatSheet()
+ message.success(formatMessage('page.delete.success', '鍒犻櫎鎴愬姛'));
+ } else {
+ message.error(result.msg);
+ }
+ })
+ },
+ //鏌ョ湅鏄庣粏
+ viewDetail(record) {
+ this.show = !this.show
+ this.getSheetDetl(record)
+ },
+ getOutFlatSheet() {
+ let that = this
+ post('/api/pick/flat/page',{page: {currnt: 1, size: 10}}).then((resp) => {
+ let result = resp.data;
+ if (result.code == 200) {
+ // message.success(formatMessage('page.add.success', '鎴愬姛'));
+ that.datasource = result.data
+ } else {
+ message.error(result.msg);
+ }
+ })
+ },
+ getSheetDetl(record) {
+ let that = this
+ post('/api/pick/flat/detl/page',{page: {currnt: 1, size: 10}, params: {pickId: record.id}}).then((resp) => {
+ let result = resp.data;
+ if (result.code == 200) {
+ // message.success(formatMessage('page.add.success', '鎴愬姛'));
+ that.childList = result.data
+ } else {
+ message.error(result.msg);
+ }
+ })
+ },
+ }
+ }
+</script>
+
+<style scoped>
+
+</style>
\ No newline at end of file
diff --git a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/PageResult.java b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/PageResult.java
new file mode 100644
index 0000000..6fbdb10
--- /dev/null
+++ b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/common/PageResult.java
@@ -0,0 +1,13 @@
+package com.zy.asrs.framework.common;
+
+import lombok.Data;
+
+public class PageResult<T> extends R {
+
+ //鎬绘暟
+ Integer total;
+
+ public PageResult (String msg, Integer code, T data) {
+ super(code, msg);
+ }
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
index cc07a96..00bfa11 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/MobileController.java
@@ -1,6 +1,9 @@
package com.zy.asrs.wms.asrs.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zy.asrs.common.domain.CodeRes;
import com.zy.asrs.common.domain.enums.LoginSystemType;
import com.zy.asrs.framework.annotations.ManagerAuth;
@@ -10,11 +13,14 @@
import com.zy.asrs.wms.asrs.entity.Order;
import com.zy.asrs.wms.asrs.entity.WaitPakin;
import com.zy.asrs.wms.asrs.entity.dto.OrderInfoDto;
+import com.zy.asrs.wms.asrs.entity.dto.PickSheetDetlDto;
import com.zy.asrs.wms.asrs.entity.param.BatchMergeOrdersParam;
+import com.zy.asrs.wms.asrs.entity.param.PageRequest;
import com.zy.asrs.wms.asrs.entity.param.PakinOnShelvesParams;
import com.zy.asrs.wms.asrs.service.MobileService;
import com.zy.asrs.wms.asrs.service.OrderService;
import com.zy.asrs.wms.asrs.service.WaitPakinService;
+import com.zy.asrs.wms.common.domain.BaseParam;
import com.zy.asrs.wms.system.controller.BaseController;
import com.zy.asrs.wms.system.entity.Host;
import com.zy.asrs.wms.system.entity.User;
@@ -178,4 +184,37 @@
}
}
+ /**
+ * 鑾峰彇鎷h揣鏄庣粏
+ * @return
+ */
+ @GetMapping("/pick/detl/{code}")
+ public R pickDetlByPickNo(@PathVariable String code) {
+ if (StringUtil.isNullOrEmpty(code)) {
+ return R.error("鎷h揣鍗曟嵁缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ PickSheetDetlDto pickSheetDetls = mobileService.outFlatSheet(code);
+
+ return R.ok(pickSheetDetls);
+ }
+
+ /**
+ * 鎷h揣鍗曠‘璁ゅ嚭搴�
+ * @param code
+ * @return
+ */
+ @GetMapping("/pick/confirm/{code}")
+ public R confirmOutFlatSheet(@PathVariable String code) {
+ if (StringUtil.isNullOrEmpty(code)) {
+ return R.error("鎷h揣鍗曟嵁缂栫爜涓嶈兘涓虹┖锛侊紒");
+ }
+ if (!mobileService.confirmFlatSheet(code)) {
+ return R.error("鍑哄簱澶辫触锛侊紒");
+ }
+ return R.ok("鍑哄簱鎴愬姛锛侊紒");
+ }
+
+
+
+
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PickSheetController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PickSheetController.java
index 33d7a25..66012e8 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PickSheetController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/PickSheetController.java
@@ -1,14 +1,55 @@
package com.zy.asrs.wms.asrs.controller;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wms.asrs.entity.PickSheetDetl;
+import com.zy.asrs.wms.asrs.entity.param.PageRequest;
+import com.zy.asrs.wms.asrs.service.PickSheetService;
import com.zy.asrs.wms.system.controller.BaseController;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
-@RequestMapping("/pick")
+@RequestMapping("/api")
@RestController
public class PickSheetController extends BaseController {
+ @Autowired
+ private PickSheetService pickSheetService;
+ /**
+ * 骞充粨鍑哄簱鎷h揣鍗�
+ * @return
+ */
+ @PostMapping("/pick/flat/page")
+ public R getOutFlatSheet(@RequestBody PageRequest params) {
+ IPage page = pickSheetService.getOutFlatSheet(params);
+ return R.ok(page.getRecords());
+ }
+ /**
+ * 鑾峰彇鎷h揣鍗曟槑缁�
+ * @param pageRequest
+ * @return
+ */
+ @PostMapping("/pick/flat/detl/page")
+ public R getSheetDetl(@RequestBody PageRequest pageRequest) {
+ IPage page = pickSheetService.getSheetDetl(pageRequest);
+ return R.ok(page.getRecords());
+ }
+
+ /**
+ * 鑾峰彇鎷h揣鍗曟槑缁�
+ * @param id
+ * @return
+ */
+ @GetMapping("/pick/flat/remove/{id}")
+ public R getRemoveSheet(@PathVariable String id) {
+ int result = pickSheetService.removePickSheet(Long.valueOf(id));
+ if (result > 0) {
+ return R.ok("鍒犻櫎鎴愬姛锛侊紒");
+ } else {
+ return R.error("鍒犻櫎澶辫触锛侊紒");
+ }
+ }
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheet.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheet.java
index 1a46193..d48e3b6 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheet.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheet.java
@@ -3,16 +3,25 @@
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
+import lombok.experimental.Accessors;
+import org.springframework.format.annotation.DateTimeFormat;
/**
* man_pick_sheet
*/
@Data
+@Accessors(chain = true)
+@TableName("man_pick_sheet")
public class PickSheet implements Serializable {
/**
* 涓婚敭
*/
+ @TableId
private Long id;
/**
@@ -33,7 +42,7 @@
/**
* 鏁伴噺
*/
- private BigDecimal anfme;
+ private Double anfme;
/**
* 澶囨敞
@@ -43,11 +52,15 @@
/**
* 鍒涘缓鏃堕棿
*/
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createdTime;
/**
* 淇敼鏃堕棿
*/
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updatedTime;
private Long hostId;
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheetDetl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheetDetl.java
index dd69932..1e392d8 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheetDetl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/PickSheetDetl.java
@@ -3,32 +3,30 @@
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
+import lombok.experimental.Accessors;
/**
* man_pick_sheet_detl
*/
@Data
+@Accessors(chain = true)
+@TableName("man_pick_sheet_detl")
public class PickSheetDetl implements Serializable {
/**
* 涓婚敭
*/
+ @TableId
private Long id;
/**
* 鎷h揣鍗曟爣璇�
*/
private Long pickId;
-
- /**
- * 璁㈠崟鏍囪瘑
- */
- private Long orderId;
-
- /**
- * 璁㈠崟鏄庣粏鏍囪瘑
- */
- private Long orderDetlId;
/**
* 鐗╂枡涓婚敭鏍囪瘑
@@ -39,6 +37,11 @@
* 搴撲綅涓婚敭鏍囪瘑
*/
private Long locId;
+
+ /**
+ * 搴撲綅鏄庣粏ID
+ */
+ private Long locDetlId;
/**
* 鐗╂枡鍚嶇О
@@ -53,7 +56,7 @@
/**
* 鎵瑰彿
*/
- private Long batch;
+ private String batch;
/**
* 鏁伴噺
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/PickSheetDetlDto.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/PickSheetDetlDto.java
new file mode 100644
index 0000000..5ebd60a
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/dto/PickSheetDetlDto.java
@@ -0,0 +1,14 @@
+package com.zy.asrs.wms.asrs.entity.dto;
+
+import com.zy.asrs.wms.asrs.entity.PickSheet;
+import com.zy.asrs.wms.asrs.entity.PickSheetDetl;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+@Data
+public class PickSheetDetlDto extends PickSheet implements Serializable {
+
+ private List<PickSheetDetl> pickSheetDetlList;
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/PageRequest.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/PageRequest.java
new file mode 100644
index 0000000..0e64938
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/PageRequest.java
@@ -0,0 +1,23 @@
+package com.zy.asrs.wms.asrs.entity.param;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sun.xml.internal.ws.model.WrapperParameter;
+import lombok.Data;
+
+import java.sql.Wrapper;
+import java.util.Map;
+
+@Data
+public class PageRequest{
+
+ //璇锋眰鍙傛暟鎷兼帴
+ private QueryWrapper queryWrapper;
+
+ Map<String, Object> params;
+ /**
+ * 鍒嗛〉锛� pageSize = 10 ,page = 1
+ */
+ Page page;
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
index 8d3b95f..6a4b7d9 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/manage/OutManage.java
@@ -1,6 +1,7 @@
package com.zy.asrs.wms.asrs.manage;
import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.dto.*;
@@ -14,10 +15,13 @@
import com.zy.asrs.wms.utils.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -63,6 +67,12 @@
private CacheSiteService cacheSiteService;
@Autowired
private WaveSeedService waveSeedService;
+ @Autowired
+ private PickSheetService pickSheetService;
+ @Autowired
+ private PickSheetDetlService pickSheetDetlService;
+ @Autowired
+ private MatService matService;
/**
* 鍑哄簱
@@ -82,7 +92,7 @@
long taskType = locDto.getAll() ? 101L : 103L;
Loc loc = locService.getById(locDto.getLocId());
- if(loc == null) {
+ if (loc == null) {
throw new CoolException("搴撲綅涓嶅瓨鍦�");
}
@@ -105,7 +115,7 @@
// 宸ヤ綔妗f槑缁嗕繚瀛�
for (OutDetlDto detl : locDto.getDetls()) {
LocDetl locDetl = locDetlService.getById(detl.getDetlId());
- if(locDetl == null) {
+ if (locDetl == null) {
throw new CoolException("鏄庣粏涓嶅瓨鍦�");
}
@@ -132,7 +142,7 @@
taskDetlField.sync(locDetlField);
taskDetlField.setDetlId(taskDetl.getId());
boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
- if(!taskDetlFieldSave){
+ if (!taskDetlFieldSave) {
throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
}
}
@@ -142,7 +152,7 @@
loc.setLocStsId(LocStsType.R.val());
loc.setUpdateTime(new Date());
boolean locUpdate = locService.updateById(loc);
- if(!locUpdate){
+ if (!locUpdate) {
throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
}
}
@@ -195,7 +205,9 @@
//鑾峰彇TCU绗﹀悎鏉′欢搴撲綅
for (OrderDetl orderDetl : orderDetls) {
double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty() - orderDetl.getWorkQty()).orElse(0.0D);
- if (issued <= 0.0D) { continue; }
+ if (issued <= 0.0D) {
+ continue;
+ }
List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMat$().getMatnr(), orderDetl.getBatch(), orderDetl.getUniqueField());
orderDetlLocMap.put(orderDetl.getId(), locDetls);
for (LocDetl locDetl : locDetls) {
@@ -207,7 +219,7 @@
outDetlDto.setOrderDetlId(orderDetl.getId());
detlDtos.add(outDetlDto);
issued = issued - outDetlDto.getAnfme();
- }else {
+ } else {
break;
}
}
@@ -220,7 +232,7 @@
if (dtos == null) {
dtos = new ArrayList<>();
dtos.add(detlDto);
- }else {
+ } else {
dtos.add(detlDto);
}
map.put(locDetl.getLocId(), dtos);
@@ -329,11 +341,11 @@
continue;
}
- if(detlMap.containsKey(previewDto.getLocDetlId())) {
+ if (detlMap.containsKey(previewDto.getLocDetlId())) {
List<OrderOutBatchPreviewDto> previewDtos = detlMap.get(previewDto.getLocDetlId());
previewDtos.add(previewDto);
detlMap.put(previewDto.getLocDetlId(), previewDtos);
- }else {
+ } else {
List<OrderOutBatchPreviewDto> previewDtos = new ArrayList<>();
previewDtos.add(previewDto);
detlMap.put(previewDto.getLocDetlId(), previewDtos);
@@ -361,11 +373,11 @@
HashMap<Long, List<OrderOutBatchPreviewDto>> map = new HashMap<>();
for (OrderOutBatchPreviewDto previewDto : dtos) {
- if(map.containsKey(previewDto.getLocId())) {
+ if (map.containsKey(previewDto.getLocId())) {
List<OrderOutBatchPreviewDto> previewDtos = map.get(previewDto.getLocId());
previewDtos.add(previewDto);
map.put(previewDto.getLocId(), previewDtos);
- }else {
+ } else {
List<OrderOutBatchPreviewDto> previewDtos = new ArrayList<>();
previewDtos.add(previewDto);
map.put(previewDto.getLocId(), previewDtos);
@@ -411,12 +423,12 @@
for (OrderOutBatchPreviewDto dto : previewDtos) {
LocDetl locDetl = locDetlService.getById(dto.getLocDetlId());
- if(locDetl == null) {
+ if (locDetl == null) {
throw new CoolException("鏄庣粏涓嶅瓨鍦�");
}
OrderDetl orderDetl = orderDetlService.getById(dto.getOrderDetlId());
- if(orderDetl == null) {
+ if (orderDetl == null) {
throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
}
orderUtils.updateWorkQty(dto.getOrderDetlId(), dto.getAnfme());
@@ -442,7 +454,7 @@
taskDetlField.setId(null);
taskDetlField.setDetlId(taskDetl.getId());
boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
- if(!taskDetlFieldSave){
+ if (!taskDetlFieldSave) {
throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
}
}
@@ -452,7 +464,7 @@
loc.setLocStsId(LocStsType.R.val());
loc.setUpdateTime(new Date());
boolean locUpdate = locService.updateById(loc);
- if(!locUpdate){
+ if (!locUpdate) {
throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
}
@@ -477,7 +489,7 @@
}
List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().in(OrderDetl::getOrderId, orderIds));
- if(orderDetls.isEmpty()){
+ if (orderDetls.isEmpty()) {
throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
}
orderDetls = orderDetlService.parseDetl(orderDetls);
@@ -490,7 +502,7 @@
Double anfme = locDetlStockMap.get(matUniqueKey);
anfme += issued;
locDetlStockMap.put(matUniqueKey, anfme);
- }else {
+ } else {
locDetlStockMap.put(matUniqueKey, issued);
}
}
@@ -534,7 +546,7 @@
dto.setFieldParams(fieldParams);
}
- FieldSortParam sortParam = new FieldSortParam("anfme","desc");
+ FieldSortParam sortParam = new FieldSortParam("anfme", "desc");
List<FieldSortParam> sortParams = new ArrayList<>();
sortParams.add(sortParam);
@@ -600,9 +612,11 @@
for (MergePreviewDto dto : param) {
Double anfme = dto.getAnfme() - dto.getWorkQty();
//鍑忓幓骞冲簱鏁伴噺鍚庯紝灏忎簬绛変簬0锛岃烦鍑哄鐞�
- if (anfme <= 0) {continue;}
+ if (anfme <= 0) {
+ continue;
+ }
List<LocDetl> locDetls = locDetlService.queryStock(dto.getMatnr(), dto.getBatch(), dto.getFieldParams(), sortParams);
- if(locDetls.isEmpty()){
+ if (locDetls.isEmpty()) {
MergePreviewResultDto resultDto = new MergePreviewResultDto();
resultDto.sync(dto);
resultDto.setLocs(new ArrayList<>());
@@ -673,7 +687,7 @@
@Transactional(rollbackFor = Exception.class)
public void orderOutMerge(OrderOutMergeParamDto dto) {
- if(dto == null){
+ if (dto == null) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
}
@@ -723,7 +737,7 @@
List<OrderDetl> detls = detlMap.get(matUniqueKey);
detls.add(orderDetl);
detlMap.put(matUniqueKey, detls);
- }else {
+ } else {
List<OrderDetl> detls = new ArrayList<>();
detls.add(orderDetl);
detlMap.put(matUniqueKey, detls);
@@ -757,7 +771,7 @@
orderOutMergeDto.setAnfme(issued);
updateWorkQty = issued;
requireAnfme -= issued;
- }else {
+ } else {
orderOutMergeDto.setAnfme(requireAnfme);
updateWorkQty = requireAnfme;
requireAnfme -= requireAnfme;
@@ -777,7 +791,7 @@
List<OrderOutMergeDto> list = null;
if (map.containsKey(orderOutMergeDto.getLocId())) {
list = map.get(orderOutMergeDto.getLocId());
- }else {
+ } else {
list = new ArrayList<>();
}
list.add(orderOutMergeDto);
@@ -823,12 +837,12 @@
for (OrderOutMergeDto merge : list) {
LocDetl locDetl = locDetlService.getById(merge.getLocDetlId());
- if(locDetl == null) {
+ if (locDetl == null) {
throw new CoolException("鏄庣粏涓嶅瓨鍦�");
}
OrderDetl orderDetl = orderDetlService.getById(merge.getOrderDetlId());
- if(orderDetl == null) {
+ if (orderDetl == null) {
throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
}
@@ -853,7 +867,7 @@
taskDetlField.setId(null);
taskDetlField.setDetlId(taskDetl.getId());
boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
- if(!taskDetlFieldSave){
+ if (!taskDetlFieldSave) {
throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
}
}
@@ -865,7 +879,7 @@
loc.setLocStsId(LocStsType.R.val());
loc.setUpdateTime(new Date());
boolean locUpdate = locService.updateById(loc);
- if(!locUpdate){
+ if (!locUpdate) {
throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
}
@@ -883,11 +897,12 @@
* 4. 鐢熸垚鍑哄簱鍗昉DA绔紝缁熶竴鍑哄簱鎵e噺搴撳瓨
* 5. 鐢熸垚鎷h揣鍗曞巻鍙叉。锛屽嚭搴撳崟鎹姞鍏ュ巻鍙叉。锛屽垹闄ゅ師鍗曟嵁
* 6. 鍒犻櫎娉㈡鍒楄〃鏁版嵁
+ *
* @param dto
*/
@Transactional(rollbackFor = Exception.class)
public void orderOutMergeWave(OrderOutMergeParamDto dto) {
- if(dto == null){
+ if (dto == null) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
}
@@ -903,7 +918,6 @@
/**
* 娉㈡鍚堝苟鍑哄簱
* 1. 鍒ゆ柇鏄钩搴撹繕TCU搴�
- * 2. 鏍规嵁鍗曞簱鍗曟嵁绫诲瀷
* 2. 骞冲簱鐢熸垚鎷h揣鍗�
* 3. TCU搴撶敓鎴愪换鍔″崟
*/
@@ -917,17 +931,25 @@
}
}
- private Map<Long, List<OrderOutMergeDto>> checkLoc(List<OrderOutMergeParam> mergeParams, Wave wave) {
+ /**
+ * 1. 鍒ゆ柇褰撴尝娆″強搴撲綅鏄庣粏鏄惁瀛樺湪
+ * 2. 缁勫悎key-value(list)褰㈠紡鏁版嵁
+ *
+ * @param mergeParams
+ * @param wave
+ * @return
+ */
+ private Map<Long, List<OrderOutMergeDto>> checkLoc(List<OrderOutMergeParam> mergeParams, Wave wave) {
HashMap<String, Double> stockMap = new HashMap<>();
for (OrderOutMergeParam param : mergeParams) {
String matUniqueKey = Utils.getMatUniqueKey(param.getMatnr(), param.getBatch(), param.getFieldParams());
WaveDetl waveDetl = waveDetlService.getOne(new LambdaQueryWrapper<WaveDetl>().eq(WaveDetl::getStockIndex, matUniqueKey).eq(WaveDetl::getWaveId, wave.getId()));
- if(waveDetl == null){
+ if (waveDetl == null) {
throw new CoolException("娉㈡鏁版嵁涓嶅瓨鍦�");
}
-
+ //鑾峰彇褰撳墠闇�瑕佹墽琛屾暟閲�
double issued = Optional.of(waveDetl.getAnfme() - waveDetl.getWorkQty()).orElse(0.0D);
- if(!stockMap.containsKey(matUniqueKey)){
+ if (!stockMap.containsKey(matUniqueKey)) {
stockMap.put(matUniqueKey, issued);
}
}
@@ -935,33 +957,35 @@
HashMap<Long, List<OrderOutMergeDto>> map = new HashMap<>();
for (OrderOutMergeParam param : mergeParams) {
LocDetl locDetl = locDetlService.getById(param.getLocDetlId());
- if(locDetl == null) {
+ if (locDetl == null) {
continue;
}
-
- if (locDetl.getAnfme() - param.getAnfme() < 0) {
+ //搴撲綅鏁伴噺灏忎簬鍑哄簱鏁伴噺 //鏂板workQty鐢ㄤ簬骞冲簱閿佸簱瀛�
+ if (locDetl.getAnfme() - locDetl.getWorkQty() - param.getAnfme() < 0) {
continue;
}
OrderOutMergeDto orderOutMergeDto = new OrderOutMergeDto();
orderOutMergeDto.sync(param);
-
+ //fixme 纭stockMap鏄惁鏈夌敤锛屾澶勫叆鍊煎悗鍗存病鏈変娇鐢�
String matUniqueKey = Utils.getMatUniqueKey(param.getMatnr(), param.getBatch(), param.getFieldParams());
Double issued = stockMap.get(matUniqueKey);
if (issued - orderOutMergeDto.getAnfme() < 0) {
orderOutMergeDto.setAnfme(issued);
issued = 0D;
- }else {
+ } else {
issued -= orderOutMergeDto.getAnfme();
}
- stockMap.put(matUniqueKey, issued);
+ stockMap.put(matUniqueKey, issued);
+ //鏍规嵁搴撲綅鍋氬垎绫伙紝鍙娇鐢╯tream().groupby
List<OrderOutMergeDto> list = null;
if (map.containsKey(orderOutMergeDto.getLocId())) {
list = map.get(orderOutMergeDto.getLocId());
- }else {
+ } else {
list = new ArrayList<>();
}
+
list.add(orderOutMergeDto);
map.put(orderOutMergeDto.getLocId(), list);
}
@@ -975,6 +999,7 @@
/**
* 鏍规嵁涓嶅悓搴撲綅绫诲瀷鐢熸垚鍑哄簱鎷e崟鍙奣UC浠诲姟妗�
+ *
* @param dto
* @param wave
*/
@@ -999,12 +1024,12 @@
tucOrders.addAll(listMap.get(key));
}
});
- if (flatOrders.isEmpty()) {
+ if (!flatOrders.isEmpty()) {
//骞冲簱鍑哄簱
outStockByFlat(flatOrders, wave);
}
- if (tucOrders.isEmpty()) {
+ if (!tucOrders.isEmpty()) {
//TUC鍑哄簱
outStockByTUC(tucOrders, wave);
}
@@ -1018,12 +1043,15 @@
* @param tucOrders
* @param wave
*/
- private void outStockByTUC(List<OrderOutMergeParam> tucOrders, Wave wave) {
- Map<Long, List<OrderOutMergeDto>> map = checkLoc(tucOrders, wave);
-
+ private void outStockByTUC(List<OrderOutMergeParam> tucOrders, Wave wave) {//123
+ Map<Long, List<OrderOutMergeDto>> map = checkLoc(tucOrders, wave);
+ if (!Objects.isNull(map)) {
+ return;
+ }
for (Map.Entry<Long, List<OrderOutMergeDto>> entry : map.entrySet()) {
Long locId = entry.getKey();
List<OrderOutMergeDto> list = entry.getValue();
+ //鍒ゆ柇鏄惁鍏ㄤ粨鍑哄簱
Boolean all = outUtils.isAllForMerge(locId, list);
OrderOutMergeDto param = list.get(0);
Long operationPortId = param.getOperationPort();
@@ -1041,7 +1069,7 @@
if (operationPort == null) {
throw new CoolException("浣滀笟鍙d笉瀛樺湪");
}
-
+ //101 鍏ㄦ嫋鍑哄簱 103 鎷h揣鍑哄簱
long taskType = all ? 101L : 103L;
Task task = new Task();
@@ -1059,7 +1087,7 @@
for (OrderOutMergeDto merge : list) {
LocDetl locDetl = locDetlService.getById(merge.getLocDetlId());
- if(locDetl == null) {
+ if (locDetl == null) {
throw new CoolException("鏄庣粏涓嶅瓨鍦�");
}
@@ -1085,7 +1113,7 @@
taskDetlField.setId(null);
taskDetlField.setDetlId(taskDetl.getId());
boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
- if(!taskDetlFieldSave){
+ if (!taskDetlFieldSave) {
throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
}
}
@@ -1106,7 +1134,7 @@
loc.setLocStsId(LocStsType.R.val());
loc.setUpdateTime(new Date());
boolean locUpdate = locService.updateById(loc);
- if(!locUpdate){
+ if (!locUpdate) {
throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
}
}
@@ -1114,18 +1142,80 @@
/**
* 骞冲簱鍑哄簱--鐢熸垚鍑哄簱鎷h揣鍗�
+ * 1. 鍒ゆ柇褰撳墠搴撲綅鏄惁瀛樺湪
+ * 2. 涓�寮犲崟鎹竴涓尝娆�
+ * 3. 涓�涓尝娆″鏉¤鍗�
+ * 4. 涓�涓簱浣嶅彲澶氭潯鏄庣粏
+ * 5. 鎷h揣鍗曞畬鎴愬悗锛岄噴鏀惧簱浣嶆槑缁嗛攣瀹氭暟閲�
*
* @param flatOrders
* @param wave
*/
private void outStockByFlat(List<OrderOutMergeParam> flatOrders, Wave wave) {
+ //鏍¢獙搴撳瓨鏁伴噺
Map<Long, List<OrderOutMergeDto>> map = checkLoc(flatOrders, wave);
+ //鐢熸垚鎷h揣鍗�
+ PickSheet pickSheet = new PickSheet();
+ //娉㈡鏁伴噺姹囨��
+ double sum = flatOrders.stream().mapToDouble(OrderOutMergeParam::getAnfme).sum();
+ //鐢熸垚鎷h揣鍗曞彿
+ String pickNo = generatePickNO();
+ pickSheet.setId(null)
+ .setPickNo(pickNo)
+ .setMemo(wave.getMemo())
+ .setAnfme(sum)
+ .setWaveId(wave.getId())
+ .setWaveNo(wave.getWaveNo());
+ if (!pickSheetService.save(pickSheet)) {
+ throw new CoolException("鎷h揣鍗曞啓鍏ュけ璐ワ紒锛�");
+ }
+ //鏍规嵁搴撲綅ID鍒嗙粍
+ Map<Long, List<OrderOutMergeParam>> listMap = flatOrders.stream().collect(Collectors.groupingBy(OrderOutMergeParam::getLocId));
+ //鐢熸垚鎷h揣鏄庣粏
+ listMap.keySet().forEach(key -> {
+ Loc curLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getId, key));
+ if (Objects.isNull(curLoc)) {
+ throw new CoolException("涓婚敭." + key + "鐨勫簱浣嶄笉瀛樺湪锛侊紒");
+ }
+ listMap.get(key).forEach(outOder -> {
+ //鑾峰彇搴撲綅鏄庣粏淇℃伅
+ LocDetl locDetl = locDetlService.getOne(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getId, outOder.getLocDetlId()));
+ PickSheetDetl sheetDetl = new PickSheetDetl();
+ BeanUtils.copyProperties(outOder, sheetDetl);
+ //鑾峰彇鐗╂枡淇℃伅
+ Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, outOder.getMatnr()));
+ //鎷h揣鍗曟槑缁�
+ sheetDetl.setBarcode(curLoc.getBarcode())
+ .setPickId(pickSheet.getId())
+ .setAnfme(BigDecimal.valueOf(outOder.getAnfme()))
+ .setLocDetlId(locDetl.getId())
+ .setMaktx(mat.getMaktx())
+ .setMatId(mat.getId());
+ if (!pickSheetDetlService.save(sheetDetl)) {
+ throw new CoolException("鎷h揣鏄庣粏鍒楁柊澶辫触");
+ }
+ //閿佸畾搴撳瓨閲�
+ locDetl.setWorkQty(locDetl.getWorkQty() + outOder.getAnfme());
+ });
+
+ });
}
+ /**
+ * 鐢熸垚鎷h揣鍗曞彿
+ *
+ * @return
+ */
+ private String generatePickNO() {
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+ String format = simpleDateFormat.format(new Date());
+ Random random = new Random();
+ return "PN" + format + random.nextInt(10000);
+ }
@Transactional(rollbackFor = Exception.class)
public void generateWave(GenerateWaveParam param) {
@@ -1277,7 +1367,7 @@
order.setWaveId(null);
order.setWaveNo(null);
order.setHasWave(0);
- if(order.getOrderSettle().equals(OrderSettleType.WAVE.val())){
+ if (order.getOrderSettle().equals(OrderSettleType.WAVE.val())) {
order.setOrderSettle(OrderSettleType.WAIT.val());
}
if (!orderService.updateById(order)) {
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ManPickSheetDetlMapper.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ManPickSheetDetlMapper.java
index 5dd548f..9d8da1e 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ManPickSheetDetlMapper.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/mapper/ManPickSheetDetlMapper.java
@@ -1,21 +1,12 @@
package com.zy.asrs.wms.asrs.mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zy.asrs.wms.asrs.entity.PickSheetDetl;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
-public interface ManPickSheetDetlMapper {
- int deleteByPrimaryKey(Long id);
+public interface ManPickSheetDetlMapper extends BaseMapper<PickSheetDetl> {
- int insert(PickSheetDetl record);
-
- int insertSelective(PickSheetDetl record);
-
- PickSheetDetl selectByPrimaryKey(Long id);
-
- int updateByPrimaryKeySelective(PickSheetDetl record);
-
- int updateByPrimaryKey(PickSheetDetl record);
}
\ No newline at end of file
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java
index 4c2d52c..6b9ac89 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/MobileService.java
@@ -1,7 +1,11 @@
package com.zy.asrs.wms.asrs.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zy.asrs.wms.asrs.entity.Loc;
+import com.zy.asrs.wms.asrs.entity.PickSheet;
+import com.zy.asrs.wms.asrs.entity.dto.PickSheetDetlDto;
import com.zy.asrs.wms.asrs.entity.param.BatchMergeOrdersParam;
+import com.zy.asrs.wms.asrs.entity.param.PageRequest;
import com.zy.asrs.wms.asrs.entity.param.PakinOnShelvesParams;
import com.zy.asrs.wms.system.entity.Host;
@@ -15,4 +19,8 @@
List<Host> getHosts();
boolean pakinToStock(PakinOnShelvesParams shelvesParams);
+
+ PickSheetDetlDto outFlatSheet(String code);
+
+ boolean confirmFlatSheet(String code);
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PickSheetDetlService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PickSheetDetlService.java
new file mode 100644
index 0000000..488fbb1
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PickSheetDetlService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.wms.asrs.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.wms.asrs.entity.PickSheetDetl;
+
+public interface PickSheetDetlService extends IService<PickSheetDetl> {
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PickSheetService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PickSheetService.java
index 59e5aba..1b3c766 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PickSheetService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/PickSheetService.java
@@ -1,8 +1,16 @@
package com.zy.asrs.wms.asrs.service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zy.asrs.wms.asrs.entity.PickSheet;
+import com.zy.asrs.wms.asrs.entity.PickSheetDetl;
+import com.zy.asrs.wms.asrs.entity.param.PageRequest;
public interface PickSheetService extends IService<PickSheet> {
+ IPage<PickSheet> getOutFlatSheet(PageRequest params);
+
+ IPage<PickSheetDetl> getSheetDetl(PageRequest pageRequest);
+
+ int removePickSheet(Long id);
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
index b110fa7..0c66545 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/MobileServiceImpl.java
@@ -1,12 +1,17 @@
package com.zy.asrs.wms.asrs.service.impl;
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.dto.PickSheetDetlDto;
import com.zy.asrs.wms.asrs.entity.enums.*;
import com.zy.asrs.wms.asrs.entity.enums.OrderType;
import com.zy.asrs.wms.asrs.entity.param.BatchMergeOrdersParam;
import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
+import com.zy.asrs.wms.asrs.entity.param.PageRequest;
import com.zy.asrs.wms.asrs.entity.param.PakinOnShelvesParams;
import com.zy.asrs.wms.asrs.service.*;
import com.zy.asrs.wms.system.entity.Host;
@@ -16,10 +21,8 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
+import java.math.BigDecimal;
+import java.util.*;
import java.util.stream.Collectors;
@Service
@@ -45,7 +48,10 @@
private LocAreaService locAreaService;
@Autowired
private LocAreaTypeService locAreaTypeService;
-
+ @Autowired
+ private PickSheetService pickSheetService;
+ @Autowired
+ private PickSheetDetlService pickSheetDetlService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -133,7 +139,8 @@
LocDetl locDetl = new LocDetl();
locDetl.setAnfme(pakin.getAnfme());
locDetl.setBatch(pakin.getBatch());
- locDetl.setMatId(pakin.getMatnrId$());;
+ locDetl.setMatId(pakin.getMatnrId$());
+ ;
locDetl.setCreateTime(new Date());
locDetl.setOrderNo(pakin.getOrderNo());
locDetl.setLocNo(loc.getLocNo());
@@ -178,15 +185,84 @@
return true;
}
-// /**
-// * 鑾峰彇褰撳墠搴撲綅鏄惁瀛樺湪
-// * @param shelvesParams
-// * @return
-// */
-// @Override
-// public Loc selectPakinLocs(PakinOnShelvesParams shelvesParams) {
-// return locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, shelvesParams.getLoc()));
-// }
+ @Override
+ public PickSheetDetlDto outFlatSheet(String code) {
+ PickSheetDetlDto pickDetlDto = new PickSheetDetlDto();
+ PickSheet pickSheet = pickSheetService.getOne(new LambdaQueryWrapper<PickSheet>()
+ .eq(PickSheet::getPickNo, code)
+ .eq(PickSheet::getDeleted, 0)
+ .eq(PickSheet::getStatus, 1)
+ );
+ BeanUtils.copyProperties(pickSheet, pickDetlDto);
+ if (Objects.isNull(pickDetlDto)) {
+ throw new CoolException("瀵硅薄澶嶅埗澶辫触锛侊紒");
+ }
+ List<PickSheetDetl> sheetDetls = pickSheetDetlService.list(new LambdaQueryWrapper<PickSheetDetl>()
+ .eq(PickSheetDetl::getPickId, pickSheet.getId())
+ .eq(PickSheetDetl::getStatus, 1)
+ .eq(PickSheetDetl::getDeleted, 0));
+ pickDetlDto.setPickSheetDetlList(sheetDetls);
+ return pickDetlDto;
+ }
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public boolean confirmFlatSheet(String code) {
+ PickSheet pickSheet = pickSheetService.getOne(new LambdaQueryWrapper<PickSheet>().eq(PickSheet::getPickNo, code));
+ if (pickSheet.getStatus() == 1) {
+ //鐘舵�佷慨鏀逛负锛� 宸茶浆鍘嗗彶妗�
+ pickSheet.setStatus(3);
+ if (!pickSheetService.updateById(pickSheet)) {
+ throw new CoolException("杞巻鍙叉。澶辫触锛侊紒");
+ } else{
+ if (!pickSheetDetlService.update(new LambdaUpdateWrapper<PickSheetDetl>().eq(PickSheetDetl::getPickId, pickSheet.getId()).set(PickSheetDetl::getStatus, 3))) {
+ throw new CoolException("鎷h揣鍗曟槑缁嗚浆鍘嗗彶妗eけ璐ワ紒锛�");
+ }
+ }
+ } else {
+ throw new CoolException("璇峰嬁鎿嶄綔鍘嗗彶妗f暟鎹紒锛�");
+ }
+ List<PickSheetDetl> sheetDetls = pickSheetDetlService.list(new LambdaQueryWrapper<PickSheetDetl>().eq(PickSheetDetl::getPickId, pickSheet.getId()));
+ Map<Long, List<PickSheetDetl>> listMap = sheetDetls.stream().collect(Collectors.groupingBy(PickSheetDetl::getLocId));
+ listMap.keySet().forEach(key -> {
+ Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getId, key));
+ listMap.get(key).forEach(pickDetl -> {
+ LocDetl detl = locDetlService.getOne(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getId, pickDetl.getLocDetlId()));
+ if (Objects.isNull(detl)) {
+ throw new CoolException("鏁版嵁閿欒锛侊紒");
+ }
+ //鏇存柊閿佸畾搴撳瓨
+ BigDecimal workQty = BigDecimal.valueOf(detl.getAnfme()).subtract(pickDetl.getAnfme());
+ detl.setWorkQty(workQty.doubleValue());
+ //璁$畻缁撴灉灏忎簬绛変簬闆讹紝绉诲嚭搴撳瓨鏄庣粏
+ BigDecimal qty = BigDecimal.valueOf(detl.getAnfme()).subtract(pickDetl.getAnfme());
+ detl.setAnfme(qty.doubleValue());
+ if (qty.compareTo(new BigDecimal("0.00")) <= 0) {
+ detl.setDeleted(1);
+ if (!locDetlService.removeById(detl)) {
+ throw new CoolException("搴撳瓨鏄庣粏鍒犻櫎澶辫触锛侊紒");
+ }
+ } else { //缁撴灉澶т簬闆讹紝鏇存柊搴撳瓨鏄庣粏
+ if (!locDetlService.updateById(detl)) {
+ throw new CoolException("搴撳瓨鏄庣粏鏇存柊澶辫触锛侊紒");
+ }
+ }
+ });
+ /**鏄庣粏鏇存柊瀹屾垚鍚庯紝鍒ゆ柇鏄惁涓虹┖锛屼负绌烘洿鏂颁富鍗曠姸鎬佷负绌哄簱锛屾嫋鐩樼爜娓呯┖锛屼笉涓虹┖涓嶅仛鏇存柊**/
+ List<LocDetl> list = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, loc.getId()).eq(LocDetl::getDeleted, 0));
+ if (list.isEmpty()) {
+ boolean update = locService.update(new LambdaUpdateWrapper<Loc>()
+ .eq(Loc::getId, loc.getId())
+ .set(Loc::getBarcode, null)
+ .set(Loc::getUpdateTime, new Date())
+ .set(Loc::getLocStsId, LocStsType.O.val()));
+ if (update) {
+ throw new CoolException("搴撳瓨鏇存柊澶辫触锛侊紒 ");
+ }
+ }
+ });
+ return true;
+ }
+
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PickSheetDetlServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PickSheetDetlServiceImpl.java
new file mode 100644
index 0000000..73ae30c
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PickSheetDetlServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.wms.asrs.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.asrs.wms.asrs.entity.PickSheetDetl;
+import com.zy.asrs.wms.asrs.mapper.ManPickSheetDetlMapper;
+import com.zy.asrs.wms.asrs.service.PickSheetDetlService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class PickSheetDetlServiceImpl extends ServiceImpl<ManPickSheetDetlMapper, PickSheetDetl> implements PickSheetDetlService {
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PickSheetServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PickSheetServiceImpl.java
index 11d1800..5f2a4cf 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PickSheetServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/PickSheetServiceImpl.java
@@ -1,12 +1,72 @@
package com.zy.asrs.wms.asrs.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zy.asrs.wms.asrs.entity.PickSheet;
+import com.zy.asrs.wms.asrs.entity.PickSheetDetl;
+import com.zy.asrs.wms.asrs.entity.param.PageRequest;
+import com.zy.asrs.wms.asrs.mapper.ManPickSheetDetlMapper;
import com.zy.asrs.wms.asrs.mapper.ManPickSheetMapper;
import com.zy.asrs.wms.asrs.service.PickSheetService;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Objects;
@Service
public class PickSheetServiceImpl extends ServiceImpl<ManPickSheetMapper, PickSheet> implements PickSheetService {
+ @Autowired
+ private ManPickSheetDetlMapper pickSheetDetlMapper;
+
+ /**
+ * 鑾峰彇鎷h揣鍗曞垪琛�
+ * @param params
+ * @return
+ */
+ @Override
+ public IPage<PickSheet> getOutFlatSheet(PageRequest params) {
+ LambdaQueryWrapper<PickSheet> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(PickSheet::getDeleted, 0).eq(PickSheet::getStatus, 1);
+ if (!Objects.isNull(params.getParams())) {
+ lambdaQueryWrapper.eq(!Objects.isNull(params.getParams().get("pickNo")),PickSheet::getPickNo, params.getParams().get("pickNo"))
+ .eq(!Objects.isNull(params.getParams().get("id")), PickSheet::getId, params.getParams().get("id"))
+ .eq(!Objects.isNull(params.getParams().get("waveNo")), PickSheet::getWaveNo, params.getParams().get("waveNo"));
+ }
+ return this.baseMapper.selectMapsPage(params.getPage(), lambdaQueryWrapper);
+ }
+
+ /**
+ * 鑾峰彇鎷h揣鍗曟槑缁�
+ * @param pageRequest
+ * @return
+ */
+ @Override
+ public IPage<PickSheetDetl> getSheetDetl(PageRequest pageRequest) {
+ LambdaQueryWrapper<PickSheetDetl> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ lambdaQueryWrapper.eq(PickSheetDetl::getDeleted, 0).eq(PickSheetDetl::getStatus, 1);
+ if (!Objects.isNull(pageRequest.getParams())) {
+ lambdaQueryWrapper.eq(!Objects.isNull(pageRequest.getParams().get("maktx")),PickSheetDetl::getMaktx, pageRequest.getParams().get("maktx"))
+ .eq(!Objects.isNull(pageRequest.getParams().get("batch")), PickSheetDetl::getBatch, pageRequest.getParams().get("batch"))
+ .eq(!Objects.isNull(pageRequest.getParams().get("mantr")), PickSheetDetl::getMatnr, pageRequest.getParams().get("mantr"))
+ .eq(!Objects.isNull(pageRequest.getParams().get("locNo")), PickSheetDetl::getLocNo, pageRequest.getParams().get("locNo"))
+ .eq(!Objects.isNull(pageRequest.getParams().get("pickId")), PickSheetDetl::getPickId, pageRequest.getParams().get("pickId"))
+ .eq(!Objects.isNull(pageRequest.getParams().get("barcode")), PickSheetDetl::getBarcode, pageRequest.getParams().get("barcode"));
+ }
+ return pickSheetDetlMapper.selectMapsPage(pageRequest.getPage(), lambdaQueryWrapper);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public int removePickSheet(Long id) {
+ if (this.update(new LambdaUpdateWrapper<PickSheet>().eq(PickSheet::getId, id).set(PickSheet::getDeleted, 1))) {
+ return pickSheetDetlMapper.update(new LambdaUpdateWrapper<PickSheetDetl>().eq(PickSheetDetl::getPickId, id).set(PickSheetDetl::getDeleted, 1));
+ }
+ return 0;
+ }
+
+
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/domain/BaseParam.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/domain/BaseParam.java
index 1617c79..9145e52 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/domain/BaseParam.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/common/domain/BaseParam.java
@@ -1,6 +1,8 @@
package com.zy.asrs.wms.common.domain;
import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.Data;
import java.io.Serializable;
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetDetlMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetDetlMapper.xml
index 1506ddd..2b964bb 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetDetlMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetDetlMapper.xml
@@ -4,8 +4,6 @@
<resultMap id="BaseResultMap" type="com.zy.asrs.wms.asrs.entity.PickSheetDetl">
<id column="id" jdbcType="BIGINT" property="id" />
<result column="pick_id" jdbcType="BIGINT" property="pickId" />
- <result column="order_id" jdbcType="BIGINT" property="orderId" />
- <result column="order_detl_id" jdbcType="BIGINT" property="orderDetlId" />
<result column="mat_id" jdbcType="BIGINT" property="matId" />
<result column="loc_id" jdbcType="BIGINT" property="locId" />
<result column="maktx" jdbcType="VARCHAR" property="maktx" />
diff --git a/zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetMapper.xml b/zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetMapper.xml
index c5d442c..ea7001b 100644
--- a/zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetMapper.xml
+++ b/zy-asrs-wms/src/main/resources/mapper/asrs/PickSheetMapper.xml
@@ -21,4 +21,5 @@
created_by, updated_by, `status`, deleted
</sql>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.1