From aa0aaf8b2091c551a73c851ed692f6d908fea8fb Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期二, 08 四月 2025 08:41:57 +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/service/impl/TaskServiceImpl.java      |    4 
 rsf-admin/src/page/task/TaskList.jsx                                                           |    4 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/PakinIOStatus.java               |    2 
 rsf-admin/.eslintrc.cjs                                                                        |    1 
 rsf-admin/src/page/taskItem/TaskItemList.jsx                                                   |    6 -
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java |   19 ++--
 rsf-server/src/main/resources/application.yml                                                  |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java            |   12 ++-
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java        |   23 +++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreasItem.java         |   17 +++
 rsf-admin/src/page/task/TaskPanel.jsx                                                          |   90 +++++++++++++++++++--
 rsf-admin/.env                                                                                 |    2 
 12 files changed, 140 insertions(+), 42 deletions(-)

diff --git a/rsf-admin/.env b/rsf-admin/.env
index a8ce658..a3c69b2 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.24
+VITE_BASE_IP=127.0.0.1
 # VITE_BASE_IP=47.76.147.249
 VITE_BASE_PORT=8080
diff --git a/rsf-admin/.eslintrc.cjs b/rsf-admin/.eslintrc.cjs
index 995e273..24c8a5c 100644
--- a/rsf-admin/.eslintrc.cjs
+++ b/rsf-admin/.eslintrc.cjs
@@ -9,6 +9,7 @@
   ],
   ignorePatterns: ["dist", ".eslintrc.cjs"],
   parser: "@typescript-eslint/parser",
+  "react/jsx-key": [false, { "checkFragmentShorthand": false }],
   env: {
     browser: true,
     es2021: true,
diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx
index 9fdda18..86afa4c 100644
--- a/rsf-admin/src/page/task/TaskList.jsx
+++ b/rsf-admin/src/page/task/TaskList.jsx
@@ -138,8 +138,8 @@
                         </>
                     }
                     rowClick={(id, resource, record) => false}
-                    // expand={() => <TaskPanel />}
-                    // expandSingle={true}
+                    expand={() => <TaskPanel />}
+                    expandSingle={true}
                     omit={['id', 'createTime', 'createBy', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'sort']}
                 >
                     <NumberField source="id" />
diff --git a/rsf-admin/src/page/task/TaskPanel.jsx b/rsf-admin/src/page/task/TaskPanel.jsx
index 853c1a3..dd7db7f 100644
--- a/rsf-admin/src/page/task/TaskPanel.jsx
+++ b/rsf-admin/src/page/task/TaskPanel.jsx
@@ -1,16 +1,89 @@
 import React, { useState, useRef, useEffect, useMemo } from "react";
 import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
 import {
-    useTranslate,
+    List,
+    DatagridConfigurable,
+    SearchInput,
+    TopToolbar,
+    SelectColumnsButton,
+    EditButton,
+    FilterButton,
+    CreateButton,
+    ExportButton,
+    BulkDeleteButton,
+    WrapperField,
     useRecordContext,
+    useTranslate,
+    useNotify,
+    useListContext,
+    FunctionField,
+    TextField,
+    NumberField,
+    DateField,
+    BooleanField,
+    ReferenceField,
+    TextInput,
+    DateTimeInput,
+    DateInput,
+    SelectInput,
+    NumberInput,
+    ReferenceInput,
+    ReferenceArrayInput,
+    AutocompleteInput,
+    DeleteButton,
 } from 'react-admin';
