From acaf6624ef2f706b8ccf442b453d802320829bd3 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 07 四月 2025 16:51:16 +0800 Subject: [PATCH] # 修改 1. 任务列表修改 2. ASN执行状态修改 3. ASN扩展字段优化 4. 确认收货扩展字段优化 --- 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