zy-asrs-admin/src/components/order/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-admin/src/views/in/waitPakin/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaitPakinController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/template/WaitPakinTemplate.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaitPakinServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
zy-asrs-admin/src/components/order/index.vue
@@ -252,6 +252,7 @@ let result = info.file.response; if(result.code == 200) { message.success(`${info.file.name} ${formatMessage('page.upload.success', '上传成功')}`); getPage() }else { message.error(result.msg); } zy-asrs-admin/src/views/in/waitPakin/index.vue
@@ -3,11 +3,16 @@ import { useRouter } from "vue-router"; import { get, post, postBlob } from '@/utils/request.js' import { message, Modal } from 'ant-design-vue'; import { logout } from '@/config.js'; import { globalState, logout } from '@/config.js'; import EditView from './edit.vue' import { formatMessage } from '@/utils/localeUtils.js'; import useTableSearch from '@/utils/tableUtils.jsx'; import GenerateTaskView from '@/components/task/generateTask/index.vue'; import { DownOutlined, UploadOutlined, DownloadOutlined, } from "@ant-design/icons-vue"; const context = getCurrentInstance()?.appContext.config.globalProperties; const router = useRouter(); @@ -226,6 +231,45 @@ generateTaskChild.value.open = true; } const handleSyncOrderClick = (e) => { if (e.key == 'import') { importTemplate() } else if (e.key == 'export') { exportTemplate() } } const importTemplate = () => { //导入模板 } const exportTemplate = () => { //模板导出 postBlob('/api/waitPakin/exportTemplate', {}).then(result => { const blob = new Blob([result.data], { type: 'application/vnd.ms-excel' }); window.location.href = window.URL.createObjectURL(blob); return true; }) } const fileList = ref([]); const handleUploadChange = info => { if (info.file.status !== 'uploading') { // console.log(info.file, info.fileList); } if (info.file.status === 'done') { let result = info.file.response; if(result.code == 200) { message.success(`${info.file.name} ${formatMessage('page.upload.success', '上传成功')}`); getPage() }else { message.error(result.msg); } } else if (info.file.status === 'error') { message.error(`${info.file.name} file upload failed.`); } }; </script> <script> @@ -241,6 +285,30 @@ <a-input-search v-model:value="searchInput" :placeholder="formatMessage('page.input', '请输入')" style="width: 200px;" @search="onSearch" /> <div class="table-header-right"> <a-dropdown> <template #overlay> <a-menu @click="handleSyncOrderClick"> <a-menu-item key="import"> <a-upload v-model:file-list="fileList" name="file" action="/api/waitPakin/upload" @change="handleUploadChange" :showUploadList="false" :headers="{ Authorization: globalState.token }"> <UploadOutlined /> {{ formatMessage('page.waitPakin.import', '组托导入') }} </a-upload> </a-menu-item> <a-menu-item key="export"> <DownloadOutlined /> {{ formatMessage('page.waitPakin.export.template', '导出模板') }} </a-menu-item> </a-menu> </template> <a-button> {{ formatMessage('page.waitPakin.sync', '组托同步') }} <DownOutlined /> </a-button> </a-dropdown> <a-button @click="generateTask()" type="primary">{{ formatMessage('page.generateTask', '生成任务') }}</a-button> <a-button @click="handleEdit(null)" type="primary">{{ formatMessage('page.add', '添加') }}</a-button> <a-button @click="handleExport">{{ formatMessage('page.export', '导出') }}</a-button> zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaitPakinController.java
@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.template.WaitPakinTemplate; import com.zy.asrs.wms.asrs.service.*; import com.zy.asrs.wms.common.annotation.OperationLog; import com.zy.asrs.wms.common.domain.BaseParam; @@ -15,8 +17,8 @@ import com.zy.asrs.wms.utils.ExcelUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.*; @@ -27,6 +29,10 @@ @Autowired private WaitPakinService waitPakinService; @Autowired private OrderService orderService; @Autowired private OrderDetlService orderDetlService; @PreAuthorize("hasAuthority('asrs:waitPakin:list')") @PostMapping("/waitPakin/page") @@ -122,4 +128,52 @@ ExcelUtil.build(ExcelUtil.create(waitPakinService.list(), WaitPakin.class), response); } @PreAuthorize("hasAuthority('asrs:waitPakin:list')") @PostMapping("/waitPakin/exportTemplate") public void exportTemplate(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { ArrayList<WaitPakinTemplate> list = new ArrayList<>(); ExcelUtil.build(ExcelUtil.create(list, WaitPakinTemplate.class), response); } @PostMapping("/waitPakin/upload") public R upload(@RequestParam("file") MultipartFile file) { List<WaitPakinTemplate> list = ExcelUtil.parseExcelFile(file, WaitPakinTemplate.class); for (WaitPakinTemplate waitPakinTemplate : list) { Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, waitPakinTemplate.getOrderNo()).eq(Order::getStatus, 1)); if (order == null) { throw new CoolException("订单不存在"); } LambdaQueryWrapper<OrderDetl> wrapper = new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()); if (!Cools.isEmpty(waitPakinTemplate.getBatch())) { wrapper.eq(OrderDetl::getBatch, waitPakinTemplate.getBatch()); } List<OrderDetl> orderDetls = orderDetlService.list(wrapper); if (orderDetls.isEmpty()) { throw new CoolException("订单明细不存在"); } Long detlId = null; for (OrderDetl orderDetl : orderDetls) { Mat mat = orderDetl.getMat$(); if (mat.getMatnr().equals(waitPakinTemplate.getMatnr())) { detlId = orderDetl.getId(); } } if (detlId == null) { throw new CoolException("订单明细不存在"); } WaitPakin waitPakin = new WaitPakin(); waitPakin.setOrderId(order.getId()); waitPakin.setOrderNo(order.getOrderNo()); waitPakin.setAnfme(waitPakinTemplate.getAnfme()); waitPakin.setBarcode(waitPakinTemplate.getBarcode()); waitPakin.setDetlId(detlId); waitPakinService.comb(waitPakin); } return R.ok(); } } zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/template/WaitPakinTemplate.java
New file @@ -0,0 +1,34 @@ package com.zy.asrs.wms.asrs.entity.template; import com.zy.asrs.common.utils.Synchro; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class WaitPakinTemplate { //订单编号 @ApiModelProperty(value= "订单编号") private String orderNo; //托盘码 @ApiModelProperty(value= "托盘码") private String barcode; //物料号 @ApiModelProperty(value= "物料号") private String matnr; //批号 @ApiModelProperty(value= "批号") private String batch; //数量 @ApiModelProperty(value= "数量") private Double anfme; public void sync(Object source) { Synchro.Copy(source, this); } } zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WaitPakinServiceImpl.java
@@ -53,6 +53,17 @@ throw new CoolException("托盘正在入库中"); } OrderDetl orderDetl = orderDetlService.getById(waitPakin.getDetlId()); if (orderDetl == null) { throw new CoolException("订单明细不存在"); } //可用数量 Double count = orderDetl.getAnfme() - orderDetl.getQty() - orderDetl.getWorkQty() - orderDetl.getWaitQty(); if (waitPakin.getAnfme() > count) { throw new CoolException("组托数量超过剩余可用数量"); } //查询是否存在相同明细和托盘码的组托通知档 WaitPakin waitPakin1 = this.getOne(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getBarcode, waitPakin.getBarcode()).eq(WaitPakin::getDetlId, waitPakin.getDetlId())); if (waitPakin1 == null) { @@ -67,11 +78,6 @@ if (!this.updateById(waitPakin1)) { throw new CoolException("添加失败"); } } OrderDetl orderDetl = orderDetlService.getById(waitPakin.getDetlId()); if (orderDetl == null) { throw new CoolException("订单明细不存在"); } //获取订单