-import PanelTypography from "../components/PanelTypography";
-import * as Common from '@/utils/common'
+import { styled } from '@mui/material/styles';
+import PageDrawer from "../components/PageDrawer";
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
+import * as Common from '@/utils/common';
+
+const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
+    '& .css-1vooibu-MuiSvgIcon-root': {
+        height: '.9em'
+    },
+    '& .RaDatagrid-row': {
+        cursor: 'auto'
+    },
+    '& .column-name': {
+    },
+    '& .opt': {
+        width: 200
+    },
+}));
+
+const filters = [
+    <SearchInput source="condition" alwaysOn />,
+    <DateInput label='common.time.after' source="timeStart"  />,
+    <DateInput label='common.time.before' source="timeEnd" />,
+    <NumberInput source="taskId" label="table.field.taskItem.taskId" />,
+    <NumberInput source="orderId" label="table.field.taskItem.orderId" />,
+    <NumberInput source="orderType" label="table.field.taskItem.orderType" />,
+    <NumberInput source="orderItemId" label="table.field.taskItem.orderItemId" />,
+    <NumberInput source="matnrId" label="table.field.taskItem.matnrId" />,
+    <TextInput source="maktx" label="table.field.taskItem.maktx" />,
+    <TextInput source="matnrCode" label="table.field.taskItem.matnrCode" />,
+    <TextInput source="unit" label="table.field.taskItem.unit" />,
+    <NumberInput source="anfme" label="table.field.taskItem.anfme" />,
+    <TextInput source="batch" label="table.field.taskItem.batch" />,
+    <TextInput source="spec" label="table.field.taskItem.spec" />,
+    <TextInput source="model" label="table.field.taskItem.model" />,
+    <TextInput label="common.field.memo" source="memo" />,
+    <SelectInput
+        label="common.field.status"
+        source="status"
+        choices={[
+            { id: '1', name: 'common.enums.statusTrue' },
+            { id: '0', name: 'common.enums.statusFalse' },
+        ]}
+        resettable
+    />,
+]
 
 const TaskPanel = () => {
-    const record = useRecordContext();
-    if (!record) return null;
     const translate = useTranslate();
+    const [createDialog, setCreateDialog] = useState(false);
+    const [drawerVal, setDrawerVal] = useState(false);
+
     return (
         <>
             <Box display="flex">
@@ -30,18 +103,14 @@
                     actions={(
                         <TopToolbar>
                             <FilterButton />
-                            {/* <MyCreateButton onClick={() => { setCreateDialog(true) }} /> */}
-                            <SelectColumnsButton preferenceKey='taskItem' />
-                            {/* <MyExportButton /> */}
                         </TopToolbar>
                     )}
                     perPage={DEFAULT_PAGE_SIZE}
                 >
                     <StyledDatagrid
                         preferenceKey='taskItem'
-                        // bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+                        bulkActionButtons={false}
                         rowClick={(id, resource, record) => false}
-                        // expand={() => <TaskItemPanel />}
                         expandSingle={true}
                         omit={['id', 'createTime', 'createBy', 'memo', 'taskId', 'orderId', 'orderItemId', 'matnrId']}
                     >
@@ -58,7 +127,6 @@
                         <TextField source="batch" label="table.field.taskItem.batch" />
                         <TextField source="spec" label="table.field.taskItem.spec" />
                         <TextField source="model" label="table.field.taskItem.model" />
-
                         <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                             <TextField source="nickname" />
                         </ReferenceField>
diff --git a/rsf-admin/src/page/taskItem/TaskItemList.jsx b/rsf-admin/src/page/taskItem/TaskItemList.jsx
index fc2123d..d146e6d 100644
--- a/rsf-admin/src/page/taskItem/TaskItemList.jsx
+++ b/rsf-admin/src/page/taskItem/TaskItemList.jsx
@@ -34,11 +34,6 @@
 } from 'react-admin';
 import { Box, Typography, Card, Stack } from '@mui/material';
 import { styled } from '@mui/material/styles';
-import TaskItemCreate from "./TaskItemCreate";
-import TaskItemPanel from "./TaskItemPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
 import PageDrawer from "../components/PageDrawer";
 import MyField from "../components/MyField";
 import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
@@ -88,7 +83,6 @@
 
 const TaskItemList = () => {
     const translate = useTranslate();
-
     const [createDialog, setCreateDialog] = useState(false);
     const [drawerVal, setDrawerVal] = useState(false);
 
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 b6536c2..ea767f7 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
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
@@ -291,7 +292,7 @@
                     .setSplrBatch(dto.getSplrBatch())
                     .setMatnrCode(matnr.getCode())
                     .setMatnrId(matnr.getId())
-                    .setMatnrName(matnr.getName())
+                    .setMaktx(matnr.getName())
                     //搴撳瓨鍗曚綅涓烘渶灏忓崟浣�
                     .setUnit(dto.getStockUnit())
                     .setStockUnit(dto.getStockUnit())
@@ -377,9 +378,21 @@
         return fieldsMapper.selectList(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1));
     }
 
