From aeacc7f80e3ae74cc56be90bb761e9a6b935f643 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 13 五月 2025 14:49:31 +0800 Subject: [PATCH] 收货流程修改 质检流程修改 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java | 33 +++++++--- rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemServiceImpl.java | 8 +- rsf-admin/src/i18n/zh.js | 2 rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/ScheduleJobs.java | 19 ++++-- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 45 +++++++++++++- rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx | 31 ++++++---- rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java | 2 rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx | 2 10 files changed, 105 insertions(+), 41 deletions(-) diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 84f4197..1e4d55c 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -486,7 +486,7 @@ }, qlyIsptItem: { ispectId: "涓诲崟ID", - matnrCode: "鐗╂枡缂栧彿", + matnrCode: "鐗╂枡缂栫爜", maktx: "鐗╂枡鍚嶇О", label: "鏍囩", splrName: "渚涘簲鍟�", diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx index 177fce8..6899c39 100644 --- a/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderModal.jsx @@ -123,7 +123,7 @@ const setFinally = () => { const rows = tableRef.current.state.editRows; for (const key in rows) { - const find = tabelData.find(item => item.matnrId === +key); + const find = tabelData.find(item => item.id === +key); find.anfme = rows[key].anfme.value; } setTableData([...tabelData]); @@ -201,7 +201,7 @@ const handleDeleteItem = () => { - const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.matnrId)); + const newTableData = _.filter(tabelData, (item) => !selectedRows.includes(item.id)); setTableData(newTableData); } @@ -370,7 +370,6 @@ value: selectedSupplier.id, }); } - } } @@ -598,9 +597,6 @@ flex: 1, editable: false, }, - - - ]) const action = { @@ -615,7 +611,6 @@ </IconButton> </Tooltip> ), - } let cdata = useRef([]); @@ -636,7 +631,17 @@ } = await request.get("/fields/enable/list"); if (code === 200) { const cols = data.map(el => ({ - field: el.fields, + field: el.fields, + valueGetter: (value, row) => { + if (value != null && value != undefined) { + return value; + } + if (row.extendFields == null ||row.extendFields[el.fields] == null) { + return '' + } else { + return `${row.extendFields[el.fields] == null ? '' : row.extendFields[el.fields]}`; + } + }, headerName: el.fieldsAlise, minWidth: 100, flex: 1, @@ -648,17 +653,15 @@ } } - - const handleDelete = (row) => { - const newData = _.filter(cdata.current, (item) => item.matnrId !== row.matnrId); + const newData = _.filter(cdata.current, (item) => item.id !== row.id); setTableData(newData); }; const processRowUpdate = (newRow, oldRow) => { const rows = tabelData.map((r) => - r.matnrId === newRow.matnrId ? { ...newRow } : r + r.id === newRow.id ? { ...newRow } : r ) setTableData(rows) // setTableData((prevData) => @@ -673,6 +676,8 @@ const handleSelectionChange = (ids) => { + console.log(ids); + setSelectedRows(ids) }; @@ -687,7 +692,7 @@ rows={tabelData} columns={columns} disableRowSelectionOnClick - getRowId={(row) => row.matnrId} + getRowId={(row) => row.id} disableColumnFilter disableColumnSelector disableColumnSorting diff --git a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx index fbccc69..2192223 100644 --- a/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx +++ b/rsf-admin/src/page/orders/qlyInspect/QlyIsptItemResult.jsx @@ -97,7 +97,7 @@ <List storeKey="IsptItem" resource="qlyIsptItem/ispt/result" - filter={{ id: record?.id, type: '1' }} + filter={{ id: record?.id}} empty={false} filters={false} sort={{ field: "create_time", order: "desc" }} diff --git a/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx b/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx index 0201f0e..13e72c0 100644 --- a/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx +++ b/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx @@ -64,8 +64,8 @@ const filters = [ <SearchInput source="condition" alwaysOn />, - <NumberInput source="areaId" label="table.field.warehouseAreasItem.areaId" />, + <TextInput source="asnCode" label="table.field.warehouseAreasItem.asnCode" />, <TextInput source="areaName" label="table.field.warehouseAreasItem.areaName" />, <NumberInput source="matnrId" label="table.field.warehouseAreasItem.matnrId" />, <TextInput source="matnrName" label="table.field.warehouseAreasItem.matnrName" />, 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 3b87f18..5f955a8 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 @@ -21,12 +21,14 @@ import com.vincent.rsf.server.manager.mapper.*; import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.system.constant.CodeRes; +import com.vincent.rsf.server.system.constant.GlobalConfigCode; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.controller.param.LoginParam; import com.vincent.rsf.server.system.controller.result.LoginResult; import com.vincent.rsf.server.system.entity.*; import com.vincent.rsf.server.system.mapper.FieldsMapper; import com.vincent.rsf.server.system.mapper.TenantMapper; +import com.vincent.rsf.server.system.service.ConfigService; import com.vincent.rsf.server.system.service.FieldsItemService; import com.vincent.rsf.server.system.service.UserLoginService; import com.vincent.rsf.server.system.service.UserService; @@ -40,6 +42,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -120,6 +124,8 @@ private LocAreaMapper locAreaMapper; @Autowired private DeviceSiteMapper deviceSiteMapper; + @Autowired + private ConfigService configService; /** * @return @@ -230,11 +236,15 @@ } //TODO /**鏀惰揣鏁伴噺绱姞锛�1. 浼氬嚭瓒呮敹鎯呭喌 2. 浼氭湁鏀惰揣涓嶈冻鎯呭喌*/ Double rcptedQty = asnOrder.getQty() + receiptQty; - asnOrder.setQty(rcptedQty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val); + asnOrder.setQty(rcptedQty).setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val); if (!asnOrderMapper.updateById(asnOrder)) { throw new CoolException("宸叉敹璐ф暟閲忎慨鏀瑰け璐ワ紒锛�"); } + + Config config = configService.getOne(new LambdaQueryWrapper<Config>().eq(Config::getFlag, GlobalConfigCode.ALLOW_OVER_CHANGE)); + + List<Map<String, Object>> receipts1 = (List<Map<String, Object>>) params.get("receipts"); for (Map<String, Object> rcpt : receipts1) { if (null == rcpt || Objects.isNull(rcpt)) { @@ -266,7 +276,27 @@ if (Objects.isNull(dto.getReceiptQty()) || Double.compare(dto.getReceiptQty(), 0.0) == 0) { throw new CoolException("鐗╂枡:" + dto.getMaktx() + "鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒"); } + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + try { + if (!Objects.isNull(dto.getProdTime())) { + sdf.parse(dto.getProdTime()); + } + } catch (ParseException e) { + throw new CoolException("璇疯緭鍏ユ纭殑鏃堕棿鏍煎紡锛侊紒"); + } + Double itemRcptQty = dto.getReceiptQty() + orderItem.getQty(); + Boolean allowOver = false; + if (!Objects.isNull(config)) { + if (Boolean.parseBoolean(config.getVal())) { + allowOver = true; + } + } + if (itemRcptQty.compareTo(orderItem.getAnfme()) > 0 && !allowOver) { + throw new CoolException("鏀惰揣鏁伴噺涓嶈兘澶т簬璁″垝鏁伴噺锛侊紒"); + } + orderItem.setQty(itemRcptQty) // .setSplrBatch(dto.getSplrBatch()) .setUpdateBy(loginUserId) @@ -342,13 +372,20 @@ .setFieldsIndex(orderItem.getFieldsIndex()) .setShipperId(matnr.getShipperId()); //TODO 渚涘簲鍟嗘爣璇嗘湭璁剧疆锛屾爣璇嗙敱PO鍗曚緵搴斿晢缂栫爜杞崲 - WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>() + + LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>() // .eq(WarehouseAreasItem::getAsnItemId, item.getAsnItemId()) .eq(WarehouseAreasItem::getMatnrCode, item.getMatnrCode()) .eq(!Cools.isEmpty(item.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, item.getFieldsIndex()) .eq(WarehouseAreasItem::getAsnCode, item.getAsnCode()) - .eq(!Cools.isEmpty(item.getIsptResult()), WarehouseAreasItem::getIsptResult, item.getIsptResult()) - .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch())); + .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch()); + if (Objects.isNull(orderItem.getIsptResult())) { + queryWrapper.isNull(WarehouseAreasItem::getIsptResult); + } else { + queryWrapper.eq(WarehouseAreasItem::getIsptResult, orderItem.getIsptResult()); + } + + WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(queryWrapper); if (!Objects.isNull(serviceOne)) { item.setId(serviceOne.getId()); 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 45e1fee..626dbd8 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 @@ -161,15 +161,22 @@ .setMatnrId(matnr.getId()) .setIsptResult(orderItem.getIsptResult()) .setMaktx(matnr.getName()) + .setSplrBatch(orderItem.getSplrBatch()) .setWeight(matnr.getWeight()) .setFieldsIndex(orderItem.getFieldsIndex()) .setShipperId(matnr.getShipperId()); - WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(new LambdaQueryWrapper<WarehouseAreasItem>() - .eq(WarehouseAreasItem::getMatnrCode, item.getMatnrCode()) - .eq(!Cools.isEmpty(item.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, item.getFieldsIndex()) - .eq(WarehouseAreasItem::getAsnCode, item.getAsnCode()) - .eq(!Cools.isEmpty(item.getIsptResult()), WarehouseAreasItem::getIsptResult, item.getIsptResult()) - .eq(StringUtils.isNotBlank(item.getSplrBatch()), WarehouseAreasItem::getSplrBatch, item.getSplrBatch())); + + LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>() + .eq(WarehouseAreasItem::getMatnrCode, orderItem.getMatnrCode()) + .eq(!Cools.isEmpty(orderItem.getFieldsIndex()), WarehouseAreasItem::getFieldsIndex, orderItem.getFieldsIndex()) + .eq(WarehouseAreasItem::getAsnCode, orderItem.getAsnCode()) + .eq(StringUtils.isNotBlank(orderItem.getSplrBatch()), WarehouseAreasItem::getSplrBatch, orderItem.getSplrBatch()); + if (Objects.isNull(orderItem.getIsptResult())) { + queryWrapper.isNull(WarehouseAreasItem::getIsptResult); + } else { + queryWrapper.eq(WarehouseAreasItem::getIsptResult, orderItem.getIsptResult()); + } + WarehouseAreasItem serviceOne = warehouseAreasItemService.getOne(queryWrapper); if (!Objects.isNull(serviceOne)) { item.setId(serviceOne.getId()); item.setAnfme(item.getAnfme() + serviceOne.getAnfme()); 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 1e74587..44c66d2 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 @@ -248,8 +248,8 @@ // } //淇濆瓨鎵╁睍瀛楁 try { + StringBuffer sb = new StringBuffer(); if (Objects.isNull(asnOrderItem.getFieldsIndex()) || StringUtils.isBlank(asnOrderItem.getFieldsIndex())) { - StringBuffer sb = new StringBuffer(); if (!Objects.isNull(asnOrderItem.getExtendFields()) && !asnOrderItem.getExtendFields().isEmpty()) { Map<String, String> fields = asnOrderItem.getExtendFields(); asnOrderItem.getExtendFields().keySet().forEach(key -> { @@ -260,10 +260,10 @@ //鑾峰彇16浣島uid String uuid16 = Cools.md5Chinese(sb.toString()); asnOrderItem.setFieldsIndex(uuid16); - if (FieldsUtils.saveFields(params, uuid16)) { - asnOrderItem.setFieldsIndex(uuid16); - } + params.put("index", uuid16); } + //淇濆瓨鎴栨洿鏂板姩鎬佸瓧娈靛�� + FieldsUtils.updateFieldsValue(params); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java index d78953b..d375c92 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/QlyIsptItemServiceImpl.java @@ -16,6 +16,7 @@ import com.vincent.rsf.server.manager.service.QlyInspectService; import com.vincent.rsf.server.manager.service.QlyIsptItemService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -122,10 +123,9 @@ throw new CoolException("鏀惰揣鍖哄簱瀛樹俊鎭洿鏂板け璐ワ紒锛�"); } + //鏂板缓璐ㄦ鍗曪紝璐ㄦ缁撴灉涓嶄細鏈夎川妫�缁撴灉 if (Objects.isNull(orderItem.getIsptResult())) { operateReceipt(item, orderItem); - } else { - } } } @@ -141,7 +141,6 @@ .eq(QlyInspect::getId, isptItem.stream().findFirst().get().getIspectId())); } -// qlyIsptItemService.pageByIsptResult(null, new QueryWrapper<QlyIsptItem>()) return true; } @@ -158,37 +157,51 @@ if (sum.compareTo(orderItem.getAnfme()) >= 0) { //瀹屾垚璐ㄦ,鍋氭洿鏂版搷浣� if (safeQty.compareTo(0.0) > 0) { - orderItem.setIsptQty(safeQty); + orderItem.setIsptQty(safeQty).setAnfme(safeQty); orderItem.setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val); if (!warehouseAreasItemService.updateById(orderItem)) { throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); } } + WarehouseAreasItem areasItem = new WarehouseAreasItem(); + BeanUtils.copyProperties(orderItem, areasItem); if (disQty.compareTo(0.0) > 0) { - orderItem.setIsptQty(disQty) + areasItem.setIsptQty(disQty) + .setAnfme(disQty) .setId(null) .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val); - if (!warehouseAreasItemService.saveOrUpdate(orderItem)) { + if (!warehouseAreasItemService.saveOrUpdate(areasItem)) { throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); } } } else { + orderItem.setAnfme(orderItem.getAnfme() - sum); + if (!warehouseAreasItemService.updateById(orderItem)) { + throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); + } + + WarehouseAreasItem areasItem = new WarehouseAreasItem(); + BeanUtils.copyProperties(orderItem, areasItem); //鏈畬鎴愬仛娣诲姞鎿嶄綔 if (safeQty.compareTo(0.0) > 0) { - orderItem.setIsptQty(safeQty) + areasItem.setIsptQty(safeQty) + .setAnfme(safeQty) .setId(null) .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_EXCELLENT.val); - if (!warehouseAreasItemService.saveOrUpdate(orderItem)) { + if (!warehouseAreasItemService.saveOrUpdate(areasItem)) { throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); } } + WarehouseAreasItem items = new WarehouseAreasItem(); + BeanUtils.copyProperties(orderItem, items); if (disQty.compareTo(0.0) > 0) { - orderItem.setIsptQty(disQty) + items.setIsptQty(disQty) + .setAnfme(disQty) .setId(null) .setIsptResult(QlyIsptResult.QLY_ISPT_RESULT_DEFECT.val); - if (!warehouseAreasItemService.saveOrUpdate(orderItem)) { + if (!warehouseAreasItemService.saveOrUpdate(items)) { throw new CoolException("鏀惰揣鍖哄簱瀛樻槑缁嗘洿鏂板け璐ワ紒锛�"); } } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java index 15ea16e..615ca93 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/constant/GlobalConfigCode.java @@ -13,5 +13,7 @@ /**鐩存帴缁勬墭*/ public final static String DIRECT_WAIT_PAKIN = "DirectWaitPakin"; + /**鏀惰揣鏃舵槸鍚﹀厑璁歌秴鏀�*/ + public final static String ALLOW_OVER_CHANGE = "AllowOverchange"; } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java index 5d55317..e52f73f 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/system/controller/FieldsController.java @@ -46,7 +46,7 @@ @GetMapping("/fields/enable/list") @ApiOperation("鑾峰彇宸插紑鍚墿灞曞瓧娈�") public R getEnableList() { - return R.ok(fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1).eq(Fields::getStatus, 1))); + return R.ok(fieldsService.list(new LambdaQueryWrapper<Fields>().eq(Fields::getFlagEnable, 1))); } @PreAuthorize("hasAuthority('system:fields:list')") -- Gitblit v1.9.1