From 08cd807032b661ec5061ab822ccbf53b41d7d438 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 03 十二月 2024 14:12:53 +0800
Subject: [PATCH] #库位移转
---
zy-asrs-admin/src/views/loc/stockTransfer/index.vue | 326 +++++++++++++++++++++++++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WorkController.java | 21 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java | 141 ++++++++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java | 85 +++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocTransferParam.java | 15 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/WorkService.java | 4
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocController.java | 22 ++
7 files changed, 610 insertions(+), 4 deletions(-)
diff --git a/zy-asrs-admin/src/views/loc/stockTransfer/index.vue b/zy-asrs-admin/src/views/loc/stockTransfer/index.vue
new file mode 100644
index 0000000..328494c
--- /dev/null
+++ b/zy-asrs-admin/src/views/loc/stockTransfer/index.vue
@@ -0,0 +1,326 @@
+<script setup>
+import { ref, reactive } from 'vue';
+import { useRouter } from "vue-router";
+import { get, post, postForm } from '@/utils/request.js'
+import { message, Modal } from 'ant-design-vue';
+import { logout } from '@/config.js';
+import { formatMessage } from '@/utils/localeUtils.js';
+import useTableSearch from '@/utils/tableUtils.jsx';
+import MatQueryView from '@/components/mat/matQuery/index.vue'
+
+const router = useRouter();
+
+const TABLE_KEY = 'table-locDetl';
+const matQueryChild = ref(null)
+const sourceLocNo = ref(null)
+const targetLocNo = ref(null)
+
+let tableData = ref([]);
+getColumns();
+
+const {
+ getColumnSearchProps,
+ handleResizeColumn,
+} = useTableSearch();
+
+const state = reactive({
+ selectedRowKeys: [],
+ loading: false,
+ columns: [],
+});
+const onSelectChange = selectedRowKeys => {
+ // console.log('selectedRowKeys changed: ', selectedRowKeys);
+ state.selectedRowKeys = selectedRowKeys;
+};
+
+state.columns = [
+ {
+ title: formatMessage('db.man_loc_detl.loc_no', '搴撲綅鍙�'),
+ dataIndex: 'locNo',
+ width: 140,
+ ellipsis: true,
+ ...getColumnSearchProps('locNo'),
+ },
+ {
+ title: formatMessage('db.man_loc_detl.matnr', '鍟嗗搧缂栧彿'),
+ dataIndex: 'matnr',
+ width: 140,
+ ellipsis: true,
+ ...getColumnSearchProps('matnr'),
+ },
+ {
+ title: formatMessage('db.man_loc_detl.batch', '鎵瑰彿'),
+ dataIndex: 'batch',
+ width: 140,
+ ellipsis: true,
+ ...getColumnSearchProps('batch'),
+ },
+ {
+ title: formatMessage('db.man_loc_detl.anfme', '搴撳瓨鏁伴噺'),
+ dataIndex: 'anfme',
+ width: 140,
+ ellipsis: true,
+ },
+];
+
+let columnsOther = [
+ // {
+ // title: formatMessage('db.man_loc_detl.loc_id', '搴撲綅'),
+ // dataIndex: 'locId$',
+ // width: 140,
+ // ellipsis: true,
+ // ...getColumnSearchProps('locId$'),
+ // },
+ // {
+ // title: formatMessage('db.man_loc_detl.mat_id', '鍟嗗搧'),
+ // dataIndex: 'matId$',
+ // width: 140,
+ // ellipsis: true,
+ // ...getColumnSearchProps('matId$'),
+ // },
+ {
+ title: formatMessage('db.man_loc_detl.order_no', '璁㈠崟鍙�'),
+ dataIndex: 'orderNo',
+ width: 140,
+ ellipsis: true,
+ ...getColumnSearchProps('orderNo'),
+ },
+ {
+ title: formatMessage('db.man_loc_detl.anfme', '鏁伴噺'),
+ dataIndex: 'anfme',
+ width: 140,
+ ellipsis: true,
+ ...getColumnSearchProps('anfme'),
+ },
+ {
+ title: formatMessage('db.man_loc_detl.freeze', '鏄惁鍐荤粨'),
+ dataIndex: 'freeze$',
+ width: 140,
+ ellipsis: true,
+ ...getColumnSearchProps('freeze$'),
+ },
+ // {
+ // title: formatMessage('db.man_loc_detl.status', '鐘舵��'),
+ // dataIndex: 'status$',
+ // width: 140,
+ // ellipsis: true,
+ // ...getColumnSearchProps('status$'),
+ // },
+ // {
+ // title: formatMessage('db.man_loc_detl.create_time', '娣诲姞鏃堕棿'),
+ // dataIndex: 'createTime$',
+ // width: 140,
+ // ellipsis: true,
+ // ...getColumnSearchProps('createTime$'),
+ // },
+ // {
+ // title: formatMessage('db.man_loc_detl.create_by', '娣诲姞浜哄憳'),
+ // dataIndex: 'createBy$',
+ // width: 140,
+ // ellipsis: true,
+ // ...getColumnSearchProps('createBy$'),
+ // },
+ // {
+ // title: formatMessage('db.man_loc_detl.update_time', '淇敼鏃堕棿'),
+ // dataIndex: 'updateTime$',
+ // width: 140,
+ // ellipsis: true,
+ // ...getColumnSearchProps('updateTime$'),
+ // },
+ // {
+ // title: formatMessage('db.man_loc_detl.update_by', '淇敼浜哄憳'),
+ // dataIndex: 'updateBy$',
+ // width: 140,
+ // ellipsis: true,
+ // ...getColumnSearchProps('updateBy$'),
+ // },
+ {
+ title: formatMessage('db.man_loc_detl.memo', '澶囨敞'),
+ dataIndex: 'memo',
+ width: 140,
+ ellipsis: true,
+ ...getColumnSearchProps('memo'),
+ },
+]
+
+let fieldList = [];
+//鍔犺浇鎵╁睍瀛楁
+async function getColumns() {
+ let fieldResp = await post('/api/matField/list', {
+ unique: 1
+ })
+ let fieldResult = fieldResp.data;
+ let tmp = state.columns;
+ if (fieldResult.code == 200) {
+ let data = fieldResult.data;
+ data.forEach((item) => {
+ let filed = {
+ title: formatMessage(item.language, item.describe),
+ name: item.name,
+ dataIndex: item.name,
+ key: item.name,
+ width: 140,
+ editable: true,
+ ...getColumnSearchProps(item.name),
+ }
+ tmp.push(filed)
+ fieldList.push(filed)
+ })
+
+ tmp = tmp.concat(columnsOther)
+
+ state.columns = tmp;
+ } else if (result.code === 401) {
+ message.error(result.msg);
+ logout()
+ } else {
+ message.error(result.msg);
+ }
+}
+
+const handleMatQueryOk = (result) => {
+ let tmp = [];
+
+ if (tableData.value != undefined) {
+ tmp = [...tableData.value]
+ }
+
+ for (let i = 0; i < result.length; i++) {
+ let item = result[i]
+ item.anfme = 0;
+ item.qty = 0;
+ item.matId = item.id;
+ item.id = null;
+
+ fieldList.forEach((filed) => {
+ item[filed.key] = ''
+ })
+
+ tmp.push(item)
+ }
+
+ tableData.value = tmp;
+}
+
+const onSourceLocNoChange = () => {
+ state.loading = true;
+ tableData.value = null;
+
+ postForm('/api/loc/search/like/locNo', {
+ locNo: sourceLocNo.value,
+ }).then(resp => {
+ let result = resp.data;
+ if (result.code == 200) {
+ let detls = [];
+ result.data.forEach((item) => {
+ item.qty = item.anfme;
+ detls.push(item)
+ })
+ tableData.value = detls;
+ state.loading = false;
+ } else {
+ message.error(result.msg);
+ tableData.value = null;
+ }
+ })
+}
+
+const submitTransfer = () => {
+ Modal.confirm({
+ title: formatMessage('page.stockTransfer.transfer', '搴撳瓨绉昏浆'),
+ content: formatMessage('page.stockTransfer.confirm', '纭畾搴撳瓨绉昏浆鍚楋紵'),
+ maskClosable: true,
+ onOk: async () => {
+ confirmTransfer()
+ },
+ });
+
+}
+
+const confirmTransfer = () => {
+ if (sourceLocNo.value == null) {
+ message.error(formatMessage('page.stockTransfer.sourceLocNoNull', '璇疯緭鍏ユ簮搴撲綅'));
+ return;
+ }
+
+ if(targetLocNo.value == null) {
+ message.error(formatMessage('page.stockTransfer.targetLocNoNull', '鐩爣搴撲綅涓虹┖'));
+ return;
+ }
+
+ post('/api/loc/transfer', {
+ sourceLocNo: sourceLocNo.value,
+ targetLocNo: targetLocNo.value
+ }).then(resp => {
+ let result = resp.data;
+ if (result.code == 200) {
+ message.success(formatMessage('page.stockTransfer.success', '搴撳瓨绉昏浆鎴愬姛'));
+
+ sourceLocNo.value = null;
+ targetLocNo.value = null;
+ } else {
+ message.error(result.msg);
+ }
+ })
+}
+
+const locNoQueryList = ref(null);
+locNoQuery("");
+function locNoQuery(locNo) {
+ postForm('/api/loc/search/empty/locNo', {
+ locNo: locNo
+ }).then(resp => {
+ let result = resp.data;
+ let tmp = []
+ result.data.forEach((item) => {
+ tmp.push({
+ value: item.locNo,
+ label: item.locNo
+ })
+ })
+ locNoQueryList.value = tmp;
+ })
+}
+
+const locNoSearch = (val) => {
+ locNoQuery(val)
+}
+
+</script>
+
+<script>
+export default {
+ name: '搴撳瓨绉昏浆'
+}
+</script>
+
+<template>
+ <div>
+ <div style="margin-bottom: 20px;display: flex;align-items: center;">
+ <a-input v-model:value="sourceLocNo" :placeholder="formatMessage('page.stockTransfer.sourceLocNo', '婧愬簱浣�')"
+ style="width: 200px;" @change="onSourceLocNoChange" />
+ <span style="margin-left: 10px;margin-right: 10px;">-</span>
+ <a-select v-model:value="targetLocNo" :placeholder="formatMessage('page.stockTransfer.targetLocNo', '鐩爣搴撲綅')"
+ style="width: 200px" show-search :options="locNoQueryList" @search="locNoSearch" optionFilterProp="label"
+ optionLabelProp="label">
+ </a-select>
+ </div>
+ <div class="table-header">
+ <div>
+ <a-button type="primary" @click="submitTransfer">搴撲綅绉昏浆</a-button>
+ </div>
+ </div>
+ <a-table :row-selection="{ selectedRowKeys: state.selectedRowKeys, onChange: onSelectChange }"
+ :data-source="tableData" :defaultExpandAllRows="false" :key="TABLE_KEY" rowKey="id"
+ :scroll="{ y: 768, scrollToFirstRowOnChange: true }" :columns="state.columns" :loading="state.loading"
+ @resizeColumn="handleResizeColumn">
+ <template #bodyCell="{ column, text, record }">
+
+ </template>
+ </a-table>
+
+ <MatQueryView ref="matQueryChild" @handle-ok="handleMatQueryOk" />
+ </div>
+</template>
+
+<style></style>
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocController.java
index 38a0079..fba74c9 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocController.java
@@ -5,6 +5,7 @@
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.wms.asrs.entity.LocDetl;
+import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
import com.zy.asrs.wms.asrs.service.LocDetlService;
import com.zy.asrs.wms.common.annotation.OperationLog;
import com.zy.asrs.wms.common.domain.BaseParam;
@@ -66,6 +67,27 @@
return R.ok().add(map);
}
+ @PreAuthorize("hasAuthority('asrs:loc:list')")
+ @PostMapping("/loc/search/like/locNo")
+ public R search(@RequestParam("locNo") String locNo) {
+ if (Cools.isEmpty(locNo)) {
+ return R.ok().add(new ArrayList<>());
+ }
+ List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().like(LocDetl::getLocNo, locNo));
+ locDetls = locDetlService.parseLocDetl(locDetls);
+ return R.ok().add(locDetls);
+ }
+
+ @PreAuthorize("hasAuthority('asrs:loc:list')")
+ @PostMapping("/loc/search/empty/locNo")
+ public R searchEmpty(@RequestParam("locNo") String locNo) {
+ if (Cools.isEmpty(locNo)) {
+ return R.ok().add(locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getLocStsId, LocStsType.O.val())));
+ }
+ List<Loc> list = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getLocStsId, LocStsType.O.val()).like(Loc::getLocNo, locNo));
+ return R.ok().add(list);
+ }
+
@PreAuthorize("hasAuthority('asrs:loc:save')")
@OperationLog("娣诲姞搴撲綅")
@PostMapping("/loc/save")
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WorkController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WorkController.java
index cf6b603..2e6e97b 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WorkController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WorkController.java
@@ -5,12 +5,13 @@
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.framework.exception.CoolException;
-import com.zy.asrs.wms.asrs.entity.Loc;
-import com.zy.asrs.wms.asrs.entity.LocDetl;
-import com.zy.asrs.wms.asrs.entity.LocDetlField;
-import com.zy.asrs.wms.asrs.entity.MatField;
+import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
+import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
+import com.zy.asrs.wms.asrs.entity.enums.TaskStsType;
import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
import com.zy.asrs.wms.asrs.entity.param.LocAdjustParam;
+import com.zy.asrs.wms.asrs.entity.param.LocTransferParam;
import com.zy.asrs.wms.asrs.service.*;
import com.zy.asrs.wms.common.annotation.OperationLog;
import com.zy.asrs.wms.system.controller.BaseController;
@@ -118,4 +119,16 @@
return R.ok();
}
+ @OperationLog("搴撳瓨绉昏浆")
+ @PostMapping("/loc/transfer")
+ @Transactional
+ public R locTransfer(@RequestBody LocTransferParam param) {
+ try {
+ workService.locTransfer(param);
+ return R.ok();
+ } catch (Exception e) {
+ return R.error(e.getMessage());
+ }
+ }
+
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocTransferParam.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocTransferParam.java
new file mode 100644
index 0000000..74b10d0
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocTransferParam.java
@@ -0,0 +1,15 @@
+package com.zy.asrs.wms.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+import java.util.Map;
+
+@Data
+public class LocTransferParam {
+
+ private String sourceLocNo;
+
+ private String targetLocNo;
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/WorkService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/WorkService.java
index dbde948..bd47a2d 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/WorkService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/WorkService.java
@@ -3,6 +3,7 @@
import com.zy.asrs.wms.asrs.entity.Loc;
import com.zy.asrs.wms.asrs.entity.param.FieldParam;
import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
+import com.zy.asrs.wms.asrs.entity.param.LocTransferParam;
import java.util.List;
@@ -38,4 +39,7 @@
//鎷f枡浠诲姟
boolean pickTask(Long taskId);
+ //搴撲綅绉昏浆
+ boolean locTransfer(LocTransferParam param);
+
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
index 97ceb6c..cdbe93b 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
@@ -1,11 +1,14 @@
package com.zy.asrs.wms.asrs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
import com.zy.asrs.framework.exception.CoolException;
import com.zy.asrs.wms.asrs.entity.*;
import com.zy.asrs.wms.asrs.entity.enums.*;
import com.zy.asrs.wms.asrs.entity.param.FieldParam;
import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
+import com.zy.asrs.wms.asrs.entity.param.LocTransferParam;
import com.zy.asrs.wms.asrs.service.*;
import com.zy.asrs.wms.utils.LocUtils;
import com.zy.asrs.wms.utils.OrderUtils;
@@ -37,6 +40,10 @@
private OrderDetlService orderDetlService;
@Autowired
private LocService locService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private LocDetlFieldService locDetlFieldService;
@Autowired
private LocStsService locStsService;
@Autowired
@@ -499,8 +506,35 @@
throw new CoolException("娉㈡鏄庣粏鏇存柊澶辫触");
}
}
+ break;
+ case 11://搴撲綅绉昏浆
+ Loc originLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()));
+ if(originLoc == null){
+ throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
+ }
+ if (originLoc.getLocStsId() != LocStsType.R.val()) {
+ throw new CoolException("婧愬簱浣嶇姸鎬佷笉澶勪簬R.鍑哄簱棰勭害");
+ }
+ loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()));
+ if(loc == null){
+ throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�");
+ }
+ if(loc.getLocStsId() != LocStsType.S.val()){
+ throw new CoolException("鐩爣搴撲綅鐘舵�佷笉澶勪簬S.鍏ュ簱棰勭害");
+ }
+ originLoc.setLocStsId(LocStsType.F.val());
+ originLoc.setUpdateTime(new Date());
+ if(!locService.updateById(originLoc)){
+ throw new CoolException("搴撲綅鐘舵�佸彉鏇村け璐�");
+ }
+
+ loc.setLocStsId(LocStsType.O.val());
+ loc.setUpdateTime(new Date());
+ if(!locService.updateById(loc)){
+ throw new CoolException("搴撲綅鐘舵�佸彉鏇村け璐�");
+ }
break;
}
@@ -650,4 +684,111 @@
return true;
}
+
+ @Override
+ public boolean locTransfer(LocTransferParam param) {
+ if (param == null) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖");
+ }
+
+ if (Cools.isEmpty(param.getSourceLocNo())) {
+ throw new CoolException("婧愬簱浣嶄笉鑳戒负绌�");
+ }
+
+ if (Cools.isEmpty(param.getTargetLocNo())) {
+ throw new CoolException("鐩爣搴撲綅涓嶈兘涓虹┖");
+ }
+
+ Loc sourceLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, param.getSourceLocNo()));
+ if (sourceLoc == null) {
+ throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
+ }
+
+ if (sourceLoc.getLocStsId() != LocStsType.F.val()) {
+ throw new CoolException("婧愬簱浣嶉潪鍦ㄥ簱鐘舵��");
+ }
+
+ Loc targetLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, param.getTargetLocNo()));
+ if (targetLoc == null) {
+ throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�");
+ }
+
+ if(targetLoc.getLocStsId() != LocStsType.O.val()){
+ throw new CoolException("鐩爣搴撲綅闈炵┖鐘舵��");
+ }
+
+ TaskType taskType = taskTypeService.getById(11);
+ if (taskType == null) {
+ throw new CoolException("浠诲姟绫诲瀷涓嶅瓨鍦�");
+ }
+
+ Task task = new Task();
+ task.setTaskNo(this.generateTaskNo(taskType.getId()));//浠诲姟鍙�
+ task.setTaskSts(TaskStsType.GENERATE_IN.id);//1.鐢熸垚鍏ュ簱浠诲姟
+ task.setTaskType(taskType.getId());//浠诲姟绫诲瀷
+ task.setIoPri(this.generateIoPri(taskType.getId()));//浼樺厛绾�
+ task.setOriginLoc(param.getSourceLocNo());
+ task.setTargetLoc(param.getTargetLocNo());
+ task.setOriginSite(null);
+ task.setTargetSite(null);
+ task.setBarcode(sourceLoc.getBarcode());//鎵樼洏鐮�
+ boolean taskSave = taskService.save(task);
+ if (!taskSave) {
+ throw new CoolException("浠诲姟鐢熸垚澶辫触");
+ }
+
+ List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, sourceLoc.getId()));
+ if(locDetls.isEmpty()){
+ throw new CoolException("婧愬簱浣嶆槑缁嗕笉瀛樺湪");
+ }
+
+ //鐢熸垚浠诲姟鏄庣粏
+ for (LocDetl locDetl : locDetls) {
+ TaskDetl taskDetl = new TaskDetl();
+ taskDetl.setTaskId(task.getId());
+ taskDetl.setTaskNo(task.getTaskNo());
+ taskDetl.setAnfme(locDetl.getAnfme());//鏁伴噺
+ taskDetl.setStock(0D);//搴撳瓨
+ taskDetl.setBatch(locDetl.getBatch());//鎵瑰彿
+ taskDetl.setBarcode(sourceLoc.getBarcode());
+ taskDetl.setMatId(locDetl.getMatId());
+ taskDetl.setMatnr(locDetl.getMatnr());
+ boolean taskDetlSave = taskDetlService.save(taskDetl);
+ if(!taskDetlSave){
+ throw new CoolException("浠诲姟鏄庣粏鐢熸垚澶辫触");
+ }
+
+ //鐢熸垚鏄庣粏鎵╁睍
+ List<LocDetlField> locDetlFieldList = locDetlFieldService.list(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId()));
+ for (LocDetlField locDetlField : locDetlFieldList) {
+ TaskDetlField taskDetlField = new TaskDetlField();
+ taskDetlField.setName(locDetlField.getName());
+ taskDetlField.setFieldId(locDetlField.getFieldId());
+ taskDetlField.setDetlId(taskDetl.getId());
+ taskDetlField.setValue(locDetlField.getValue());
+ boolean taskDetlFieldSave = taskDetlFieldService.save(taskDetlField);
+ if(!taskDetlFieldSave){
+ throw new CoolException("鏄庣粏鎵╁睍鐢熸垚澶辫触");
+ }
+ }
+ }
+
+ //搴撲綅F => R
+ sourceLoc.setLocStsId(LocStsType.R.val());
+ sourceLoc.setUpdateTime(new Date());
+ boolean sourceLocUpdate = locService.updateById(sourceLoc);
+ if(!sourceLocUpdate){
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+
+ //搴撲綅O => S
+ targetLoc.setLocStsId(LocStsType.S.val());
+ targetLoc.setUpdateTime(new Date());
+ boolean targetLocUpdate = locService.updateById(targetLoc);
+ if(!targetLocUpdate){
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+
+ return true;
+ }
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
index 1f72b35..7f0389f 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
@@ -74,6 +74,9 @@
case 1://鍏ュ簱
executeTask1(task);
break;
+ case 11://搴撲綅绉昏浆
+ executeTask11(task);
+ break;
case 53://鎷f枡鍐嶅叆搴�
executeTask53(task);
break;
@@ -204,6 +207,88 @@
}
}
+ //搴撲綅绉昏浆
+ private void executeTask11(Task task) {
+ Long hostId = task.getHostId();
+
+ Loc originLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getOriginLoc()).eq(Loc::getHostId, hostId));
+ if (originLoc == null) {
+ throw new CoolException("婧愬簱浣嶄笉瀛樺湪");
+ }
+
+ if (originLoc.getLocStsId() != LocStsType.R.val()) {
+ throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬R.鍑哄簱棰勭害");
+ }
+
+ Loc targetLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getLocNo, task.getTargetLoc()).eq(Loc::getHostId, hostId));
+ if (targetLoc == null) {
+ throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�");
+ }
+
+ if (targetLoc.getLocStsId() != LocStsType.S.val()) {
+ throw new CoolException("搴撲綅鐘舵�佷笉澶勪簬S.鍏ュ簱棰勭害");
+ }
+
+ originLoc.setLocStsId(LocStsType.O.val());
+ originLoc.setUpdateTime(new Date());
+ originLoc.setBarcode("");
+ if (!locService.updateById(originLoc)) {
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+
+ targetLoc.setLocStsId(LocStsType.F.val());
+ targetLoc.setUpdateTime(new Date());
+ targetLoc.setBarcode(task.getBarcode());
+ if (!locService.updateById(targetLoc)) {
+ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐�");
+ }
+
+ List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
+ if (taskDetls.isEmpty()) {
+ throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
+ }
+
+ //娣诲姞搴撳瓨鏄庣粏
+ for (TaskDetl taskDetl : taskDetls) {
+ LocDetl locDetl = new LocDetl();
+ locDetl.setLocId(targetLoc.getId());
+ locDetl.setLocNo(targetLoc.getLocNo());
+ locDetl.setMatId(taskDetl.getMatId());
+ locDetl.setMatnr(taskDetl.getMat$().getMatnr());
+ locDetl.setOrderNo(taskDetl.getOrderNo());
+ locDetl.setBatch(taskDetl.getBatch());
+ locDetl.setAnfme(taskDetl.getAnfme());
+ locDetl.setHostId(hostId);
+ if (!locDetlService.save(locDetl)) {
+ throw new CoolException("鎻掑叆搴撳瓨鏄庣粏澶辫触");
+ }
+
+ //娣诲姞搴撳瓨鏄庣粏鎵╁睍瀛楁
+ List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId));
+ for (TaskDetlField detlField : detlFields) {
+ LocDetlField locDetlField = new LocDetlField();
+ locDetlField.setDetlId(locDetl.getId());
+ locDetlField.setFieldId(detlField.getFieldId());
+ locDetlField.setName(detlField.getName());
+ locDetlField.setValue(detlField.getValue());
+ locDetlField.setHostId(hostId);
+ if (!locDetlFieldService.save(locDetlField)) {
+ throw new CoolException("鎻掑叆鏄庣粏鎵╁睍瀛楁澶辫触");
+ }
+ }
+ }
+
+ List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocId, originLoc.getId()));
+ for (LocDetl locDetl : locDetls) {
+ boolean remove = locDetlFieldService.remove(new LambdaQueryWrapper<LocDetlField>().eq(LocDetlField::getDetlId, locDetl.getId()));
+ boolean result = locDetlService.removeById(locDetl.getId());
+ if (!result) {
+ throw new CoolException("娓呴櫎鏄庣粏澶辫触");
+ }
+ }
+
+ }
+
//鎷f枡鍐嶅叆搴�
private void executeTask53(Task task) {
Long hostId = task.getHostId();
--
Gitblit v1.9.1