+    /**
+     * @author Ryan
+     * @description 鑾峰彇缁勭洏鏄庣粏
+     * @param
+     * @return
+     * @time 2025/4/7 16:58
+     */
     @Override
     public R getDeltByCode(String code) {
-        return R.ok(warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>().eq(WarehouseAreasItem::getTrackCode, code)));
+        //TODO 鍚庣画闇�鏍规嵁绛栫暐閰嶇疆锛岃幏鍙栫粍鎷栨暟鎹�傚锛氭贩瑁咃紝鎸夋壒娆℃贩瑁呯瓑
+        LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new QueryWrapper<WarehouseAreasItem>()
+                .select("SUM(anfme) as anfme, track_code, asn_code, id, splr_batch, ispt_result, plat_item_id, batch, qty, work_qty, matnr_code, matnr_id, maktx").lambda()
+                .eq(WarehouseAreasItem::getTrackCode, code)
+                .groupBy(WarehouseAreasItem::getSplrBatch, WarehouseAreasItem::getAsnId, WarehouseAreasItem::getAreaId, WarehouseAreasItem::getMatnrId);
+        return R.ok(warehouseAreasItemService.getOne(queryWrapper));
     }
 
     /**
@@ -394,6 +407,12 @@
         return waitPakinService.mergeItems(waitPakin);
     }
 
+    /**
+     * @author Ryan
+     * @description 瑙g粦
+     * @param param
+     * @return
+     */
     @Override
     public WaitPakin unBind(WaitPakinParam param) {
         return waitPakinService.unBind(param);
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 a152659..176d8a1 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
@@ -53,6 +53,19 @@
     @ApiModelProperty("鍗曟嵁鏄庣粏ID")
     private Long asnItemId;
 
+    @ApiModelProperty("琛屽彿")
+    private String platItemId;
+
+    @ApiModelProperty("璐ㄦ缁撴灉")
+    private Short isptResult;
+
+    @ApiModelProperty("宸叉敹璐ф暟閲�")
+    private Double qty;
+
+    @ApiModelProperty("鎵ц鏁伴噺")
+    private Double workQty;
+
+
     /**
      * 鍖哄煙鍚嶇О
      */
@@ -72,7 +85,7 @@
      * 鐗╂枡鍚嶇О
      */
     @ApiModelProperty(value= "鐗╂枡鍚嶇О")
-    private String matnrName;
+    private String maktx;
 
     /**
      * 鐗╂枡缂栫爜
@@ -207,7 +220,7 @@
         this.areaId = areaId;
         this.areaName = areaName;
         this.matnrId = matnrId;
-        this.matnrName = matnrName;
+        this.maktx = matnrName;
         this.matnrCode = matnrCode;
         this.trackCode = trackCode;
         this.anfme = anfme;
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 07e1a56..b355406 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
@@ -11,7 +11,7 @@
 
     //璐ㄦ鐘舵��
     PAKIN_IO_STATUS_HOLD("0", "寰呭叆搴�"),
-    QLY_ISPT_STAS_DONE("1", "缁勬嫋瀹屾垚"),
+    PAKIN_IO_STATUS_DONE("1", "缁勬嫋瀹屾垚"),
     PAKIN_IO_STATUS_TASK_EXCE("2", "浠诲姟鎵ц涓�"),
     PAKIN_IO_STATUS_TASK_DONE("3", "浠诲姟瀹屾垚")
             ;
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
index 86d45c9..6e4e4bd 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java
@@ -6,6 +6,7 @@
 import com.vincent.rsf.server.common.utils.CommonUtil;
 import com.vincent.rsf.server.common.utils.DateUtils;
 import com.vincent.rsf.server.manager.entity.*;
+import com.vincent.rsf.server.manager.enums.PakinIOStatus;
 import com.vincent.rsf.server.manager.service.*;
 import com.vincent.rsf.server.system.constant.SerialRuleCode;
 import com.vincent.rsf.server.system.utils.SerialRuleUtils;
@@ -183,10 +184,13 @@
      * @return
      * @time 2025/3/29 12:36
      */
-    @Scheduled(cron = "0/5 * * * * ?")
+//    @Scheduled(cron = "0 0/05 * * * ?  ")
+    @Scheduled(cron = "0/25 * * * * ?")
     @Transactional(rollbackFor = Exception.class)
     public void pakinLog() {
-        List<WaitPakin>  pakinIds = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getIoStatus, 2).select(WaitPakin::getId));
+        List<WaitPakin>  pakinIds = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
+                .eq(WaitPakin::getIoStatus, Short.valueOf(PakinIOStatus.PAKIN_IO_STATUS_TASK_DONE.val))
+                .select(WaitPakin::getId));
         if (pakinIds.isEmpty()) {
             return;
         }
@@ -221,10 +225,10 @@
         if (!waitPakinItemLogService.saveBatch(itemLogs)) {
             throw new CoolException("鍘嗗彶鏄庣粏妗d繚瀛樺け璐ワ紒锛�");
         }
