rsf-admin/src/i18n/zh.js
@@ -486,7 +486,7 @@ }, qlyIsptItem: { ispectId: "主单ID", matnrCode: "物料编号", matnrCode: "物料编码", maktx: "物料名称", label: "标签", splrName: "供应商", 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 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" }} 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" />, 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()); 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()); 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位uuid 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); } 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("收货区库存明细更新失败!!"); } } 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"; } 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')")