From b011b1368c2f8813ef2684a4a63914e6e59b5e15 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期四, 05 六月 2025 17:06:51 +0800 Subject: [PATCH] DO单优化 出库单优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java | 12 ++ rsf-admin/src/page/orders/outStock/OutOrderModal.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java | 5 + rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/POExceStatus.java | 2 rsf-admin/src/page/orders/outStock/OutOrderList.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/OutStockTemplate.java | 195 ++++++++++++++++++++++++++++++++++++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockItemServiceImpl.java | 11 +- 7 files changed, 219 insertions(+), 10 deletions(-) diff --git a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx index 979c23f..363ee0b 100644 --- a/rsf-admin/src/page/orders/outStock/OutOrderList.jsx +++ b/rsf-admin/src/page/orders/outStock/OutOrderList.jsx @@ -142,7 +142,7 @@ <CreateByOrderButton setCreateDialog={setCreateDialog} /> <MyCreateButton onClick={() => { setManualDialog(true); setmodalType(0) }} /> <SelectColumnsButton preferenceKey='outStock' /> - <ImportButton value={'asnOrderItem'} /> + <ImportButton value={'outStock'} /> {/* <MyExportButton /> */} </TopToolbar> )} diff --git a/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx b/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx index c3b530c..9adfabe 100644 --- a/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx +++ b/rsf-admin/src/page/orders/outStock/OutOrderModal.jsx @@ -269,6 +269,7 @@ const { setOpen } = props; const { selectedIds, onUnselectItems } = useListContext(); const notify = useNotify(); + const refresh = useRefresh(); const confirm = async (event) => { const res = await request.post(`/outStock/generate/orders`, { ids: selectedIds }); if (res?.data?.code === 200) { @@ -276,6 +277,7 @@ } else { notify(res.data.msg); } + refresh(); onUnselectItems(); setOpen(false); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java index eb7d9a1..d64be92 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryItemController.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; @@ -47,7 +48,9 @@ public R page(@RequestBody Map<String, Object> map) { BaseParam baseParam = buildParam(map, BaseParam.class); PageParam<DeliveryItem, BaseParam> pageParam = new PageParam<>(baseParam, DeliveryItem.class); - return R.ok().add(deliveryItemService.page(pageParam, pageParam.buildWrapper(true))); + QueryWrapper<DeliveryItem> wrapper = pageParam.buildWrapper(true); + wrapper.apply("anfme > work_qty + qty "); + return R.ok().add(deliveryItemService.page(pageParam, wrapper)); } @PreAuthorize("hasAuthority('manager:deliveryItem:list')") diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/OutStockTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/OutStockTemplate.java new file mode 100644 index 0000000..8a67839 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/OutStockTemplate.java @@ -0,0 +1,195 @@ +package com.vincent.rsf.server.manager.entity.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelAutoColumnSize; +import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelComment; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * @author Ryan + * @version 1.0 + * @title AsnOrderTemplate + * @description + * @create 2025/3/12 13:49 + */ +@Data +@ExcelAutoColumnSize +@Accessors(chain = true) +public class OutStockTemplate { + + /** + * 缂栧彿 + */ + @Excel(name = "*鍑哄簱鍗曞彿") + @ApiModelProperty(value = "*鍑哄簱鍗曞彿") + @ExcelComment(value = "code", example = "OS5945272236") + private String code; + + /** + * PO鍗曞彿 + */ + @Excel(name = "DO鍗曞彿") + @ApiModelProperty(value = "DO鍗曞彿") + @ExcelComment(value = "poCode", example = "DO59755695") + private String poCode; + +// /** +// * PO鍗曟嵁鏍囪瘑 +// */ +// @Excel(name = "PO鍗曟嵁鏍囪瘑") +// @ApiModelProperty(value= "PO鍗曟嵁鏍囪瘑") +// @ExcelComment(value = "poId", example = "123456698") +// private String poId; + + @Excel(name = "琛屽彿") + @ApiModelProperty("琛屽彿") + @ExcelComment(value = "platItemId", example = "1357564255478") + private String platItemId; + + @Excel(name = "瀹㈡埛璁㈠崟鍙�") + @ApiModelProperty("瀹㈡埛璁㈠崟鍙�") + @ExcelComment(value = "platOrderCode", example = "PT202564713301") + private String platOrderCode; + + @Excel(name = "宸ュ崟鍙�") + @ApiModelProperty("宸ュ崟鍙�") + @ExcelComment(value = "platWorkCode", example = "PWC2354894211") + private String platWorkCode; + + @Excel(name = "椤圭洰鍙�") + @ApiModelProperty("椤圭洰鍙�") + @ExcelComment(value = "projectCode", example = "PC2365845636001") + private String projectCode; + + /** + * 鍗曟嵁绫诲瀷 + */ + @Excel(name = "*鍗曟嵁绫诲瀷") + @ApiModelProperty(value = "*鍗曟嵁绫诲瀷") + @ExcelComment(value = "type", example = "鍏ュ簱鍗�") + private String type; + + /** + * 涓氬姟绫诲瀷 + */ + @Excel(name = "*涓氬姟绫诲瀷") + @ApiModelProperty(value = "*涓氬姟绫诲瀷") + @ExcelComment(value = "wkType", example = "閲囪喘鍏ュ簱鍗�") + private String wkType; + + +// @Excel(name = "鎵ц鐘舵��") +// @ApiModelProperty(value= "鎵ц鐘舵��") +// @ExcelComment(value = "exceStatus", example = "0") +// private String exceStatus; + + + @Excel(name = "*鐗╂枡缂栫爜") + @ApiModelProperty("*鐗╂枡缂栫爜") + @ExcelComment(value = "matnrCode", example = "102010101545") + private String matnrCode; + + + @Excel(name = "鐗╂枡鍚嶇О") + @ApiModelProperty("鐗╂枡鍚嶇О") + @ExcelComment(value = "maktx", example = "澶╃憺019-澶鍨嬫敮鏋�-55椋炴満杞粦鑹诧紝涓夎杞洊鍠锋紗閾惰壊 锛堝甫鏀讳笣閽夛級鍙�") + private String maktx; + + + // @Excel(name = "鐗╂枡瑙勬牸") +// @ApiModelProperty("鐗╂枡瑙勬牸") +// @ExcelComment(value = "maktx",example = "2*3*6") +// private String spec; +// +// +// @Excel(name = "鐗╂枡鍨嬪彿") +// @ApiModelProperty("鐗╂枡鍨嬪彿") +// @ExcelComment(value = "maktx",example = "abc") +// private String model; + @Excel(name = "渚涘簲鍟嗙紪鐮�") + @ApiModelProperty("渚涘簲鍟嗙紪鐮�") + @ExcelComment(value = "splrCode", example = "685947") + private String splrCode; + + @Excel(name = "渚涘簲鍟嗗悕绉�") + @ApiModelProperty("渚涘簲鍟嗗悕绉�") + @ExcelComment(value = "splrName", example = "娴欐睙涓壃绔嬪簱鎶�鏈湁闄愬叕鍙�") + private String splrName; + + +// @Excel(name = "搴撳瓨鍗曚綅") +// @ApiModelProperty("搴撳瓨鍗曚綅") +// @ExcelComment(value = "stockUnit", example = "涓�") +// private String stockUnit; + +// @Excel(name = "閲囪喘鏁伴噺") +// @ApiModelProperty("閲囪喘鏁伴噺") +// @ExcelComment(value = "purQty", example = "0") +// private String purQty; +// +// @Excel(name = "閲囪喘鍗曚綅") +// @ApiModelProperty("閲囪喘鍗曚綅") +// @ExcelComment(value = "purUnit", example = "涓�") +// private String purUnit; + +// @Excel(name = "宸插畬鎴愭暟閲�") +// @ApiModelProperty("宸插畬鎴愭暟閲�") +// @ExcelComment(value = "qty", example = "0") +// private String qty; + + + @Excel(name = "渚涘簲鍟嗘壒娆�") + @ApiModelProperty("渚涘簲鍟嗘壒娆�") + @ExcelComment(value = "splrBatch", example = "25251212") + private String splrBatch; + + @Excel(name = "*鏁伴噺") + @ApiModelProperty("*鏁伴噺") + @ExcelComment(value = "anfme", example = "75") + private String anfme; + + +// @Excel(name = "浜岀淮鐮�") +// @ApiModelProperty("浜岀淮鐮�") +// @ExcelComment(value = "qrcode",example = "") +// private String qrcode; + + // @Excel(name = "鏉″舰鐮�") +// @ApiModelProperty("鏉″舰鐮�") +// @ExcelComment(value = "barcode", example = "") +// private String barcode; +// +// @Excel(name = "璺熻釜鐮�") +// @ApiModelProperty("璺熻釜鐮�") +// @ExcelComment(value = "trackCode", example = "") +// private String trackCode; + @Excel(name = "鐗╂祦鍗曞彿") + @ApiModelProperty("鐗╂祦鍗曞彿") + @ExcelComment(value = "logicNo", example = "SF100064851") + private String logicNo; + + + @Excel(name = "璐ㄦ鐘舵��") + @ApiModelProperty("璐ㄦ鐘舵��") + @ExcelComment(value = "isptResult", example = "鍚堟牸") + private String isptResult; + + + @Excel(name = "棰勮閫佽揪鏃堕棿") + @ApiModelProperty("棰勮閫佽揪鏃堕棿") + @ExcelComment(value = "arrTime", example = "2025-05-21") + private String arrTime; + +// @Excel(name = "鍖呰鍚嶇О") +// @ApiModelProperty("鍖呰鍚嶇О") +// @ExcelComment(value = "packName", example = "绠�") +// private String packName; + + @Excel(name = "澶囨敞") + @ApiModelProperty("澶囨敞") + @ExcelComment(value = "memo", example = "娉細鏄撶鍝侊紝杞绘嬁鏀�") + private String memo; + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/POExceStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/POExceStatus.java index 318da31..5cb4d98 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/POExceStatus.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/POExceStatus.java @@ -4,7 +4,7 @@ public enum POExceStatus { PO_EXCE_STATUS_UN_EXCE("0", "鏈墽琛�"), PO_EXCE_STATUS_EXCE_ING("1", "鎵ц涓�"), - PO_EXCE_STATUS_SECTION_DONE("3", "閮ㄥ垎瀹屾垚"), + PO_EXCE_STATUS_SECTION_DONE("2", "閮ㄥ垎瀹屾垚"), PO_EXCE_STATUS_ALL_DONE("3", "宸插畬鎴�"), ; diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockItemServiceImpl.java index 963e330..e7707b9 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockItemServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockItemServiceImpl.java @@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.manager.entity.excel.OutStockTemplate; import com.vincent.rsf.server.manager.enums.OrderType; import com.vincent.rsf.server.manager.enums.OrderWorkType; import com.vincent.rsf.server.common.domain.BaseParam; @@ -98,17 +99,17 @@ @Override @Transactional(rollbackFor = Exception.class) public R excelImport(MultipartFile file, HashMap<String, Object> hashMap, Long loginUserId) throws Exception { - ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), AsnOrderTemplate.class, ExcelUtil.getDefaultImportParams()); + ExcelImportResult result = ExcelImportUtil.importExcelMore(file.getInputStream(), OutStockTemplate.class, ExcelUtil.getDefaultImportParams()); if (result.getList().isEmpty()) { throw new CoolException("鐗╂枡瀵煎叆澶辫触锛侊紒"); } if (result.getList().isEmpty()) { throw new CoolException("琛ㄦ牸鍐呭涓嶈兘涓虹┖锛侊紒"); } - List<AsnOrderTemplate> resultList = result.getList(); - Map<String, List<AsnOrderTemplate>> listMap = resultList.stream().collect(Collectors.groupingBy(AsnOrderTemplate::getCode)); + List<OutStockTemplate> resultList = result.getList(); + Map<String, List<OutStockTemplate>> listMap = resultList.stream().collect(Collectors.groupingBy(OutStockTemplate::getCode)); for (String key : listMap.keySet()) { - AsnOrderTemplate template = listMap.get(key).stream().findFirst().get(); + OutStockTemplate template = listMap.get(key).stream().findFirst().get(); AsnOrder asnOrder = outStockService.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, template.getCode())); if (Objects.isNull(asnOrder)) { continue; @@ -125,7 +126,7 @@ throw new CoolException("鍗曟嵁淇濆瓨澶辫触锛侊紒"); } List<AsnOrderItem> items = new ArrayList<>(); - for (AsnOrderTemplate orderTemplate : listMap.get(key)) { + for (OutStockTemplate orderTemplate : listMap.get(key)) { AsnOrderItem orderItem = new AsnOrderItem(); Matnr matnr = null; if (!Objects.isNull(orderTemplate.getMatnrCode()) || StringUtils.isNotBlank(orderTemplate.getMatnrCode())) { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java index 70e07a5..ee49baf 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java @@ -193,12 +193,15 @@ List<AsnOrderItem> orderItems = new ArrayList<>(); listMap.get(key).forEach(item -> { AsnOrderItem orderItem = new AsnOrderItem(); + Double anfme = Math.round((item.getAnfme() - item.getWorkQty() - item.getQty()) * 10000) / 10000.0; BeanUtils.copyProperties(item, orderItem); orderItem.setId(null) .setPoCode(order.getPoCode()) .setMaktx(item.getMaktx()) .setMatnrCode(item.getMatnrCode()) .setFieldsIndex(item.getFieldsIndex()) + .setAnfme(anfme) + .setWorkQty(0.0) .setAsnId(order.getId()) .setAsnCode(order.getCode()) .setStockUnit(item.getUnit()) @@ -221,7 +224,7 @@ Double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum(); //淇敼璁″垝鏁伴噺 - order.setAnfme(sum); + order.setAnfme(sum).setWorkQty(0.0); if (!this.saveOrUpdate(order)) { throw new CoolException("涓诲崟鏁伴噺淇敼澶辫触锛侊紒"); } @@ -229,8 +232,13 @@ throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒"); } + Short exceStatus = POExceStatus.PO_EXCE_STATUS_SECTION_DONE.val; + if (delivery.getAnfme().compareTo(order.getAnfme()) <= 0) { + exceStatus = AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val; + } + if (!deliveryService.update(new LambdaUpdateWrapper<Delivery>() - .set(Delivery::getExceStatus, POExceStatus.PO_EXCE_STATUS_EXCE_ING.val) + .set(Delivery::getExceStatus, exceStatus) .set(Delivery::getWorkQty, sum) .eq(Delivery::getId, key))) { throw new CoolException("涓诲崟淇敼澶辫触锛侊紒"); -- Gitblit v1.9.1