-        if (!waitPakinService.removeByIds(pakins)) {
+        if (!waitPakinService.removeByIds(list)) {
             throw new CoolException("鍘熷崟鎹垹闄ゅけ璐ワ紒锛�");
         }
-        if (!waitPakinItemService.removeByIds(pakinItems)) {
+        if (!waitPakinItemService.remove(new LambdaQueryWrapper<WaitPakinItem>().in(WaitPakinItem::getPakinId, list))) {
             throw new CoolException("鍘熷崟鎹槑缁嗗垹闄ゅけ璐ワ紒锛�");
         }
     }
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 5e492d8..cc757b4 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
@@ -70,7 +70,7 @@
         List<Long> ids = waitPakin.stream().map(WaitPakin::getId).collect(Collectors.toList());
         List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>()
                 .in(WaitPakin::getId, ids)
-                .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.QLY_ISPT_STAS_DONE.val)));
+                .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val)));
         if (waitPakins.isEmpty()) {
             throw new CoolException("璇锋鏌ョ粍鎷栫姸鎬佹槸鍚﹀畬鎴愶紒锛�");
         }
@@ -93,7 +93,7 @@
             if (!this.save(task)) {
                 throw new CoolException("浠诲姟淇濆瓨澶辫触锛侊紒");
             }
-            if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, pakin.getCode())
+            if (!locService.update(new LambdaUpdateWrapper<Loc>().eq(Loc::getCode, task.getTargLoc())
                     .set(Loc::getUseStatus, LocStsType.LOC_STS_TYPE_S.type).set(Loc::getBarcode, pakin.getBarcode()))) {
                 throw new CoolException("搴撲綅棰勭害澶辫触锛侊紒");
             }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
index 70ce7d0..b50c28e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java
@@ -80,7 +80,7 @@
         }
         pakin.setCode(ruleCode)
                 //鐘舵�佷慨鏀逛负鍏ュ簱涓�
-                .setIoStatus(Short.parseShort(PakinIOStatus.QLY_ISPT_STAS_DONE.val))
+                .setIoStatus(Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val))
                 .setAnfme(sum)
                 .setBarcode(waitPakin.getBarcode());
         if (!this.save(pakin)) {
@@ -104,26 +104,25 @@
                     .setAsnId(item.getAsnId())
                     .setAsnCode(item.getAsnCode())
                     .setAsnItemId(item.getId())
-                    .setMatnrCode(item.getMatnrCode())
                     .setBatch(item.getSplrBatch())
                     .setUnit(item.getStockUnit())
                     .setFieldsIndex(item.getFieldsIndex())
-                    .setUnit(item.getStockUnit())
                     .setMatnrId(item.getMatnrId())
                     .setMaktx(item.getMaktx())
                     .setMatnrCode(item.getMatnrCode());
             for (PakinItem waitPakinItem : waitPakin.getItems()) {
                 if (waitPakinItem.getTrackCode().equals(item.getTrackCode())) {
-                    Double v = item.getWorkQty() + waitPakinItem.getReceiptQty();
-                    pakinItem.setWorkQty(v)
+//                    Double v = item.getWorkQty() + waitPakinItem.getReceiptQty();
+                    pakinItem
+                            .setWorkQty(waitPakinItem.getReceiptQty())
                             .setAnfme(waitPakinItem.getReceiptQty())
                             .setTrackCode(waitPakinItem.getTrackCode());
                     /**鏇存柊鍗曟嵁鎵ц涓簱瀛�*/
-                    if (v.compareTo(item.getAnfme()) > 0) {throw new CoolException("鎵ц涓暟閲忓ぇ浜庢敹璐ф暟閲忥紒锛�");}
-                    if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>()
-                            .eq(AsnOrderItem::getTrackCode, waitPakinItem.getTrackCode()).set(AsnOrderItem::getWorkQty, v))) {
-                        throw new CoolException("鎵ц涓簱瀛樻洿鏂板け璐ワ紒锛�");
-                    }
+//                    if (v.compareTo(item.getAnfme()) > 0) {throw new CoolException("鎵ц涓暟閲忓ぇ浜庢敹璐ф暟閲忥紒锛�");}
+//                    if (!asnOrderItemService.update(new LambdaUpdateWrapper<AsnOrderItem>()
+//                            .eq(AsnOrderItem::getTrackCode, waitPakinItem.getTrackCode()).set(AsnOrderItem::getWorkQty, v))) {
+//                        throw new CoolException("鎵ц涓簱瀛樻洿鏂板け璐ワ紒锛�");
+//                    }
                 }
             }
             items.add(pakinItem);
diff --git a/rsf-server/src/main/resources/application.yml b/rsf-server/src/main/resources/application.yml
index a844729..4a03079 100644
--- a/rsf-server/src/main/resources/application.yml
+++ b/rsf-server/src/main/resources/application.yml
@@ -23,7 +23,7 @@
   #  global-config:
   #    field-strategy: 0
   configuration:
-#    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
     map-underscore-to-camel-case: true
     cache-enabled: true
     call-setters-on-nulls: true

--
Gitblit v1.9.1