rsf-admin/src/page/stockManage/locRevise/LocReviseCreate.jsx
@@ -176,7 +176,7 @@ defaultValue="1" source="type" parse={v => v} label={translate("table.field.transfer.type")} label={translate("table.field.locRevise.type")} /> </Grid> <Grid item md={2}> rsf-admin/src/page/stockManage/locRevise/LocReviseList.jsx
@@ -66,7 +66,8 @@ <SelectInput source="type" label="table.field.locRevise.type" choices={[ { id: 0, name: ' 库存调整' }, { id: 2, name: ' 盘点调整' }, { id: 1, name: ' 盘点调整' }, { id: 2, name: ' 其它调整' }, ]} />, <NumberInput source="anfme" label="table.field.locRevise.anfme" />, @@ -133,11 +134,11 @@ <NumberField source="id" /> <TextField source="code" label="table.field.locRevise.code" /> <TextField source="type$" label="table.field.locRevise.type" sortable={false} /> <NumberField source="anfme" label="table.field.locRevise.anfme" /> <NumberField source="reviseQty" label="table.field.locRevise.reviseQty" /> <TextField source="exceStatus$" label="table.field.locRevise.exceStatus" sortable={false} /> {/* <NumberField source="anfme" label="table.field.locRevise.anfme" /> <NumberField source="reviseQty" label="table.field.locRevise.reviseQty" /> */} <NumberField source="areaId" label="table.field.locRevise.areaId" /> <TextField source="areaName" label="table.field.locRevise.areaName" /> <TextField source="exceStatus$" label="table.field.locRevise.exceStatus" sortable={false} /> <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> <TextField source="createBy$" label="common.field.createBy" /> @@ -165,7 +166,6 @@ ) } //完成单据 const CompleteButton = () => { const record = useRecordContext(); @@ -182,9 +182,8 @@ } return ( record.exceStatus == 1 ? <ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskIcon />} onConfirm={requestComplete} /> : <></> record.exceStatus == 1 ? <ConfirmButton label={"toolbar.confirmTransfer"} color="secondary" startIcon={<TaskIcon />} onConfirm={requestComplete} size="small" /> : <></> ) } rsf-admin/src/page/stockManage/locRevise/ReviseLogItemList.jsx
@@ -102,7 +102,7 @@ <TextField source="fieldsIndex" label="table.field.locItem.fieldsIndex" /> <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> <TextField source="createBy" label="common.field.createBy" /> <TextField source="createBy$" label="common.field.createBy" /> <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} /> rsf-admin/src/page/system/dept/DeptList.jsx
@@ -107,7 +107,7 @@ {row.children && ( <IconButton aria-label="expand row" size="small" size='small' onClick={() => toggleNode(row.id)} > {isOpen ? <KeyboardArrowDownIcon /> : <KeyboardArrowRightIcon />} rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/SyncOrderController.java
@@ -3,11 +3,13 @@ import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.api.controller.erp.params.OrderParams; import com.vincent.rsf.server.api.controller.erp.params.SyncLocReviseParams; import com.vincent.rsf.server.api.controller.erp.params.SyncOrderParams; import com.vincent.rsf.server.api.controller.erp.params.SyncTransferParams; import com.vincent.rsf.server.api.service.ReceiveMsgService; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate; import com.vincent.rsf.server.manager.enums.OrderType; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -115,4 +117,63 @@ return receiveMsgService.syncTransfer(transferParams); } /** * @author Ryan * @date 2025/8/19 * @description: 库存调整单同步 * @version 1.0 */ @ApiOperation("库存调整单同步") @PostMapping("/sync/revises") public R syncRevise(@RequestBody SyncLocReviseParams reviseParams) { if (Objects.isNull(reviseParams)) { return R.error("参数不能为空!!"); } return receiveMsgService.syncLocRevise(reviseParams); } /** * @author Ryan * @date 2025/8/19 * @description: 库存调整单同步 * @version 1.0 */ @ApiOperation("质检单上报") @PostMapping("/sync/qlyInspect") public R syncQlyReport(@RequestBody List<OrderParams> orders) { return R.ok(); } /** * @author Ryan * @date 2025/8/19 * @description: 单据修改 * @version 1.0 */ @ApiOperation("单据修改") @PostMapping("/sync/orders/update") public R syncOrderUpdate(@RequestBody List<OrderParams> orders) { return R.ok(); } /** * @author Ryan * @date 2025/8/19 * @description: 单据删除 * @version 1.0 */ @ApiOperation("单据删除") @PostMapping("/sync/orders/delete") public R syncOrderDel(@RequestBody List<OrderParams> orders) { return R.ok(); } } rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncLocReviseParams.java
New file @@ -0,0 +1,30 @@ package com.vincent.rsf.server.api.controller.erp.params; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; import java.io.Serializable; import java.util.Date; import java.util.List; @Data @Accessors(chain = true) @ApiModel(value = "SyncLocReviseParams", description = "库存调整单同步参数") public class SyncLocReviseParams implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty("调整类型 {1:盘点调整, 0}") private String type; @ApiModelProperty("库区名称") private String areaName; @ApiModelProperty("调整时间") private Date reviseTime; @ApiModelProperty("单据名称列表") private List<SyncReviseItems> items; } rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrderParams.java
@@ -15,7 +15,7 @@ private static final long serialVersionUID = 1L; @ApiModelProperty("单据类型{in: 收货入库单, out:出库单,check: 盘点单, }") @ApiModelProperty("单据类型{in: 收货入库单, out:出库单,check: 盘点单, revise: 库存调整 }") private String type; @ApiModelProperty("单据明细信息") rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncOrdersItem.java
@@ -60,7 +60,7 @@ @ApiModelProperty("型号") private String model; @ApiModelProperty("送货数量") @ApiModelProperty("数量") private Double anfme; @ApiModelProperty("库存单位") rsf-server/src/main/java/com/vincent/rsf/server/api/controller/erp/params/SyncReviseItems.java
New file @@ -0,0 +1,24 @@ package com.vincent.rsf.server.api.controller.erp.params; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.experimental.Accessors; import lombok.Data; import java.io.Serializable; import java.util.List; @Data @Accessors(chain = true) @ApiModel(value = "SyncReviseItems", description = "调整单明细") public class SyncReviseItems implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty("库位") private String locCode; @ApiModelProperty("调整单明细") private List<SyncOrdersItem> items; } rsf-server/src/main/java/com/vincent/rsf/server/api/service/ReceiveMsgService.java
@@ -105,4 +105,12 @@ * @version 1.0 */ R syncTransfer(SyncTransferParams transferParams); /** * @author Ryan * @date 2025/8/20 * @description: 库存调整单同步 * @version 1.0 */ R syncLocRevise(SyncLocReviseParams reviseParams); } rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/ReceiveMsgServiceImpl.java
@@ -79,6 +79,12 @@ private TransferService transferService; @Autowired private TransferItemService transferItemService; @Autowired private LocReviseService locReviseService; @Autowired private ReviseLogService reviseLogService; @Autowired private ReviseLogItemService reviseLogItemService; /** @@ -474,4 +480,56 @@ return R.ok(); } /** * @author Ryan * @date 2025/8/20 * @description: 库存调整单同步 * @version 1.0 */ @Override @Transactional(timeout = 60, rollbackFor = Exception.class) public R syncLocRevise(SyncLocReviseParams reviseParams) { LocRevise locRevise = new LocRevise(); if (Objects.isNull(reviseParams.getAreaName())) { throw new CoolException("库区不能为空!!"); } WarehouseAreas warehouseAreas = warehouseAreasService .getOne(new LambdaQueryWrapper<WarehouseAreas>() .eq(WarehouseAreas::getName, reviseParams.getAreaName())); if (Objects.isNull(warehouseAreas)) { throw new CoolException("库区不存在!!"); } locRevise.setAreaName(locRevise.getAreaName()) .setAreaId(warehouseAreas.getId()); locRevise.setCode(SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_LOC_REVISE_CODE, null)); if (!locReviseService.save(locRevise)) { throw new CoolException("库存调整单保存失败!!"); } reviseParams.getItems().forEach(revise -> { Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, revise.getLocCode())); ReviseLog reviseLog = new ReviseLog(); BeanUtils.copyProperties(loc, reviseLog); reviseLog.setReviseId(locRevise.getId()).setReviseCode(locRevise.getCode()); if (!reviseLogService.save(reviseLog)) { throw new CoolException("库存调整单不能为空!!"); } revise.getItems().forEach(reviseItem -> { ReviseLogItem logItem = new ReviseLogItem(); BeanUtils.copyProperties(reviseItem, logItem); logItem.setLocId(loc.getId()) .setLocCode(loc.getCode()) .setId(null) .setReviseQty(reviseItem.getAnfme()); if (!reviseLogItemService.save(logItem)) { throw new CoolException("调整库存明细保存失败!!"); } }); }); return R.ok(); } }