rsf-admin/src/page/histories/taskLog/TaskLogList.jsx
@@ -62,7 +62,6 @@ <SearchInput source="condition" alwaysOn />, <DateInput label='common.time.after' source="timeStart" alwaysOn />, <DateInput label='common.time.before' source="timeEnd" alwaysOn />, <NumberInput source="taskId" label="table.field.taskLog.taskId" />, <TextInput source="taskCode" label="table.field.taskLog.taskCode" />, <NumberInput source="taskStatus" label="table.field.taskLog.taskStatus" />, @@ -79,7 +78,6 @@ <TextInput source="expCode" label="table.field.taskLog.expCode" />, <DateInput source="startTime" label="table.field.taskLog.startTime" />, <DateInput source="endTime" label="table.field.taskLog.endTime" />, <TextInput label="common.field.memo" source="memo" />, <SelectInput label="common.field.status" rsf-admin/src/page/waitPakin/WaitPakinEdit.jsx
@@ -59,7 +59,7 @@ defaultValues={{}} > <Grid container width={{ xs: '100%', xl: '100%' }}> <Grid item xs={12} md={8}> <Grid item xs={24} md={12}> <Typography variant="h6" gutterBottom> {translate('common.edit.title.main')} </Typography> @@ -80,8 +80,7 @@ { id: 1, name: ' 是' }, ]} /> </Stack> <Stack direction='row' gap={2}> <TextInput label="table.field.waitPakin.barcode" readOnly rsf-admin/src/page/waitPakin/WaitPakinItemList.jsx
@@ -119,25 +119,25 @@ preferenceKey='waitPakinItem' bulkActionButtons={false} rowClick={(id, resource, record) => false} omit={['id', 'pakinId', 'createTime', 'createBy', 'memo', 'fieldsIndex']} omit={['id', 'pakinId', 'createTime', 'matnrId', 'createBy', 'memo', 'fieldsIndex']} > <NumberField source="id" /> <NumberField source="pakinId" label="table.field.waitPakinItem.pakinId" /> <TextField source="maktx" label="table.field.waitPakinItem.maktx" /> <NumberField source="matnrId" label="table.field.waitPakinItem.matnrId" /> <TextField source="matnrCode" label="table.field.waitPakinItem.matnrCode" /> <TextField source="maktx" label="table.field.waitPakinItem.maktx" /> <TextField source="batch" label="table.field.waitPakinItem.batch" /> <NumberField source="matnrId" label="table.field.waitPakinItem.matnrId" /> <NumberField source="anfme" label="table.field.waitPakinItem.anfme" /> <NumberField source="workQty" label="table.field.waitPakinItem.workQty" /> <TextField source="unit" label="table.field.waitPakinItem.unit" /> <NumberField source="workQty" label="table.field.waitPakinItem.workQty" /> <TextField source="fieldsIndex" label="table.field.waitPakinItem.fieldsIndex" /> <NumberField source="qty" label="table.field.waitPakinItem.qty" /> <TextField source="batch" label="table.field.waitPakinItem.batch" /> <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> <TextField source="createBy$" label="common.field.createBy" /> <TextField source="flagDefect" label="common.field.createBy" /> {/* <TextField source="flagDefect" label="common.field.flagDefect" /> */} <DateField source="createTime" label="common.field.createTime" showTime /> <BooleanField source="statusBool" label="common.field.status" sortable={false} /> {/* <BooleanField source="statusBool" label="common.field.status" sortable={false} /> */} <TextField source="memo" label="common.field.memo" sortable={false} /> </StyledDatagrid> </List> rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemEdit.jsx
@@ -175,7 +175,7 @@ <Stack direction='row' gap={2}> <TextInput label="table.field.warehouseAreasItem.splrBtch" source="splrBtch" source="splrBatch" parse={v => v} /> </Stack> rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -334,31 +334,16 @@ throw new CoolException("收货失败!!"); } } // if (!warehouseAreasItemService.saveBatch(allOrders)) { // throw new CoolException("收货失败!!"); // } AsnOrder order = asnOrderMapper.getOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, asnCode)); if (order.getQty().compareTo(order.getAnfme()) >= 0.00) { order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val).setRleStatus(Short.valueOf("1")); order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val).setRleStatus(Short.valueOf("1")); if (!asnOrderMapper.updateById(order)) { throw new CoolException("订单状态修改失败!!"); } } //获取采购数量 // double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum(); // BigDecimal subtract = BigDecimal.valueOf(receiptQty).subtract(BigDecimal.valueOf(purQty)); // //判断已收货数量是否小于等于采购数量 // if (subtract.compareTo(new BigDecimal("0.0")) <= 0) { // asnOrder.setRleStatus(Short.valueOf("1")); // //日志表操作 // operateOrderLogs(asnOrder); // } return R.ok(asnOrder); return R.ok("收货成功!!"); } /** rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/AsnExceStatus.java
@@ -12,17 +12,17 @@ //质检状态 ASN_EXCE_STATUS_UN_EXCE("0", "未执行"), ASN_EXCE_STATUS_EXCE_ING("1", "执行中"), ASN_EXCE_STATUS_RECEIPT_DONE("2", "收货完成"), ASN_EXCE_STATUS_TASK_DONE("3", "已完成"), ASN_EXCE_STATUS_TASK_CANCEL("4", "取消"), ASN_EXCE_STATUS_TASK_CLOSE("5", "已关闭"), OUT_STOCK_STATUS_TASK_INIT("5", "初始化"), OUT_STOCK_STATUS_TASK_EXCE("6", "待处理"), OUT_STOCK_STATUS_TASK_WAVE("7", "生成波次"), OUT_STOCK_STATUS_TASK_WORKING("8", "作业中") OUT_STOCK_STATUS_TASK_INIT("11", "初始化"), OUT_STOCK_STATUS_TASK_EXCE("12", "待处理"), OUT_STOCK_STATUS_TASK_WAVE("13", "生成波次"), OUT_STOCK_STATUS_TASK_WORKING("14", "作业中") ; AsnExceStatus(String val, String desc) { this.val = Short.parseShort(val); @@ -47,6 +47,8 @@ return AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.desc; } else if (val.equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_EXCE.val)) { return AsnExceStatus.OUT_STOCK_STATUS_TASK_EXCE.desc; } else if (val.equals(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val)) { return AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.desc; } else { return null; } @@ -63,10 +65,12 @@ return AsnExceStatus.ASN_EXCE_STATUS_TASK_CANCEL.val; } else if (desc.equals(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.desc)) { return AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val; }else if (desc.equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.desc)) { } else if (desc.equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.desc)) { return AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val; } else if (desc.equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_EXCE.desc)) { return AsnExceStatus.OUT_STOCK_STATUS_TASK_EXCE.val; } else if (desc.equals(AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.desc)) { return AsnExceStatus.ASN_EXCE_STATUS_RECEIPT_DONE.val; } else { return null; } rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
@@ -1,15 +1,27 @@ package com.vincent.rsf.server.manager.schedules; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.manager.entity.AsnOrder; 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.service.AsnOrderItemLogService; import com.vincent.rsf.server.manager.service.AsnOrderItemService; import com.vincent.rsf.server.manager.service.AsnOrderLogService; import com.vincent.rsf.server.manager.service.AsnOrderService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; /** * @author Ryan @@ -21,6 +33,17 @@ @Component public class AsnOrderLogSchedule { @Autowired private AsnOrderService asnOrderService; @Autowired private AsnOrderItemService asnOrderItemService; @Autowired private AsnOrderLogService asnOrderLogService; @Autowired private AsnOrderItemLogService asnOrderItemLogService; /** * @author Ryan * @description 删除已完成订单加入Log表 @@ -31,6 +54,47 @@ @Scheduled(cron = "0 0/05 * * * ? ") @Transactional(rollbackFor = Exception.class) public void moveOrderToLog() { List<AsnOrder> asnOrders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getExceStatus, AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val)); if (asnOrders.isEmpty()) { return; } Set<Long> longSet = asnOrders.stream().map(AsnOrder::getId).collect(Collectors.toSet()); List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, longSet)); if (orderItems.isEmpty()) { throw new CoolException("收货明细为空!!"); } for (AsnOrder order : asnOrders) { AsnOrderLog orderLog = new AsnOrderLog(); BeanUtils.copyProperties(order, orderLog); orderLog.setId(null); orderLog.setAsnId(order.getId()); if (!asnOrderLogService.save(orderLog)) { throw new CoolException("主单历史档添加失败!!"); } List<AsnOrderItemLog> logs = new ArrayList<>(); List<AsnOrderItem> items = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId())); items.forEach(item -> { AsnOrderItemLog itemLog = new AsnOrderItemLog(); BeanUtils.copyProperties(item, itemLog); itemLog.setAsnItemId(itemLog.getId()) .setLogId(orderLog.getId()) .setAsnId(item.getAsnId()); logs.add(itemLog); }); if (!asnOrderItemLogService.saveBatch(logs)) { throw new CoolException("通知单明细历史档保存失败!!"); } } if (!asnOrderItemService.remove(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getAsnId, longSet))) { throw new CoolException("原单据明细删除失败!!"); } if (!this.asnOrderService.removeByIds(longSet)) { throw new CoolException("原单据删除失败!!"); } } } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -272,15 +272,15 @@ // } AsnOrder order = this.getById(asrder.getId()); AsnOrderLog orderLog = new AsnOrderLog(); order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val); // order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val); BeanUtils.copyProperties(order, orderLog); orderLog.setId(null); orderLog.setAsnId(order.getId()); if (!this.saveOrUpdate(order)) { throw new CoolException("状态修改失败!!"); } orderLog.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val); // if (!this.saveOrUpdate(order)) { // throw new CoolException("状态修改失败!!"); // } // orderLog.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val); if (!asnOrderLogService.save(orderLog)) { throw new CoolException("主单历史档添加失败!!"); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/OutStockServiceImpl.java
@@ -87,66 +87,6 @@ * @param * @return * @author Ryan * @description 删除原主单及明细,加入历史档 * @time 2025/3/19 19:53 */ @Transactional(rollbackFor = Exception.class) private void operateOrderLogs(AsnOrder asrder) throws Exception { if (Objects.isNull(asrder) || Objects.isNull(asrder.getId())) { throw new CoolException("参数不能为空!!"); } asrder.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val); if (!this.updateById(asrder)) { throw new CoolException("单据关闭失败!!"); } List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asrder.getId())); if (orderItems.isEmpty()) { 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(AsnExceStatus.ASN_EXCE_STATUS_TASK_DONE.val); BeanUtils.copyProperties(order, orderLog); orderLog.setId(null); orderLog.setAsnId(order.getId()); if (!this.saveOrUpdate(order)) { throw new CoolException("状态修改失败!!"); } orderLog.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val); if (!asnOrderLogService.save(orderLog)) { throw new CoolException("主单历史档添加失败!!"); } List<AsnOrderItemLog> logs = new ArrayList<>(); List<AsnOrderItem> items = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId())); items.forEach(item -> { AsnOrderItemLog itemLog = new AsnOrderItemLog(); BeanUtils.copyProperties(item, itemLog); itemLog.setAsnItemId(itemLog.getId()) .setLogId(orderLog.getId()) .setAsnId(item.getAsnId()); logs.add(itemLog); }); if (!asnOrderItemLogService.saveBatch(logs)) { throw new CoolException("通知单明细历史档保存失败!!"); } if (!asnOrderItemService.remove(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, order.getId()))) { throw new CoolException("原单据明细删除失败!!"); } if (!this.removeById(asrder.getId())) { throw new CoolException("原单据删除失败!!"); } } /** * @param * @return * @author Ryan * @description 取消出库单据 * @time 2025/4/22 10:40 */