From d0c039c4924ab4348d5a44738f8359ed8f622a74 Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期一, 07 四月 2025 17:05:06 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
---
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java | 5
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java | 3
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java | 8
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java | 3
rsf-admin/src/page/taskItem/TaskItemList.jsx | 1
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 96 +++----
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java | 21 +
rsf-admin/src/page/task/TaskPanel.jsx | 184 +++++----------
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 14
rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java | 93 +++++--
rsf-admin/src/page/task/TaskList.jsx | 6
rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java | 108 +++-----
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java | 27 +
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java | 27 ++
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 75 ++++-
rsf-server/src/main/java/com/vincent/rsf/server/common/utils/JSONUtil.java | 7
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java | 3
19 files changed, 361 insertions(+), 328 deletions(-)
diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index 72cfe20..9fdda18 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -114,7 +114,7 @@
marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
}}
title={"menu.task"}
- empty={<EmptyData onClick={() => { }} />}
+ empty={false}
filters={filters}
sort={{ field: "sort", order: "desc" }}
actions={(
@@ -174,10 +174,6 @@
</WrapperField>
</StyledDatagrid>
</List>
- {/* <TaskCreate
- open={createDialog}
- setOpen={setCreateDialog}
- /> */}
<PageDrawer
title='Task Detail'
drawerVal={drawerVal}
diff --git a/rsf-admin/src/page/task/TaskPanel.jsx b/rsf-admin/src/page/task/TaskPanel.jsx
index 24270ed..853c1a3 100644
--- a/rsf-admin/src/page/task/TaskPanel.jsx
+++ b/rsf-admin/src/page/task/TaskPanel.jsx
@@ -13,127 +13,71 @@
const translate = useTranslate();
return (
<>
- <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
- <CardContent>
- <Grid container spacing={2}>
- <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
- <Typography variant="h6" gutterBottom align="left" sx={{
- maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
- whiteSpace: 'nowrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- }}>
- {Common.camelToPascalWithSpaces(translate('table.field.task.id'))}: {record.id}
- </Typography>
- {/* inherit, primary, secondary, textPrimary, textSecondary, error */}
- <Typography variant="h6" gutterBottom align="right" >
- ID: {record.id}
- </Typography>
- </Grid>
- </Grid>
- <Grid container spacing={2}>
- <Grid item xs={12} container alignContent="flex-end">
- <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
- {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
- </Typography>
- </Grid>
- </Grid>
- <Box height={20}> </Box>
- <Grid container spacing={2}>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.taskCode"
- property={record.taskCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.taskStatus"
- property={record.taskStatus}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.taskType"
- property={record.taskType}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.orgLoc"
- property={record.orgLoc}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.orgSite"
- property={record.orgSite}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.targLoc"
- property={record.targLoc}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.targSite"
- property={record.targSite}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.barcode"
- property={record.barcode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.robotCode"
- property={record.robotCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.exceStatus"
- property={record.exceStatus}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.expDesc"
- property={record.expDesc}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.sort"
- property={record.sort}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.expCode"
- property={record.expCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.startTime"
- property={record.startTime$}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.task.endTime"
- property={record.endTime$}
- />
- </Grid>
+ <Box display="flex">
+ <List
+ sx={{
+ flexGrow: 1,
+ transition: (theme) =>
+ theme.transitions.create(['all'], {
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ }}
+ title={"menu.taskItem"}
+ empty={false}
+ filters={filters}
+ sort={{ field: "create_time", order: "desc" }}
+ actions={(
+ <TopToolbar>
+ <FilterButton />
+ {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
+ <SelectColumnsButton preferenceKey='taskItem' />
+ {/* <MyExportButton /> */}
+ </TopToolbar>
+ )}
+ perPage={DEFAULT_PAGE_SIZE}
+ >
+ <StyledDatagrid
+ preferenceKey='taskItem'
+ // bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ rowClick={(id, resource, record) => false}
+ // expand={() => <TaskItemPanel />}
+ expandSingle={true}
+ omit={['id', 'createTime', 'createBy', 'memo', 'taskId', 'orderId', 'orderItemId', 'matnrId']}
+ >
+ <NumberField source="id" />
+ <NumberField source="taskId" label="table.field.taskItem.taskId" />
+ <NumberField source="orderId" label="table.field.taskItem.orderId" />
+ <NumberField source="orderType$" label="table.field.taskItem.orderType" />
+ <NumberField source="orderItemId" label="table.field.taskItem.orderItemId" />
+ <NumberField source="matnrId" label="table.field.taskItem.matnrId" />
+ <TextField source="maktx" label="table.field.taskItem.maktx" />
+ <TextField source="matnrCode" label="table.field.taskItem.matnrCode" />
+ <TextField source="unit" label="table.field.taskItem.unit" />
+ <NumberField source="anfme" label="table.field.taskItem.anfme" />
+ <TextField source="batch" label="table.field.taskItem.batch" />
+ <TextField source="spec" label="table.field.taskItem.spec" />
+ <TextField source="model" label="table.field.taskItem.model" />
- </Grid>
- </CardContent>
- </Card >
+ <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="updateTime" label="common.field.updateTime" showTime />
+ <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
+ <TextField source="nickname" />
+ </ReferenceField>
+ <DateField source="createTime" label="common.field.createTime" showTime />
+ <BooleanField source="statusBool" label="common.field.status" sortable={false} />
+ <TextField source="memo" label="common.field.memo" sortable={false} />
+ </StyledDatagrid>
+ </List>
+ <PageDrawer
+ title='TaskItem Detail'
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ >
+ </PageDrawer>
+ </Box>
</>
);
};
diff --git a/rsf-admin/src/page/taskItem/TaskItemList.jsx b/rsf-admin/src/page/taskItem/TaskItemList.jsx
index 42d1a09..fc2123d 100644
--- a/rsf-admin/src/page/taskItem/TaskItemList.jsx
+++ b/rsf-admin/src/page/taskItem/TaskItemList.jsx
@@ -104,6 +104,7 @@
marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
}}
title={"menu.taskItem"}
+ empty={false}
filters={filters}
sort={{ field: "create_time", order: "desc" }}
actions={(
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
index 330b9e5..3b2dbe6 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/MobileController.java
@@ -16,6 +16,7 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
import java.util.Objects;
/**
@@ -78,7 +79,7 @@
@PreAuthorize("hasAuthority('manager:warehouseAreas:save')")
@PostMapping("/orders/confirm")
@ApiOperation("纭鏀惰揣")
- public R confirmReceipt(@RequestBody ReceiptParams params) {
+ public R confirmReceipt(@RequestBody Map<String, Object> params) {
if (Objects.isNull(params)) {
throw new CoolException("璇锋眰鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
index dbd980b..e576ffd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/dto/ReceiptDetlsDto.java
@@ -85,6 +85,9 @@
@ApiModelProperty("渚涘簲鍟嗙紪鐮�")
private String splrCode;
+ @ApiModelProperty("鎵╁睍瀛楁绱㈠紩")
+ private String fieldsIndex;
+
@ApiModelProperty("鎵╁睍瀛楁")
private Map<String, Object> extendFields;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
index 492b889..7b624a4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/MobileService.java
@@ -11,6 +11,7 @@
import javax.servlet.http.HttpServletRequest;
import java.util.List;
+import java.util.Map;
/**
* @author Ryan
@@ -25,7 +26,7 @@
R getOrderByCode(String barcode);
- R receiptToWarehouse(ReceiptParams orders);
+ R receiptToWarehouse(Map<String, Object> orders);
R otherReceipt(OtherReceiptParams params);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
index df57841..b6536c2 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -1,5 +1,6 @@
package com.vincent.rsf.server.api.service.impl;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
@@ -13,10 +14,13 @@
import com.vincent.rsf.server.common.enums.WarehouseAreaType;
import com.vincent.rsf.server.common.security.JwtSubject;
import com.vincent.rsf.server.common.utils.CommonUtil;
+import com.vincent.rsf.server.common.utils.FieldsUtils;
+import com.vincent.rsf.server.common.utils.JSONUtil;
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.controller.params.IsptItemsParams;
import com.vincent.rsf.server.manager.controller.params.WaitPakinParam;
import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.mapper.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.system.constant.CodeRes;
@@ -29,6 +33,7 @@
import com.vincent.rsf.server.system.mapper.UserMapper;
import com.vincent.rsf.server.system.service.FieldsItemService;
import com.vincent.rsf.server.system.service.UserLoginService;
+import com.vincent.rsf.server.system.utils.ExtendFieldsUtils;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@@ -181,25 +186,25 @@
*/
@Override
@Transactional(rollbackFor = Exception.class)
- public R receiptToWarehouse(ReceiptParams params) {
- if (params.getReceipts().isEmpty()) {
+ public R receiptToWarehouse(Map<String, Object> params) {
+ if (Objects.isNull(params)) {
+ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+ }
+ ReceiptParams receiptParam = JSONObject.parseObject(JSONObject.toJSONString(params), ReceiptParams.class);
+ if (receiptParam.getReceipts().isEmpty()) {
throw new CoolException("鏀惰揣鏄庣粏涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(params.getWhAreaId())) {
+ if (Objects.isNull(receiptParam.getWhAreaId())) {
throw new CoolException("搴撳尯鏍囪瘑涓嶈兘涓虹┖锛侊紒");
}
WarehouseAreas areasItem = warehouseAreasService.getOne(new LambdaQueryWrapper<WarehouseAreas>()
- .eq(WarehouseAreas::getId, params.getWhAreaId()));
+ .eq(WarehouseAreas::getId, receiptParam.getWhAreaId()));
if (Objects.isNull(areasItem)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶅簱鍖轰笉瀛樺湪锛侊紒");
}
- //鑾峰彇宸插惎鐢ㄧ殑鍔ㄦ�佹墿灞曞瓧
- List<Fields> fields = fieldsMapper.selectList(new LambdaQueryWrapper<Fields>()
- .eq(Fields::getFlagEnable, 1)
- .eq(Fields::getStatus, 1));
- List<ReceiptDetlsDto> receipts = params.getReceipts();
+ List<ReceiptDetlsDto> receipts = receiptParam.getReceipts();
List<WarehouseAreasItem> allOrders = new ArrayList<>();
Double receiptQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getReceiptQty).sum();
@@ -211,15 +216,17 @@
if (Objects.isNull(asnOrder)) {
throw new CoolException("鏁版嵁閿欒锛氫富鍗曚笉瀛樺湪锛侊紒");
}
- /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
+ //TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/
Double rcptedQty = asnOrder.getQty() + receiptQty;
- asnOrder.setQty(rcptedQty);
+ asnOrder.setQty(rcptedQty).setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val));
if (!asnOrderMapper.updateById(asnOrder)) {
throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�");
}
-
- receipts.forEach(dto -> {
+ List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts");
+ for (Map<String, Object> rcpt : receipts1) {
+ if (Objects.isNull(rcpt)) {continue;}
+ ReceiptDetlsDto dto = JSONObject.parseObject(JSONObject.toJSONString(rcpt), ReceiptDetlsDto.class);
Matnr matnr = matnrMapper.selectById(dto.getMatnrId());
if (Objects.isNull(matnr)) {
throw new CoolException("鏁版嵁閿欒锛氬綋鍓嶇墿鏂欎笉瀛樺湪锛侊紒");
@@ -227,49 +234,36 @@
if (Objects.isNull(dto.getReceiptQty())) {
throw new CoolException("鏀惰揣鏁版嵁涓嶈兘涓虹┖锛侊紒");
}
- if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
- throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
- }
-
+// if (dto.getReceiptQty().compareTo(dto.getAnfme()) > 0) {
+// throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬閲囪喘鏁伴噺锛侊紒");
+// }
AsnOrderItem orderItem = asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>()
.eq(AsnOrderItem::getAsnCode, asnCode)
.eq(AsnOrderItem::getMatnrId, dto.getMatnrId()));
if (Objects.isNull(orderItem)) {
throw new CoolException("閫氱煡鍗曟槑缁嗕笉瀛樺湪锛侊紒");
}
-// if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
-// throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
-// }
+ if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) {
+ throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
+ }
Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty();
orderItem.setQty(itemRcptQty)
.setSplrBatch(dto.getSplrBatch())
.setStockUnit(dto.getStockUnit())
.setProdTime(dto.getProdTime());
- if (!Objects.isNull(fields)) {
- if (!Objects.isNull(dto.getExtendFields())) {
- //鑾峰彇16浣島uid
- String uuid16 = CommonUtil.randomUUID16();
- Map<String, Object> extendFields = dto.getExtendFields();
- //瀛楁闆嗗悎鐢虫槑
- List<FieldsItem> fieldsItems = new ArrayList<>();
- extendFields.keySet().forEach(key -> {
- fields.forEach(obj -> {
- //鍒ゆ柇key鍊间笌fields琛ㄥ瓧娈垫槸鍚︾浉鍚�
- if (obj.getFields().equals(key)) {
- FieldsItem fieldsItem = new FieldsItem();
- fieldsItem.setMatnrId(matnr.getId()).setFieldsId(obj.getId())
- .setShiperId(matnr.getShipperId())
- .setValue(extendFields.get(key).toString())
- .setUuid(uuid16);
- fieldsItems.add(fieldsItem);
- }
- });
- });
- if (!fieldsItemService.saveBatch(fieldsItems)) {
- throw new CoolException("鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒");
+ if (!Objects.isNull(rcpt)) {
+ try {
+ if (Objects.isNull(rcpt.get("fieldsindex")) || StringUtils.isBlank(rcpt.get("fieldsindex").toString())) {
+ //鑾峰彇16浣島uid
+ String uuid16 = CommonUtil.randomUUID16();
+ rcpt.put("index", uuid16);
+ orderItem.setFieldsIndex(uuid16);
}
- orderItem.setFieldsIndex(uuid16);
+ //淇濆瓨鎴栨洿鏂版墿灞曞瓧娈�
+ FieldsUtils.updateFieldsValue(rcpt);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
}
@@ -283,15 +277,18 @@
// if (Objects.isNull(dto.getProdTime())) {
// format = dateFormat.format(dto.getProdTime());
// }
- item.setBarcode(dto.getBarcode())
+ item.setTrackCode(dto.getBarcode())
.setAreaName(areasItem.getName())
.setAreaId(areasItem.getId())
+ .setAsnItemId(orderItem.getId())
+ .setAsnCode(asnOrder.getCode())
+ .setAsnId(asnOrder.getId())
.setProdTime(dto.getProdTime())
.setWeight(dto.getWeigth())
.setStockUnit(dto.getStockUnit())
.setBatch(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_RECEIPT_BATCH, dto))
.setAnfme(itemRcptQty)
- .setSplrBtch(dto.getSplrBatch())
+ .setSplrBatch(dto.getSplrBatch())
.setMatnrCode(matnr.getCode())
.setMatnrId(matnr.getId())
.setMatnrName(matnr.getName())
@@ -301,11 +298,10 @@
.setWeight(matnr.getWeight())
.setFieldsIndex(orderItem.getFieldsIndex())
.setShipperId(matnr.getShipperId());
- //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
-
+ //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲
allOrders.add(item);
- });
+ }
if (!warehouseAreasItemService.saveBatch(allOrders)) {
throw new CoolException("鏀惰揣澶辫触锛侊紒");
@@ -383,7 +379,7 @@
@Override
public R getDeltByCode(String code) {
- return R.ok(asnOrderItemMapper.selectOne(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getTrackCode, code)));
+ return R.ok(warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>().eq(WarehouseAreasItem::getTrackCode, code)));
}
/**
@@ -718,6 +714,7 @@
detlsDto.setAsnCode(asnOrderItem.getAsnCode())
.setMaktx(asnOrderItem.getMaktx())
+ .setFieldsIndex(asnOrderItem.getFieldsIndex())
.setBarcode(asnOrderItem.getTrackCode())
.setQty(asnOrderItem.getQty())
.setPoCode(asnOrderItem.getPoCode())
@@ -758,7 +755,6 @@
detlsDto.setPlatformId(purchaseItem.getPlatItemId());
}
}
-
detlsDtos.add(detlsDto);
});
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
index ea9f543..6469f3d 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/FieldsUtils.java
@@ -7,6 +7,8 @@
import com.vincent.rsf.server.system.entity.FieldsItem;
import com.vincent.rsf.server.system.service.FieldsItemService;
import com.vincent.rsf.server.system.service.FieldsService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@@ -24,7 +26,7 @@
* @author Ryan
* @description 閫氳繃瀛楁鍞竴鏍囪瘑鑾峰彇鍔ㄦ�佸瓧娈靛璞ey-value
* @param
- * @return
+ * @return 鎵╁睍瀛楁瀵硅薄
* @time 2025/3/12 12:50
*/
public static Map<String, String> getFields(String uuid) {
@@ -51,28 +53,42 @@
return fieldsMap;
}
- public static void mergeFields(Map<String, Object> fileds ,String uuid) {
+ /**
+ * @author Ryan
+ * @description 鑾峰彇闆嗗悎鎵╁睍瀛楁key-value鍊�
+ * @param
+ * @return 鍖呭惈鎵╁睍瀛楁鐨勯泦鍚堝璞�
+ * @time 2025/3/15 15:05
+ */
+ public static List<Map<String, Object>> getExtendFields(List<Map<String, Object>> params) {
FieldsService fieldsService = SpringUtils.getBean(FieldsService.class);
- List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1));
- if (fields.isEmpty()) {
- return;
- }
+ List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>()
+ .eq(Fields::getStatus, 1)
+ .eq(Fields::getFlagEnable, 1));
FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class);
- List<FieldsItem> fieldsItems = fieldsItemService.list(new LambdaQueryWrapper<FieldsItem>().eq(FieldsItem::getUuid, uuid));
- for (Fields field : fields ) {
- if (fieldsItems.isEmpty()) {
- fileds.put(field.getFields(), null);
+ List<Map<String, Object>> result = new ArrayList<>();
+ for (Map<String, Object> param : params) {
+ result.add(param);
+ if (Objects.isNull(param.get("fieldsIndex"))) {
continue;
}
- fieldsItems.forEach(fieldsItem -> {
- if (fieldsItem.getFieldsId().equals(field.getId())) {
- fileds.put(field.getFields(), fieldsItem.getValue());
+ List<FieldsItem> itemList = fieldsItemService
+ .list(new LambdaQueryWrapper<FieldsItem>()
+ .eq(FieldsItem::getUuid, param.get("fieldsIndex")));
+ if (itemList.isEmpty()) {
+ continue;
+ }
+ fields.forEach(fds -> {
+ for (FieldsItem fieldsItem : itemList) {
+ if (!Objects.isNull(fieldsItem.getFieldsId()) && fieldsItem.getFieldsId().equals(fds.getId())) {
+ param.put(fds.getFields(), fieldsItem.getValue());
+ }
}
});
}
-
+ return result;
}
-
+
/**
* @param template
* @return
@@ -80,25 +96,31 @@
* @description 鍔ㄦ�佸瓧娈祐alue淇濆瓨
* @time 2025/3/18 15:00
*/
- public static void saveFields(Map<String, ?> template, String uuid) throws Exception{
+ @Transactional(rollbackFor = Exception.class)
+ public static boolean saveFields(Map<String, ?> template, String uuid) throws Exception{
List<Fields> fields = getFieldsSta();
FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class);
- if (fields.isEmpty()) {
- throw new CoolException("鎵╁睍瀛楁涓嶅瓨鍦紒锛�");
- }
List<FieldsItem> fieldsItems = new ArrayList<>();
- for (Fields field : fields) {
- if (!Objects.isNull(template.get(field.getFields()))) {
- FieldsItem item = new FieldsItem();
- item.setFieldsId(field.getId())
- .setUuid(uuid)
- .setValue(template.get(field.getFields()).toString());
- fieldsItems.add(item);
+ if (!fields.isEmpty()) {
+ for (Fields obj : fields) {
+ if (!Objects.isNull(template.get(obj.getFields())) && StringUtils.isNotBlank(template.get(obj.getFields()).toString())) {
+ FieldsItem item = new FieldsItem();
+ item.setUuid(uuid)
+ .setValue(template.get(obj.getFields()).toString())
+ .setMatnrId(Long.parseLong(template.get("matnrId").toString()))
+ .setFieldsId(obj.getId());
+ fieldsItems.add(item);
+ }
}
+ if (fieldsItems.isEmpty()) {
+ return false;
+ }
+ if (!fieldsItemService.saveBatch(fieldsItems)) {
+ throw new CoolException("鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒");
+ }
+ return true;
}
- if (!fieldsItemService.saveBatch(fieldsItems)) {
- throw new CoolException("鍔ㄦ�佸瓧娈靛�间繚瀛樺け璐ワ紒锛�");
- }
+ return false;
}
/**
@@ -110,11 +132,19 @@
return fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getStatus, 1).eq(Fields::getFlagEnable, 1));
}
- public static void updateFieldsValue(Map<String, Object> params) throws Exception{
+ /**
+ * @author Ryan
+ * @description 鍔ㄦ�佸瓧娈典慨鏀�
+ * @param
+ * @return
+ * @time 2025/4/7 15:28
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public static void updateFieldsValue(Map<String, Object> params) throws Exception {
List<Fields> fields = getFieldsSta();
if (fields.isEmpty()) { return; }
Object fieldsIndex = params.get("fieldsIndex");
- if (!Objects.isNull(fieldsIndex)) {
+ if (!Objects.isNull(fieldsIndex) && StringUtils.isNotBlank(fieldsIndex.toString())) {
String index = fieldsIndex.toString();
FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class);
for (Fields field : fields) {
@@ -127,6 +157,7 @@
FieldsItem item = new FieldsItem();
item.setUuid(index)
.setFieldsId(field.getId())
+ .setMatnrId(Long.parseLong(params.get("matnrId").toString()))
.setValue(params.get(field.getFields()).toString());
if (!fieldsItemService.save(item)) {
throw new CoolException("鎵╁睍瀛楁淇敼澶辫触锛侊紒");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/JSONUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/JSONUtil.java
index 0de14ed..6d37a50 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/JSONUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/JSONUtil.java
@@ -1,8 +1,12 @@
package com.vincent.rsf.server.common.utils;
+import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.vincent.rsf.framework.common.Cools;
+import org.apache.poi.ss.formula.functions.T;
+
+import java.util.Map;
/**
* JSON瑙f瀽宸ュ叿绫�
@@ -66,4 +70,7 @@
return null;
}
+
+
+
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
index 0ddc29c..037dee9 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
@@ -157,18 +157,17 @@
@PostMapping("/asnOrder/items/save")
@ApiOperation("淇濆瓨涓诲崟鍙婃槑缁�")
@PreAuthorize("hasAuthority('manager:asnOrder:save')")
- public R orderAndItem(@RequestBody AsnOrderAndItemsParams params) {
+ public R orderAndItem(@RequestBody AsnOrderAndItemsParams params) throws Exception {
if (Objects.isNull(params)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
-
return asnOrderService.saveOrderAndItems(params, getLoginUserId());
}
@ApiOperation("鍗曟嵁淇℃伅淇敼")
@PostMapping("/asnOrder/items/update")
@PreAuthorize("hasAuthority('manager:asnOrder:update')")
- public R orderAndrItemUpdate(@RequestBody AsnOrderAndItemsParams params) {
+ public R orderAndrItemUpdate(@RequestBody AsnOrderAndItemsParams params) throws Exception {
if (Objects.isNull(params)) {
return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java
index d0b12a5..a152659 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java
@@ -44,6 +44,15 @@
@ApiModelProperty(value= "浠撳簱鍖哄煙")
private Long areaId;
+ @ApiModelProperty("鍗曟嵁ID")
+ private Long asnId;
+
+ @ApiModelProperty("鍗曟嵁缂栫爜")
+ private String asnCode;
+
+ @ApiModelProperty("鍗曟嵁鏄庣粏ID")
+ private Long asnItemId;
+
/**
* 鍖哄煙鍚嶇О
*/
@@ -74,8 +83,8 @@
/**
* 鏉″舰鐮�
*/
- @ApiModelProperty(value= "鏉″舰鐮�")
- private String barcode;
+ @ApiModelProperty(value= "鐗╂枡璺熻釜鐮�")
+ private String trackCode;
/**
* 鏁伴噺
@@ -135,7 +144,7 @@
* 渚涘簲鍟嗘壒娆�
*/
@ApiModelProperty(value= "渚涘簲鍟嗘壒娆�")
- private String splrBtch;
+ private String splrBatch;
/**
* 鐘舵�� 1: 姝e父 0: 鍐荤粨
@@ -194,13 +203,13 @@
public WarehouseAreasItem() {}
- public WarehouseAreasItem(Long areaId,String areaName,Long matnrId,String matnrName,String matnrCode,String barcode,Double anfme,String batch,String unit,String stockUnit,String brand,Long shipperId,String splrId,Double weight,String prodTime,String splrBtch,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
+ public WarehouseAreasItem(Long areaId,String areaName,Long matnrId,String matnrName,String matnrCode,String trackCode,Double anfme,String batch,String unit,String stockUnit,String brand,Long shipperId,String splrId,Double weight,String prodTime,String splrBtch,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
this.areaId = areaId;
this.areaName = areaName;
this.matnrId = matnrId;
this.matnrName = matnrName;
this.matnrCode = matnrCode;
- this.barcode = barcode;
+ this.trackCode = trackCode;
this.anfme = anfme;
this.batch = batch;
this.unit = unit;
@@ -210,7 +219,7 @@
this.splrId = splrId;
this.weight = weight;
this.prodTime = prodTime;
- this.splrBtch = splrBtch;
+ this.splrBatch = splrBtch;
this.status = status;
this.deleted = deleted;
this.tenantId = tenantId;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
new file mode 100644
index 0000000..51c539f
--- /dev/null
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
@@ -0,0 +1,27 @@
+package com.vincent.rsf.server.manager.enums;
+
+/**
+ * @author Ryan
+ * @version 1.0
+ * @title PakinIOStatus
+ * @description
+ * @create 2025/4/7 08:48
+ */
+public enum AsnExceStatus {
+
+ //璐ㄦ鐘舵��
+ ASN_EXCE_STATUS_UN_EXCE("0", "鏈墽琛�"),
+ ASN_EXCE_STATUS_EXCE_ING("1", "鎵ц涓�"),
+ ASN_EXCE_STATUS_TASK_DONE("2", "宸插畬鎴�"),
+ ASN_EXCE_STATUS_TASK_CANCEL("3", "鍙栨秷"),
+ ASN_EXCE_STATUS_TASK_CLOSE("4", "宸插叧闂�")
+ ;
+ AsnExceStatus(String val, String desc) {
+ this.val = val;
+ this.desc = desc;
+ }
+
+ public String val;
+ public String desc;
+
+}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
index 6cf50cb..07e1a56 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java
@@ -12,8 +12,8 @@
//璐ㄦ鐘舵��
PAKIN_IO_STATUS_HOLD("0", "寰呭叆搴�"),
QLY_ISPT_STAS_DONE("1", "缁勬嫋瀹屾垚"),
- QLY_ISPT_STAS_TASK_EXCE("2", "浠诲姟鎵ц涓�"),
- QLY_ISPT_STAS_TASK_DONE("3", "浠诲姟瀹屾垚")
+ PAKIN_IO_STATUS_TASK_EXCE("2", "浠诲姟鎵ц涓�"),
+ PAKIN_IO_STATUS_TASK_DONE("3", "浠诲姟瀹屾垚")
;
PakinIOStatus(String val, String desc) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java
index 64d420a..1ebb220 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderService.java
@@ -15,9 +15,9 @@
List<AsnOrder> getListByMatnr(Map<String, String> params);
- R saveOrderAndItems(AsnOrderAndItemsParams params, Long loginUserId);
+ R saveOrderAndItems(AsnOrderAndItemsParams params, Long loginUserId) throws Exception;
- R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId);
+ R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) throws Exception;
boolean batchUpdate(BatchUpdateParam params, Long loginUserId);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
index 3a98a42..74ddb6e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java
@@ -13,7 +13,9 @@
import com.vincent.rsf.server.api.service.ReportMsgService;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.PageParam;
+import com.vincent.rsf.server.common.utils.CommonUtil;
import com.vincent.rsf.server.common.utils.ExcelUtil;
+import com.vincent.rsf.server.common.utils.FieldsUtils;
import com.vincent.rsf.server.manager.controller.params.BatchUpdateParam;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
@@ -103,21 +105,36 @@
return R.ok("鎿嶄綔鎴愬姛锛侊紒");
}
+ /**
+ * @author Ryan
+ * @description ASN鏄庣粏鍗曟嵁淇濆瓨锛屽強鎵╁睍瀛楁淇濆瓨
+ * @param
+ * @return
+ * @time 2025/4/7 09:59
+ */
@Override
- public boolean fieldsSave(Map<String, Object> params) {
+ @Transactional(rollbackFor = Exception.class)
+ public boolean fieldsSave(Map<String, Object> params){
AsnOrderItem asnOrderItem = JSONObject.parseObject(JSONObject.toJSONString(params), AsnOrderItem.class);
if (StringUtils.isBlank(asnOrderItem.getTrackCode())) {
String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LABEL_CODE, asnOrderItem);
asnOrderItem.setTrackCode(ruleCode);
}
- if (!this.saveOrUpdate(asnOrderItem)) {
- throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
+ if (Objects.isNull(asnOrderItem.getAnfme()) || Double.compare(asnOrderItem.getAnfme(), 0.0) <= 0) {
+ throw new CoolException("璁″垝鏀惰揣鏁颁笉鑳戒负绌猴紒锛�");
}
//淇濆瓨鎵╁睍瀛楁
try {
- ExtendFieldsUtils.saveFields(params);
+ String uuid16 = CommonUtil.randomUUID16();
+ Boolean fields = FieldsUtils.saveFields(params, uuid16);
+ if (fields) {
+ asnOrderItem.setFieldsIndex(uuid16);
+ }
} catch (Exception e) {
throw new RuntimeException(e);
+ }
+ if (!this.saveOrUpdate(asnOrderItem)) {
+ throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕繚瀛樺け璐ワ紒锛�");
}
return true;
}
@@ -128,7 +145,7 @@
if (hsahMap.getRecords().isEmpty()) {
return hsahMap.setRecords(new ArrayList<>());
}
- hsahMap.setRecords(ExtendFieldsUtils.getExtendFields(hsahMap.getRecords()));
+ hsahMap.setRecords(FieldsUtils.getExtendFields(hsahMap.getRecords()));
return hsahMap;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
index 99b749e..15498b2 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -13,6 +13,7 @@
import com.vincent.rsf.server.manager.entity.AsnOrderItem;
import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
import com.vincent.rsf.server.manager.entity.AsnOrderLog;
+import com.vincent.rsf.server.manager.enums.AsnExceStatus;
import com.vincent.rsf.server.manager.mapper.AsnOrderMapper;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.mapper.PurchaseMapper;
@@ -24,6 +25,7 @@
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.mapper.SerialRuleMapper;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -95,7 +97,8 @@
}
@Override
- public R saveOrderAndItems(AsnOrderAndItemsParams params, Long loginUserId) {
+ @Transactional(rollbackFor = Exception.class)
+ public R saveOrderAndItems(AsnOrderAndItemsParams params, Long loginUserId) throws Exception {
if (Objects.isNull(params.getOrders())) {
throw new CoolException("涓诲崟淇℃伅涓嶈兘涓虹┖");
}
@@ -116,16 +119,9 @@
if (params.getItems().isEmpty()) {
throw new CoolException("鏀惰揣閫氱煡鍗曟槑缁嗕笉鑳戒负瀵掗鑺傦紒锛�");
}
- params.getItems().forEach(item -> {
- item.put("asnId", orders.getId());
- item.put("asnCode", orders.getCode());
- item.put("poCode", orders.getPoCode());
- item.put("createBy", loginUserId);
- item.put("updateBy", loginUserId);
- if (!asnOrderItemService.fieldsSave(item)) {
- throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
- }
- });
+
+ svaeOrUpdateOrderItem(params,loginUserId);
+
return R.ok("淇濆瓨鎴愬姛!!");
}
@@ -137,26 +133,55 @@
* @return
*/
@Override
- @Transactional
- public R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) {
- if (Objects.isNull(params.getOrders())) {
+ @Transactional(rollbackFor = Exception.class)
+ public R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) throws Exception {
+ AsnOrder orders = params.getOrders();
+ if (Objects.isNull(orders)) {
throw new CoolException("涓诲崟淇℃伅涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(params.getOrders().getId())) {
+ if (Objects.isNull(orders.getId())) {
throw new CoolException("鏁版嵁閿欒锛氬崟鎹甀D涓嶈兘涓虹┖锛侊紒");
}
- if (!this.updateById(params.getOrders())) {
+ if (!this.updateById(orders)) {
throw new CoolException("涓诲崟淇敼澶辫触锛侊紒");
}
if (Objects.isNull(params.getItems()) || params.getItems().isEmpty()) {
- return R.ok("淇敼瀹屾垚锛侊紒");
+ return R.ok("鏄庣粏鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
- List<Map<String, Object>> items = params.getItems();
- List<AsnOrderItem> asnOrderItems = JSONArray.parseArray(JSONArray.toJSONString(items), AsnOrderItem.class);
- if (!asnOrderItemService.saveOrUpdateBatch(asnOrderItems)) {
- throw new CoolException("鏄庣粏淇敼澶辫触锛侊紒");
- }
+
+ svaeOrUpdateOrderItem(params,loginUserId);
+
return R.ok("淇敼瀹屾垚锛侊紒");
+ }
+
+ /**
+ * @author Ryan
+ * @description 鏇存柊鎴栦繚瀛樻槑缁�
+ * @param
+ * @return
+ * @time 2025/4/7 13:28
+ */
+ @Transactional(rollbackFor = Exception.class)
+ private void svaeOrUpdateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) throws Exception{
+ AsnOrder orders = params.getOrders();
+
+ params.getItems().forEach(item -> {
+ item.put("asnId", orders.getId());
+ item.put("asnCode", orders.getCode());
+ item.put("poCode", orders.getPoCode());
+ item.put("createBy", loginUserId);
+ item.put("updateBy", loginUserId);
+ if (!asnOrderItemService.fieldsSave(item)) {
+ throw new CoolException("鏄庣粏淇濆瓨澶辫触锛侊紒");
+ }
+ });
+ List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>()
+ .eq(AsnOrderItem::getAsnId, params.getOrders().getId()));
+ double sum = orderItems.stream().mapToDouble(AsnOrderItem::getAnfme).sum();
+ orders.setAnfme(sum);
+ if (!this.updateById(orders)) {
+ throw new CoolException("璁″垝鏀惰揣鏁伴噺淇敼澶辫触锛侊紒");
+ }
}
/**
@@ -218,9 +243,12 @@
if (Objects.isNull(asrder) || Objects.isNull(asrder.getId())) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
+ if (Objects.isNull(asrder.getAnfme()) || asrder.getAnfme().compareTo(0.00) == 0) {
+ throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
+ }
AsnOrder order = this.getById(asrder.getId());
AsnOrderLog orderLog = new AsnOrderLog();
- order.setExceStatus(Short.valueOf("2"));
+ order.setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val));
BeanUtils.copyProperties(order, orderLog);
orderLog.setId(null);
orderLog.setAsnId(order.getId());
@@ -228,6 +256,7 @@
if (!this.saveOrUpdate(order)) {
throw new CoolException("鐘舵�佷慨鏀瑰け璐ワ紒锛�");
}
+ orderLog.setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val));
if (!asnOrderLogService.save(orderLog)) {
throw new CoolException("涓诲崟鍘嗗彶妗f坊鍔犲け璐ワ紒锛�");
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
index 07896ec..6c5fa1b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
@@ -86,11 +86,13 @@
}
//鑾峰彇鍔ㄦ�佸瓧娈碉紝骞朵繚瀛樻槑缁嗗唴瀹�
if (!FieldsUtils.getFieldsSta().isEmpty()) {
- String uuid = CommonUtil.randomUUID16();
- matnr.setFieldsIndex(uuid);
//淇濆瓨鐗╂枡鎵╁睍灞炴�у��
try {
- FieldsUtils.saveFields(template, uuid);
+ String uuid = CommonUtil.randomUUID16();
+ boolean b = FieldsUtils.saveFields(template, uuid);
+ if (b) {
+ matnr.setFieldsIndex(uuid);
+ }
} catch (Exception e) {
throw new RuntimeException(e);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 49e979b..5e492d8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -72,7 +72,7 @@
.in(WaitPakin::getId, ids)
.eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.QLY_ISPT_STAS_DONE.val)));
if (waitPakins.isEmpty()) {
- throw new CoolException("缁勬嫋淇℃伅涓嶅瓨鍦紒锛�");
+ throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�");
}
waitPakins.forEach(pakin -> {
List<TaskItem> taskItems = new ArrayList<>();
@@ -97,7 +97,6 @@
.set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, pakin.getBarcode()))) {
throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
}
-
/**鑾峰彇缁勬嫋鏄庣粏**/
List<WaitPakinItem> waitPakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>().eq(WaitPakinItem::getPakinId, pakin.getId()));
if (waitPakinItems.isEmpty()) {
@@ -121,12 +120,15 @@
}
});
- waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>()
- .in(WaitPakin::getId, ids)
- .set(WaitPakin::getIoStatus, PakinIOStatus.QLY_ISPT_STAS_TASK_EXCE.val));
+ if (!waitPakinService.update(new LambdaUpdateWrapper<WaitPakin>()
+ .in(WaitPakin::getId, ids)
+ .set(WaitPakin::getUpdateBy, loginUserId)
+ .set(WaitPakin::getCreateBy, loginUserId)
+ .set(WaitPakin::getIoStatus, PakinIOStatus.PAKIN_IO_STATUS_TASK_EXCE.val))) {
+ throw new CoolException("缁勬嫋鐘舵�佷慨鏀瑰け璐ワ紒锛�");
+ }
return R.ok("浠诲姟鐢熸垚瀹屾瘯锛�");
}
-
/**
* 瀹屾垚浠诲姟
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java
index 0ff555f..133b174 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/utils/ExtendFieldsUtils.java
@@ -8,7 +8,9 @@
import com.vincent.rsf.server.system.entity.FieldsItem;
import com.vincent.rsf.server.system.service.FieldsItemService;
import com.vincent.rsf.server.system.service.FieldsService;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
+import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@@ -21,75 +23,41 @@
*/
public class ExtendFieldsUtils {
- /**
- * @author Ryan
- * @description 鏄庣粏鍗曟嵁淇濆瓨鎵╁睍瀛楁
- * @param
- * @return
- * @time 2025/3/15 13:36
- */
- public static Boolean saveFields(Map<String, Object> params) throws Exception{
- FieldsService fieldsService = SpringUtils.getBean(FieldsService.class);
- List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>()
- .eq(Fields::getStatus, 1)
- .eq(Fields::getFlagEnable, 1));
- List<FieldsItem> fieldsItems = new ArrayList<>();
- if (!fields.isEmpty()) {
- String uuid16 = CommonUtil.randomUUID16();
- for (Fields obj : fields) {
- if (!Objects.isNull(params.get(obj.getFields()))) {
- FieldsItem item = new FieldsItem();
- item.setUuid(uuid16)
- .setValue(params.get(obj.getFields()).toString())
- .setMatnrId(Long.parseLong(params.get("matnrId").toString()))
- .setFieldsId(obj.getId());
- fieldsItems.add(item);
- }
- params.put("fieldsIndex", uuid16);
- }
- FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class);
- if (!fieldsItemService.saveBatch(fieldsItems)) {
- throw new CoolException("鍗曟嵁鏄庣粏鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒");
- }
- }
- return true;
- }
+// /**
+// * @author Ryan
+// * @description 鏄庣粏鍗曟嵁淇濆瓨鎵╁睍瀛楁
+// * @param
+// * @return
+// * @time 2025/3/15 13:36
+// */
+// @Transactional(rollbackFor = Exception.class)
+// public static Boolean saveFields(Map<String, Object> params, String uuid) throws Exception{
+// FieldsService fieldsService = SpringUtils.getBean(FieldsService.class);
+// List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>()
+// .eq(Fields::getStatus, 1)
+// .eq(Fields::getFlagEnable, 1));
+// List<FieldsItem> fieldsItems = new ArrayList<>();
+// if (!fields.isEmpty()) {
+// for (Fields obj : fields) {
+// if (!Objects.isNull(params.get(obj.getFields())) && StringUtils.isNotBlank(params.get(obj.getFields()).toString())) {
+// FieldsItem item = new FieldsItem();
+// item.setUuid(uuid)
+// .setValue(params.get(obj.getFields()).toString())
+// .setMatnrId(Long.parseLong(params.get("matnrId").toString()))
+// .setFieldsId(obj.getId());
+// fieldsItems.add(item);
+// }
+// }
+// if (fieldsItems.isEmpty()) {
+// return false;
+// }
+// FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class);
+// if (!fieldsItemService.saveBatch(fieldsItems)) {
+// throw new CoolException("鎵╁睍瀛楁淇濆瓨澶辫触锛侊紒");
+// }
+// return true;
+// }
+// return false;
+// }
-
- /**
- * @author Ryan
- * @description 鑾峰彇鎵╁睍瀛楁key-value鍊�
- * @param
- * @return
- * @time 2025/3/15 15:05
- */
- public static List<Map<String, Object>> getExtendFields(List<Map<String, Object>> params) {
- FieldsService fieldsService = SpringUtils.getBean(FieldsService.class);
- List<Fields> fields = fieldsService.list(new LambdaQueryWrapper<Fields>()
- .eq(Fields::getStatus, 1)
- .eq(Fields::getFlagEnable, 1));
- FieldsItemService fieldsItemService = SpringUtils.getBean(FieldsItemService.class);
- List<Map<String, Object>> result = new ArrayList<>();
- for (Map<String, Object> param : params) {
- result.add(param);
- if (Objects.isNull(param.get("fieldsIndex"))) {
- continue;
- }
- List<FieldsItem> itemList = fieldsItemService
- .list(new LambdaQueryWrapper<FieldsItem>()
- .eq(FieldsItem::getUuid, param.get("fieldsIndex")));
- if (itemList.isEmpty()) {
- continue;
- }
- fields.forEach(fds -> {
- for (FieldsItem fieldsItem : itemList) {
- if (!Objects.isNull(fieldsItem.getFieldsId()) && fieldsItem.getFieldsId().equals(fds.getId())) {
- param.put(fds.getFields(), fieldsItem.getValue());
- }
- }
- });
- }
-
- return result;
- }
}
--
Gitblit v1.9.1