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