rsf-admin/src/page/orders/delivery/DeliveryList.jsx
@@ -40,6 +40,7 @@ import MyCreateButton from "../../components/MyCreateButton"; import MyExportButton from '../../components/MyExportButton'; import ImportButton from "../../components/ImportButton"; import BillStatusField from "../../components/BillStatusField"; import PageDrawer from "../../components/PageDrawer"; import MyField from "../../components/MyField"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; @@ -103,13 +104,13 @@ marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0, }} title={"menu.delivery"} empty={<EmptyData onClick={() => { setCreateDialog(true) }} />} empty={false} filters={filters} sort={{ field: "create_time", order: "desc" }} actions={( <TopToolbar> <FilterButton /> <MyCreateButton onClick={() => { setCreateDialog(true) }} /> {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */} <SelectColumnsButton preferenceKey='delivery' /> <ImportButton value={'delivery'} /> {/* <MyExportButton /> */} @@ -141,7 +142,8 @@ <DateField source="updateTime" label="common.field.updateTime" showTime /> <TextField source="createBy$" label="common.field.createBy" /> <DateField source="createTime" label="common.field.createTime" showTime /> <BooleanField source="statusBool" label="common.field.status" sortable={false} /> <BillStatusField cellClassName="status" source="exceStatus" label="table.field.asnOrder.exceStatus" /> {/* <BooleanField source="statusBool" label="common.field.status" sortable={false} /> */} <TextField source="memo" label="common.field.memo" sortable={false} /> <WrapperField cellClassName="opt" label="common.field.opt"> <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> rsf-admin/src/page/task/TaskList.jsx
@@ -267,8 +267,7 @@ const record = useRecordContext(); const notify = useNotify(); const refresh = useRefresh(); const clickCancel = (event) => { event.stopPropagation(); const clickCancel = () => { cancleTask(record) }; //取消任务 @@ -284,11 +283,11 @@ } return ( (record.taskStatus == 1 || record.taskStatus == 101) && (record.taskType == 1 || record.taskType == 101 || record.taskType == 10 || record.taskType == 103 || record.taskType == 11) ? <Button onClick={clickCancel} label="toolbar.cancel"> <CancelIcon /> </Button> <ConfirmButton onConfirm={clickCancel} startIcon={<CancelIcon />} label={"toolbar.cancel"}> </ConfirmButton> : <></> ) rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java
@@ -1,25 +1,35 @@ package com.vincent.rsf.server.manager.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.KeyValVo; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.entity.Delivery; import com.vincent.rsf.server.manager.entity.DeliveryItem; import com.vincent.rsf.server.manager.entity.excel.DeliveryTemplate; import com.vincent.rsf.server.manager.enums.OrderType; import com.vincent.rsf.server.manager.enums.OrderWorkType; import com.vincent.rsf.server.manager.service.CompanysService; import com.vincent.rsf.server.manager.service.DeliveryItemService; import com.vincent.rsf.server.manager.service.DeliveryService; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.controller.BaseController; import com.vincent.rsf.server.system.service.SerialRuleService; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.*; @@ -29,6 +39,8 @@ @Autowired private DeliveryService deliveryService; @Autowired private DeliveryItemService deliveryItemService; @PreAuthorize("hasAuthority('manager:delivery:list')") @PostMapping("/delivery/page") @@ -121,7 +133,71 @@ @PreAuthorize("hasAuthority('manager:delivery:list')") @PostMapping("/delivery/export") public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { ExcelUtil.build(ExcelUtil.create(deliveryService.list(), Delivery.class), response); if (!Cools.isEmpty(map) && !Cools.isEmpty(map.get("ids"))) { throw new CoolException("参数不能为空!!"); } List<Delivery> orders = new ArrayList<>(); if (!Objects.isNull(map.get("ids"))) { List<Long> ids = JSONArray.parseArray(JSONObject.toJSONString(map.get("ids")), Long.class); if (!ids.isEmpty()) { orders = deliveryService.list(new LambdaQueryWrapper<Delivery>().in(Delivery::getId, ids)); } else { orders = deliveryService.list(new LambdaQueryWrapper<>()); } } else { orders = deliveryService.list(); } List<DeliveryTemplate> orderTemplates = new ArrayList<>(); for (Delivery order : orders) { List<DeliveryItem> orderItems = deliveryItemService.list(new LambdaQueryWrapper<DeliveryItem>().eq(DeliveryItem::getDeliveryId, order.getId())); for (DeliveryItem item : orderItems) { if (Objects.isNull(item)) { continue; } DeliveryTemplate template = new DeliveryTemplate(); template.setDoCode(order.getCode()) .setType(OrderType.getValType(order.getType())) .setWkType(OrderWorkType.getWorkDesc(order.getWkType())) .setAnfme(item.getAnfme() + "") .setMaktx(item.getMaktx()) .setMemo(item.getMemo()) .setMatnrCode(item.getMatnrCode()) .setPlatItemId(item.getPlatItemId()) .setSplrBatch(item.getSplrBatch()) .setSplrName(item.getSplrName()) .setSplrCode(item.getSplrCode()); orderTemplates.add(template); } } ExcelUtil.build(ExcelUtil.create(orderTemplates, DeliveryTemplate.class), response); } @PostMapping("/delivery/import") @ApiOperation("DO单导入接口") @PreAuthorize("hasAuthority('manager:delivery:update')") public R importExcel(@RequestParam(value = "file") MultipartFile file) throws Exception { if (Objects.isNull(file)) { return R.error("文件不能为空!!"); } Map<String, Object> hashMap = new HashMap<>(); return R.ok("导入成功").add(deliveryItemService.excelImport(file, hashMap, getLoginUserId())); } /** * @author Ryan * @description 下载模板 * @param * @return * @time 2025/4/18 08:17 */ @PostMapping("/delivery/template/download") @ApiOperation("下载收货单模板") @PreAuthorize("hasAuthority('manager:delivery:update')") public void downloadTemplate(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { DeliveryTemplate template = ExcelUtil.mockData(DeliveryTemplate.class); List<DeliveryTemplate> list = Arrays.asList(template); ExcelUtil.build(ExcelUtil.create(list, DeliveryTemplate.class, true), response); } } rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java
@@ -1,6 +1,7 @@ package com.vincent.rsf.server.manager.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.Cools; @@ -11,15 +12,20 @@ import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.KeyValVo; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.manager.entity.Companys; import com.vincent.rsf.server.manager.entity.DeliveryItem; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate; import com.vincent.rsf.server.manager.entity.excel.DeliveryTemplate; import com.vincent.rsf.server.manager.enums.OrderType; import com.vincent.rsf.server.manager.enums.OrderWorkType; import com.vincent.rsf.server.manager.service.CompanysService; import com.vincent.rsf.server.manager.service.DeliveryItemService; import com.vincent.rsf.server.manager.service.impl.DeliveryServiceImpl; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; 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; @@ -31,10 +37,10 @@ @Autowired private DeliveryItemService deliveryItemService; @Autowired private CompanysService companysService; @Autowired private DeliveryServiceImpl deliveryService; @PreAuthorize("hasAuthority('manager:deliveryItem:list')") @PostMapping("/deliveryItem/page") @@ -115,33 +121,4 @@ ); return R.ok().add(vos); } @PreAuthorize("hasAuthority('manager:deliveryItem:list')") @PostMapping("/deliveryItem/export") public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { if (!Cools.isEmpty(map) && !Cools.isEmpty(map.get("ids"))) { throw new CoolException("参数不能为空!!"); } List<Long> jsonArray = JSONArray.parseArray(JSONArray.toJSONString(map.get("ids")), Long.class); // if (jsonArray.isEmpty()) { // ExcelUtil.build(ExcelUtil.create(deliveryItemService.getOne(new La), DeliveryItem.class), response); // } else { // ExcelUtil.build(ExcelUtil.create(deliveryItemService.list(), DeliveryItem.class), response); // } } @PostMapping("/deliveryItem/import") @ApiOperation("DO单导入接口") @PreAuthorize("hasAuthority('manager:asnOrderItem:update')") public R importExcel(@RequestParam(value = "file") MultipartFile file) throws Exception { if (Objects.isNull(file)) { return R.error("文件不能为空!!"); } Map<String, Object> hashMap = new HashMap<>(); return R.ok(); // return deliveryItemService.excelImport(file, hashMap, getLoginUserId()); } } rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java
@@ -101,9 +101,9 @@ } @PreAuthorize("hasAuthority('manager:task:remove')") @OperationLog("Delete 任务工作档") @OperationLog("取消/删除工作极档") @ApiOperation("取消/删除工作极档") @PostMapping("/task/remove/{ids}") @Transactional(rollbackFor = Exception.class) public R remove(@PathVariable Long[] ids) { if (Objects.isNull(ids) || ids.length < 1) { return R.error("参数不能为空!!"); rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Delivery.java
@@ -8,10 +8,14 @@ import com.vincent.rsf.server.system.constant.DictTypeCode; import com.vincent.rsf.server.system.entity.DictData; import com.vincent.rsf.server.system.service.DictDataService; import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.text.SimpleDateFormat; import java.util.Date; import com.baomidou.mybatisplus.annotation.TableLogic; import java.text.SimpleDateFormat; import java.util.Date; import java.text.SimpleDateFormat; @@ -28,10 +32,12 @@ import com.vincent.rsf.framework.common.SpringUtils; import com.vincent.rsf.server.system.service.UserService; import com.vincent.rsf.server.system.entity.User; import java.io.Serializable; import java.util.Date; @Data @Accessors(chain = true) @TableName("man_delivery") public class Delivery implements Serializable { @@ -113,10 +119,14 @@ private Date endTime; /** * 状态 1: 已完成 0: 待执行 2: 未完成 * 状态 1: 正常 0: 禁用 */ @ApiModelProperty(value= "状态 1: 已完成 0: 待执行 2: 未完成 ") @ApiModelProperty(value = "状态 1: 正常 0: 禁用") private Integer status; @ApiModelProperty(value = "状态 1: 执行中 0: 未执行 2: 部分完成 3:已完成 ") private Short exceStatus; /** * 是否删除 1: 是 0: 否 @@ -165,7 +175,8 @@ @ApiModelProperty(value= "备注") private String memo; public Delivery() {} public Delivery() { } public Delivery(String code,String platId,String type,String wkType,String source,Double anfme,Double qty,Double workQty,String platCode,Date startTime,Date endTime,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { this.code = code; @@ -212,6 +223,20 @@ // ); public String getExceStatus$() { if (Cools.isEmpty(this.exceStatus)) { return null; } DictDataService dictDataService = SpringUtils.getBean(DictDataService.class); DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>() .eq(DictData::getDictTypeCode, DictTypeCode.SYS_PO_EXCE_STATUS) .eq(DictData::getValue, this.exceStatus)); if (Objects.isNull(dictData)) { return null; } return dictData.getLabel(); } public String getType$(){ if (Cools.isEmpty(this.type)){ return ""; @@ -251,7 +276,9 @@ } public String getStatus$(){ if (null == this.status){ return null; } if (null == this.status) { return null; } switch (this.status){ case 1: return "已完成"; @@ -297,9 +324,10 @@ } public Boolean getStatusBool(){ if (null == this.status){ return null; } if (null == this.status) { return null; } switch (this.status){ case 1: return true; rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.fasterxml.jackson.annotation.JsonFormat; import com.vincent.rsf.server.manager.service.TaskService; import com.vincent.rsf.server.system.constant.DictTypeCode; import com.vincent.rsf.server.system.entity.DictData; import com.vincent.rsf.server.system.service.DictDataService; @@ -247,6 +248,16 @@ // null // 备注 // ); // public String getParentId$() { // if (Cools.isEmpty(this.parentId)) { // return null; // } // TaskService taskService = SpringUtils.getBean(TaskService.class); // Task task = taskService.getById(this.parentId); // return task.getTaskCode(); // } public String getTaskStatus$(){ if (Cools.isEmpty(this.taskStatus)) { return null; rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java
@@ -17,8 +17,8 @@ private static final long serialVersionUID = 1L; @Excel(name = "*DO单号") @ApiModelProperty(value= "*PO单号") @ExcelComment(value = "poCode", example = "PO25413975") @ApiModelProperty(value= "*DO单号") @ExcelComment(value = "doCode", example = "DO25413975") private String doCode; @Excel(name = "*行号") @@ -76,7 +76,7 @@ @Excel(name = "物料名称") @ApiModelProperty(value= "物料名称") @ExcelComment(value = "matnrName", example = "TC-03128寸连体内上托") private String matnrName; private String maktx; /** @@ -103,6 +103,14 @@ @ExcelComment(value = "splrBatch", example = "20250401") private String splrBatch; /** * 供应商名称 */ @Excel(name = "供应商名称") @ApiModelProperty(value= "供应商名称") @ExcelComment(value = "splrName", example = "中扬立库技术有限公司") private String splrName; @Excel(name = "预计送达时间") @ApiModelProperty("预计送达时间") rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -95,7 +95,7 @@ * 任务自动下发 * @throws Exception */ // @Scheduled(cron = "0/5 * * * * ? ") @Scheduled(cron = "0/5 * * * * ? ") @Transactional(rollbackFor = Exception.class) public void taskToWCS() throws Exception { Long loginUserId = SystemAuthUtils.getLoginUserId(); @@ -121,7 +121,11 @@ LocToTaskParams params = new LocToTaskParams(); params.setOrgLoc(shallowLoc).setType(TaskType.TASK_TYPE_LOC_MOVE.type + ""); //生成移库任务 locItemService.genMoveTask(params, loginUserId); Task moveTask = locItemService.genMoveTask(params, loginUserId); moveTask.setSort(task.getSort() + 1); if (!taskService.updateById(moveTask)) { throw new Exception("任务优先级更新失败!!"); } } //TODO 调用下发任务接口 } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/DeliveryItemService.java
@@ -11,5 +11,5 @@ public interface DeliveryItemService extends IService<DeliveryItem> { // R excelImport(MultipartFile file, Map<String, Object> hashMap, Long loginUserId) throws Exception; R excelImport(MultipartFile file, Map<String, Object> hashMap, Long loginUserId) throws Exception; } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeliveryItemServiceImpl.java
@@ -10,10 +10,7 @@ import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate; import com.vincent.rsf.server.manager.entity.excel.DeliveryTemplate; import com.vincent.rsf.server.manager.enums.CompanysType; import com.vincent.rsf.server.manager.enums.OrderType; import com.vincent.rsf.server.manager.enums.OrderWorkType; import com.vincent.rsf.server.manager.enums.QlyIsptResult; import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.server.manager.mapper.DeliveryItemMapper; import com.vincent.rsf.server.manager.service.CompanysService; import com.vincent.rsf.server.manager.service.DeliveryItemService; @@ -44,7 +41,6 @@ @Autowired private DeliveryItemService deliveryItemService; // private /** * excel DO单导入 * @@ -53,130 +49,114 @@ * @param loginUserId * @return */ // @Override // public R excelImport(MultipartFile file, Map<String, Object> hashMap, Long loginUserId) throws Exception { // ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), DeliveryTemplate.class, ExcelUtil.getDefaultImportParams()); // if (result.getList().isEmpty()) { // throw new CoolException("表格内容不能为空!!"); // } // List<DeliveryTemplate> resultList = result.getList(); // Map<String, List<DeliveryTemplate>> listMap = resultList.stream().collect(Collectors.groupingBy(DeliveryTemplate::getDoCode)); // StringBuffer sbFaild = new StringBuffer(); // for (String key : listMap.keySet()) { // if (StringUtils.isBlank(key)) { // throw new CoolException("单号不能为空!!"); // } // DeliveryTemplate template = listMap.get(key).stream().findFirst().get(); // Delivery order = deliveryService.getOne(new LambdaQueryWrapper<Delivery>().eq(Delivery::getCode, key)); // if (!Objects.isNull(order)) { // sbFaild.append(template.getDoCode()).append(",已添加!!"); // throw new CoolException(sbFaild.toString()); // } // order = new Delivery(); // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // Date date = dateFormat.parse(template.getArrTime()); // if (Objects.isNull(date)) { // throw new CoolException("时间格式错误!!"); // } // if (Objects.isNull((OrderType.getTypeVal(template.getType())))) { // sbFaild.append(template.getDoCode()).append(",单据状态不存在!!"); // throw new CoolException(sbFaild.toString()); // } // if (Objects.isNull((OrderWorkType.getWorkType(template.getWkType())))) { // sbFaild.append(template.getDoCode()).append(",业务状态不存在!!"); // throw new CoolException(sbFaild.toString()); // } // // order.setCode(template.getDoCode()) // .setPoCode(template.getPoCode()) // .setMemo(template.getMemo()) // .setArrTime(date) // .setUpdateBy(loginUserId) // .setLogisNo(template.getLogicNo()) // .setCreateBy(loginUserId) // .setType(OrderType.getTypeVal(template.getType())) // .setWkType(OrderWorkType.getWorkType(template.getWkType())); // if (!deliveryService.save(order)) { // throw new CoolException("单据保存失败!!"); // } // List<DeliveryItem> items = new ArrayList<>(); // for (DeliveryTemplate orderTemplate : listMap.get(key)) { // DeliveryItem orderItem = new DeliveryItem(); // if (StringUtils.isBlank(orderTemplate.getMatnrCode())) { // throw new CoolException(orderTemplate.getDoCode() + ":物料编码不能为空!!"); // } // if (StringUtils.isBlank(orderTemplate.getAnfme())) { // throw new CoolException(orderTemplate.getDoCode() + ":数量不能为空!!"); // } // if (StringUtils.isBlank(orderTemplate.getType())) { // throw new CoolException(orderTemplate.getDoCode() + ":单据类型不能为空!!"); // } // if (StringUtils.isBlank(orderTemplate.getWkType())) { // throw new CoolException(orderTemplate.getDoCode() + ":业务类型不能为空!!"); // } // // Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>() // .eq(Matnr::getCode, orderTemplate.getMatnrCode())); // if (Objects.isNull(matnr)) { // sbFaild.append(orderTemplate.getMatnrCode()).append("物料不存在"); // throw new CoolException(sbFaild.toString()); // } // String trackCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, matnr); // orderItem.setDeliveryId(order.getId()) // .setDeliveryCode(order.getCode()) // .setSplrBatch(orderTemplate.getSplrBatch()) // .setPlatItemId(orderTemplate.getPlatItemId()) // .setAnfme(Double.parseDouble(orderTemplate.getAnfme())) // .setIsptResult(QlyIsptResult.getDescVal(orderTemplate.getIsptResult())) //// .setTrackCode(trackCode) // .setBarcode(trackCode) // .setPlatOrderCode(orderTemplate.getPlatOrderCode()) // .setPlatWorkCode(orderTemplate.getPlatWorkCode()) // .setProjectCode(orderTemplate.getProjectCode()) // .setPoCode(orderTemplate.getDoCode()) // .setPurUnit(matnr.getUnit()) // .setCreateBy(loginUserId) // .setUpdateBy(loginUserId) // .setSpec(matnr.getSpec()) // .setModel(matnr.getModel()) // .setMaktx(matnr.getName()) // .setMatnrCode(matnr.getCode()) // .setMatnrId(matnr.getId()) // .setStockUnit(matnr.getUnit()); // if (!Objects.isNull(orderTemplate.getSplrCode())) { // Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>() // .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val) // .eq(Companys::getCode, orderTemplate.getSplrCode())); // if (!Objects.isNull(companys)) { // orderItem.setSplrCode(companys.getCode()).setSplrName(companys.getName()); // } else { // sbFaild.append("供应商:" + orderTemplate.getSplrCode()).append("不存在"); // throw new CoolException(sbFaild.toString()); // } // } else { // continue; // } // items.add(orderItem); // // if (!deliveryItemService.save(orderItem)) { // throw new CoolException("单据明细保存失败!!"); // } // } // if (!items.isEmpty()) { //// double qty = items.stream().mapToDouble(AsnOrderItem::getQty).sum(); // double anfme = items.stream().mapToDouble(DeliveryItem::getAnfme).sum(); // if (!deliveryService.update(new LambdaUpdateWrapper<Delivery>() //// .set(AsnOrder::getQty, qty) // .set(Delivery::getAnfme, anfme) // .eq(Delivery::getId, order.getId()))) { // throw new CoolException("单据数量修改失败!!"); // } // } // // // } // // // return null; // } @Override public R excelImport(MultipartFile file, Map<String, Object> hashMap, Long loginUserId) throws Exception { ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), DeliveryTemplate.class, ExcelUtil.getDefaultImportParams()); if (result.getList().isEmpty()) { throw new CoolException("表格内容不能为空!!"); } List<DeliveryTemplate> resultList = result.getList(); Map<String, List<DeliveryTemplate>> listMap = resultList.stream().collect(Collectors.groupingBy(DeliveryTemplate::getDoCode)); StringBuffer sbFaild = new StringBuffer(); for (String key : listMap.keySet()) { if (StringUtils.isBlank(key)) { throw new CoolException("单号不能为空!!"); } DeliveryTemplate template = listMap.get(key).stream().findFirst().get(); Delivery order = deliveryService.getOne(new LambdaQueryWrapper<Delivery>().eq(Delivery::getCode, key)); if (!Objects.isNull(order)) { sbFaild.append(template.getDoCode()).append(",已添加!!"); throw new CoolException(sbFaild.toString()); } order = new Delivery(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = dateFormat.parse(template.getArrTime()); if (Objects.isNull(date)) { throw new CoolException("时间格式错误!!"); } if (Objects.isNull((OrderType.getTypeVal(template.getType())))) { sbFaild.append(template.getDoCode()).append(",单据状态不存在!!"); throw new CoolException(sbFaild.toString()); } if (Objects.isNull((OrderWorkType.getWorkType(template.getWkType())))) { sbFaild.append(template.getDoCode()).append(",业务状态不存在!!"); throw new CoolException(sbFaild.toString()); } order.setCode(template.getDoCode()) .setType(OrderType.getTypeVal(template.getType())) .setWkType(OrderWorkType.getWorkType(template.getWkType())) .setMemo(template.getMemo()) .setSource(OrderSourceType.ORDER_SOURCE_TYPE_ERP.desc) .setAnfme(Double.parseDouble(template.getAnfme())) .setUpdateBy(loginUserId) .setCreateBy(loginUserId); if (!deliveryService.save(order)) { throw new CoolException("单据保存失败!!"); } List<DeliveryItem> items = new ArrayList<>(); for (DeliveryTemplate orderTemplate : listMap.get(key)) { DeliveryItem orderItem = new DeliveryItem(); if (StringUtils.isBlank(orderTemplate.getMatnrCode())) { throw new CoolException(orderTemplate.getDoCode() + ":物料编码不能为空!!"); } if (StringUtils.isBlank(orderTemplate.getAnfme())) { throw new CoolException(orderTemplate.getDoCode() + ":数量不能为空!!"); } if (StringUtils.isBlank(orderTemplate.getType())) { throw new CoolException(orderTemplate.getDoCode() + ":单据类型不能为空!!"); } if (StringUtils.isBlank(orderTemplate.getWkType())) { throw new CoolException(orderTemplate.getDoCode() + ":业务类型不能为空!!"); } Matnr matnr = matnrService.getOne(new LambdaQueryWrapper<Matnr>() .eq(Matnr::getCode, orderTemplate.getMatnrCode())); if (Objects.isNull(matnr)) { sbFaild.append(orderTemplate.getMatnrCode()).append("物料不存在"); throw new CoolException(sbFaild.toString()); } orderItem.setDeliveryId(order.getId()) .setDeliveryCode(order.getCode()) .setSplrBatch(orderTemplate.getSplrBatch()) .setPlatItemId(orderTemplate.getPlatItemId()) .setAnfme(Double.parseDouble(orderTemplate.getAnfme())) .setUnit(matnr.getUnit()) .setCreateBy(loginUserId) .setUpdateBy(loginUserId) .setSplrBatch(orderTemplate.getSplrBatch()) .setMaktx(matnr.getName()) .setMatnrCode(matnr.getCode()) .setMatnrId(matnr.getId()); if (!Objects.isNull(orderTemplate.getSplrCode())) { Companys companys = companysService.getOne(new LambdaQueryWrapper<Companys>() .eq(Companys::getType, CompanysType.COMPANYS_TYPE_SUPPLIER.val) .eq(Companys::getCode, orderTemplate.getSplrCode())); if (!Objects.isNull(companys)) { orderItem.setSplrCode(companys.getCode()).setSplrName(companys.getName()); } else { sbFaild.append("供应商:" + orderTemplate.getSplrCode()).append("不存在"); throw new CoolException(sbFaild.toString()); } } else { continue; } items.add(orderItem); if (!deliveryItemService.save(orderItem)) { throw new CoolException("单据明细保存失败!!"); } } if (!items.isEmpty()) { Double anfme = items.stream().mapToDouble(DeliveryItem::getAnfme).sum(); if (!deliveryService.update(new LambdaUpdateWrapper<Delivery>() .set(Delivery::getAnfme, anfme) .eq(Delivery::getId, order.getId()))) { throw new CoolException("单据数量修改失败!!"); } } } return null; } } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -138,10 +138,8 @@ if (Objects.isNull(deviceSite)) { throw new CoolException("当前站点不支持盘点出库!!"); } task.setTaskType(TaskType.TASK_TYPE_CHECK_OUT.type).setWarehType(deviceSite.getDevice()); } if (!taskService.save(task)) { throw new CoolException("任务创建失败!!"); } @@ -159,10 +157,6 @@ //优先生成移库任务 if (one.getUseStatus().equals(LocStsType.LOC_STS_TYPE_F.type)) { moveTask = genMoveTask(map, loginUserId); task.setParentId(moveTask.getId()); if (!taskService.updateById(task)) { throw new CoolException("主任务关联失败!!"); } } } else { workTask.setSort(task.getSort() + 1).setParentId(task.getId()); @@ -172,14 +166,16 @@ } } // if (!Objects.isNull(moveTask.getId())) { // moveTask.setParentId(task.getId()).setSort(moveTask.getSort() - 1); // if (!taskService.saveOrUpdate(moveTask)) { // throw new CoolException("任务信息修改失败!!"); // } // } if (!Objects.isNull(moveTask.getId())) { moveTask.setParentId(task.getId()).setSort(moveTask.getSort() + 1); if (!taskService.saveOrUpdate(moveTask)) { throw new CoolException("任务信息修改失败!!"); } task.setParentId(moveTask.getId()); if (!taskService.updateById(task)) { throw new CoolException("主任务关联失败!!"); } } List<TaskItem> taskItems = new ArrayList<>(); listMap.get(key).forEach(item -> { rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -753,8 +753,6 @@ if (!this.updateById(outTask)) { throw new CoolException("任务信息修改失败!!"); } } else { // throw new CoolException("无法生成新的移库任务,取消失败!!"); } } rsf-server/src/main/resources/application.yml
@@ -25,7 +25,7 @@ # global-config: # field-strategy: 0 configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl map-underscore-to-camel-case: true cache-enabled: true call-setters-on-nulls: true