From 1af8eb8dc7bdafd9e2f8d8650c93243a0cb6963c Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 26 五月 2025 18:14:21 +0800 Subject: [PATCH] 代码优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java | 90 +++++++----- rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java | 6 rsf-admin/src/page/orders/delivery/DeliveryList.jsx | 12 + rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java | 7 rsf-admin/src/page/work/outBound/OutBoundList.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java | 15 + rsf-admin/src/page/locItem/LocItemList.jsx | 1 rsf-admin/src/page/task/TaskList.jsx | 19 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java | 118 ++++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/common/constant/Constants.java | 15 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java | 21 +- rsf-admin/src/i18n/zh.js | 3 rsf-admin/src/page/basicInfo/loc/LocEdit.jsx | 5 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java | 6 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocToTaskParams.java | 32 ++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java | 5 18 files changed, 283 insertions(+), 78 deletions(-) diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 5f6a0a8..1dc296c 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -208,7 +208,8 @@ basContainer: '瀹瑰櫒绠$悊', outBound: '鍑哄簱浣滀笟', checkOutBound: '鐩樼偣鍑哄簱', - stockTransfer: '搴撳瓨杞Щ', + stockTransfer: '搴撲綅杞Щ', + }, table: { field: { diff --git a/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx b/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx index 1e467c5..f1bb4c5 100644 --- a/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx +++ b/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx @@ -111,24 +111,21 @@ <NumberInput label="table.field.loc.length" source="length" - validate={required()} /> <NumberInput label="table.field.loc.width" source="width" - validate={required()} /> <NumberInput label="table.field.loc.height" source="height" - validate={required()} /> </Grid> <Grid item display="flex" gap={1}> <ReferenceArrayInput source="typeIds" reference="locType" > - <SelectArrayInput label="table.field.loc.type" validate={[required()]} /> + <SelectArrayInput label="table.field.loc.type" /> </ReferenceArrayInput> <TextInput label="table.field.loc.unit" diff --git a/rsf-admin/src/page/locItem/LocItemList.jsx b/rsf-admin/src/page/locItem/LocItemList.jsx index a07bb72..5051b92 100644 --- a/rsf-admin/src/page/locItem/LocItemList.jsx +++ b/rsf-admin/src/page/locItem/LocItemList.jsx @@ -107,6 +107,7 @@ source="useStatus" optionValue="value" parse={v => v} + alwaysOn />, <TextInput source="code" label="table.field.loc.code" />, <AutocompleteInput diff --git a/rsf-admin/src/page/orders/delivery/DeliveryList.jsx b/rsf-admin/src/page/orders/delivery/DeliveryList.jsx index 5a4eb4d..da7d327 100644 --- a/rsf-admin/src/page/orders/delivery/DeliveryList.jsx +++ b/rsf-admin/src/page/orders/delivery/DeliveryList.jsx @@ -39,6 +39,7 @@ import EmptyData from "../../components/EmptyData"; import MyCreateButton from "../../components/MyCreateButton"; import MyExportButton from '../../components/MyExportButton'; +import ImportButton from "../../components/ImportButton"; import PageDrawer from "../../components/PageDrawer"; import MyField from "../../components/MyField"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; @@ -60,8 +61,8 @@ const filters = [ <SearchInput source="condition" alwaysOn />, - <DateInput label='common.time.after' source="timeStart" />, - <DateInput label='common.time.before' source="timeEnd" />, + <DateInput label='common.time.after' source="timeStart" />, + <DateInput label='common.time.before' source="timeEnd" />, <TextInput source="code" label="table.field.delivery.code" />, <TextInput source="platId" label="table.field.delivery.platId" />, <TextInput source="type" label="table.field.delivery.type" />, @@ -110,7 +111,8 @@ <FilterButton /> <MyCreateButton onClick={() => { setCreateDialog(true) }} /> <SelectColumnsButton preferenceKey='delivery' /> - <MyExportButton /> + <ImportButton value={'delivery'} /> + {/* <MyExportButton /> */} </TopToolbar> )} perPage={DEFAULT_PAGE_SIZE} @@ -121,7 +123,7 @@ rowClick={(id, resource, record) => false} expand={false} expandSingle={true} - omit={['id', 'createTime', 'createBy','platId', 'memo', 'workQty', 'startTime', 'endTime', 'updateBy','createTime']} + omit={['id', 'createTime', 'createBy', 'platId', 'memo', 'workQty', 'startTime', 'endTime', 'updateBy', 'createTime']} > <NumberField source="id" /> <TextField source="code" label="table.field.delivery.code" /> @@ -135,7 +137,7 @@ <TextField source="platCode" label="table.field.delivery.platCode" /> <DateField source="startTime" label="table.field.delivery.startTime" showTime /> <DateField source="endTime" label="table.field.delivery.endTime" showTime /> - <TextField source="updateBy$" label="common.field.updateBy" /> + <TextField source="updateBy$" label="common.field.updateBy" /> <DateField source="updateTime" label="common.field.updateTime" showTime /> <TextField source="createBy$" label="common.field.createBy" /> <DateField source="createTime" label="common.field.createTime" showTime /> diff --git a/rsf-admin/src/page/task/TaskList.jsx b/rsf-admin/src/page/task/TaskList.jsx index 84f1b66..93cd799 100644 --- a/rsf-admin/src/page/task/TaskList.jsx +++ b/rsf-admin/src/page/task/TaskList.jsx @@ -63,8 +63,17 @@ const TaskList = (props) => { const translate = useTranslate(); + const refresh = useRefresh(); const [drawerVal, setDrawerVal] = useState(false); const dict = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_warehouse_type')) || []; + + // useEffect(() => { + // const interval = setInterval(() => { + // refresh(); + // }, 5000); // 姣�5绉掑埛鏂颁竴娆� + + // return () => clearInterval(interval); // 娓呴櫎瀹氭椂鍣� + // }, [refresh]) const filters = [ <SearchInput source="condition" alwaysOn />, @@ -103,6 +112,7 @@ return ( <Box display="flex"> <List + queryOptions={{ refetchInterval: 5000 }} sx={{ flexGrow: 1, transition: (theme) => @@ -179,7 +189,10 @@ export default TaskList; - +/** + * 鐩樼偣 + * @returns te + */ const CheckButton = () => { const record = useRecordContext(); const notify = useNotify(); @@ -195,7 +208,7 @@ } } - return (record?.taskStatus == 198 && record?.taskType == 107 ? <ConfirmButton label={"toolbar.check"} startIcon={<GradingOutlinedIcon />} onConfirm={checkClick} /> : <></>) + return (record?.taskStatus == 199 && record?.taskType == 107 ? <ConfirmButton label={"toolbar.check"} startIcon={<GradingOutlinedIcon />} onConfirm={checkClick} /> : <></>) } /** @@ -273,7 +286,7 @@ } } return ( - (record.taskStatus == 1 || record.taskStatus < 101) && (record.taskType == 1 || record.taskType == 101 || record.taskType == 10 || record.taskType == 104) ? + (record.taskStatus == 1 || record.taskStatus == 101) && (record.taskType == 1 || record.taskType == 101 || record.taskType == 10 || record.taskType == 104) ? <Button onClick={clickCancel} label="toolbar.cancel"> diff --git a/rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx b/rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx index 82e94c4..d48c170 100644 --- a/rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx +++ b/rsf-admin/src/page/work/checkOutBound/CheckOutBoundList.jsx @@ -182,7 +182,7 @@ http(sta, data); } const http = async (sta, items) => { - const { data: { code, data, msg } } = await request.post(`/locItem/generate/task`, { siteNo: sta, items: items, type: 'check' }); + const { data: { code, data, msg } } = await request.post(`/locItem/check/task`, { siteNo: sta, items: items }); if (code === 200) { notify(msg); refresh() diff --git a/rsf-admin/src/page/work/outBound/OutBoundList.jsx b/rsf-admin/src/page/work/outBound/OutBoundList.jsx index 4616e6e..391ca1d 100644 --- a/rsf-admin/src/page/work/outBound/OutBoundList.jsx +++ b/rsf-admin/src/page/work/outBound/OutBoundList.jsx @@ -189,7 +189,7 @@ notify(translate('toolbar.request.error.out_stock_qty')) return } - const { data: { code, data, msg } } = await request.post(`/locItem/check/task`, { siteNo: sta, items: items }); + const { data: { code, data, msg } } = await request.post(`/locItem/generate/task`, { siteNo: sta, items: items }); if (code === 200) { notify(msg); refresh() diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java index cec64a0..db1abfc 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/utils/LocUtils.java @@ -55,7 +55,12 @@ public static String getShallowLoc(SlaveProperties slaveProperties, String deepLoc) { LocService locService = SpringUtils.getBean(LocService.class); Loc depLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, deepLoc)); - int row = depLoc.getRow()-1; + int row; + if (depLoc.getRow() != 1) { + row = depLoc.getRow()-1; + } else { + row = depLoc.getRow(); + } boolean contains = slaveProperties.getDoubleLocs().contains(row); Loc shallowLoc = null; if (!contains) { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/constant/Constants.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/constant/Constants.java index 497c35f..5906032 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/common/constant/Constants.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/constant/Constants.java @@ -90,4 +90,19 @@ */ public static final String TOKEN_TYPE = "Bearer"; + /** + * 搴撳瓨鍑哄簱 + */ + public static final String TASK_TYPE_OUT_STOCK = "outStock"; + + /** + * 搴撳瓨鐩樼偣鍑哄簱 + */ + public static final String TASK_TYPE_OUT_CHECK = "check"; + + /** + * 鎷f枡鍑哄簱 + */ + public static final String TASK_TYPE_OUT_PICK = "pick"; + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java index 04abb82..261413d 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/DeliveryController.java @@ -124,4 +124,4 @@ ExcelUtil.build(ExcelUtil.create(deliveryService.list(), Delivery.class), response); } -} +} \ No newline at end of file diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java index 59adfb7..9d1717e 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocItemController.java @@ -5,12 +5,14 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.server.common.constant.Constants; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.common.annotation.OperationLog; import com.vincent.rsf.server.common.domain.BaseParam; import com.vincent.rsf.server.common.domain.KeyValVo; import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.common.utils.FieldsUtils; +import com.vincent.rsf.server.manager.controller.params.LocToTaskParams; import com.vincent.rsf.server.manager.entity.LocItem; import com.vincent.rsf.server.manager.service.LocItemService; import com.vincent.rsf.server.manager.service.LocService; @@ -82,17 +84,19 @@ /** * 鐢熸垚搴撳瓨鍑哄簱浠诲姟 - * @param map + * @param param * @return */ @PreAuthorize("hasAuthority('manager:locItem:list')") @ApiOperation("鐢熸垚搴撳瓨鍑哄簱浠诲姟") @PostMapping("/locItem/generate/task") - public R generateTask(@RequestBody Map<String, Object> map) { - if (Objects.isNull(map)) { + public R generateTask(@RequestBody LocToTaskParams param) { + if (Objects.isNull(param)) { return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - return locItemService.generateTask(map); + param.setType(Constants.TASK_TYPE_OUT_STOCK); + + return locItemService.generateTask(param); } /** @@ -103,11 +107,11 @@ @PreAuthorize("hasAuthority('manager:locItem:list')") @ApiOperation("鐢熸垚绉诲簱浠诲姟") @PostMapping("/locItem/move/task") - public R genMoveTask(@RequestBody Map<String, Object> map) { + public R genMoveTask(@RequestBody LocToTaskParams map) { if (Objects.isNull(map)) { return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - return locItemService.genMoveTask(map); + return R.ok("浠诲姟鐢熸垚鎴愬姛").add(locItemService.genMoveTask(map)); } /** @@ -118,11 +122,12 @@ @PreAuthorize("hasAuthority('manager:locItem:list')") @ApiOperation("鐢熸垚鐩樼偣鍑哄簱浠诲姟") @PostMapping("/locItem/check/task") - public R genStatisticalTask(@RequestBody Map<String, Object> map) { + public R genStatisticalTask(@RequestBody LocToTaskParams map) { if (Objects.isNull(map)) { return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } - return locItemService.generateTask(map); + map.setType(Constants.TASK_TYPE_OUT_CHECK); + return R.ok("浠诲姟鐢熸垚鎴愬姛").add(locItemService.generateTask(map)); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java index 5c172a4..67dc974 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/TaskController.java @@ -6,6 +6,7 @@ import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; +import com.vincent.rsf.server.common.constant.Constants; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.server.common.utils.ExcelUtil; @@ -158,7 +159,7 @@ throw new CoolException("鑳芥暟涓嶈兘涓虹┖锛侊紒"); } try { - return R.ok(taskService.pickOrCheckTask(id, "pick")); + return R.ok("鍑哄簱瀹屾垚").add(taskService.pickOrCheckTask(id, Constants.TASK_TYPE_OUT_PICK)); } catch (Exception e) { throw new CoolException(e.getMessage()); } @@ -177,7 +178,7 @@ throw new CoolException("鑳芥暟涓嶈兘涓虹┖锛侊紒"); } try { - return R.ok(taskService.pickOrCheckTask(id, "check")); + return R.ok(taskService.pickOrCheckTask(id, Constants.TASK_TYPE_OUT_CHECK)); } catch (Exception e) { throw new CoolException(e.getMessage()); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocToTaskParams.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocToTaskParams.java new file mode 100644 index 0000000..bfada9a --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocToTaskParams.java @@ -0,0 +1,32 @@ +package com.vincent.rsf.server.manager.controller.params; + + +import com.vincent.rsf.server.manager.entity.LocItem; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +@ApiModel(value = "LocToTaskParams", description = "搴撳瓨鍑哄簱鍙傛暟") +public class LocToTaskParams { + + @ApiModelProperty("绫诲瀷锛� check:鐩樼偣鍑哄簱锛� outStock: 搴撳瓨鍑哄簱") + private String type; + + @ApiModelProperty("鐩爣绔欑偣") + private String siteNo; + + @ApiModelProperty("搴撲綅鏄庣粏鍒楄〃") + private List<LocItem> items; + + @ApiModelProperty("婧愬簱浣�") + private String orgLoc; + + @ApiModelProperty("鐩爣搴撲綅") + private String tarLoc; + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java new file mode 100644 index 0000000..86e8297 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/excel/DeliveryTemplate.java @@ -0,0 +1,118 @@ +package com.vincent.rsf.server.manager.entity.excel; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelAutoColumnSize; +import com.vincent.rsf.server.manager.entity.excel.annotation.ExcelComment; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.io.Serializable; + +@Data +@ExcelAutoColumnSize +@Accessors(chain = true) +public class DeliveryTemplate implements Serializable { + + private static final long serialVersionUID = 1L; + + @Excel(name = "*DO鍗曞彿") + @ApiModelProperty(value= "*PO鍗曞彿") + @ExcelComment(value = "poCode", example = "PO25413975") + private String poCode; + + @Excel(name = "*琛屽彿") + @ApiModelProperty(value= "*琛屽彿") + @ExcelComment(value = "platItemId", example = "100068541001") + private String platItemId; + + + @Excel(name = "鍗曟嵁绫诲瀷") + @ApiModelProperty(value= "鍗曟嵁绫诲瀷") + @ExcelComment(value = "type", example = "鍏ュ簱鍗�") + private String type; + + @Excel(name = "鍗曟嵁鏉ユ簮") + @ApiModelProperty(value= "鍗曟嵁鏉ユ簮") + @ExcelComment(value = "source", example = "ERP鍚屾") + private String source; + + @Excel(name = "瀹㈠崟鍙�") + @ApiModelProperty(value= "瀹㈠崟鍙�") + @ExcelComment(value = "platOrderCode", example = "2052146822") + private String platOrderCode; + + @Excel(name = "宸ュ崟鍙�") + @ApiModelProperty(value= "宸ュ崟鍙�") + @ExcelComment(value = "platWorkCode", example = "64875413") + private String platWorkCode; + + @Excel(name = "椤圭洰鍙�") + @ApiModelProperty(value= "椤圭洰鍙�") + @ExcelComment(value = "projectCode", example = "65413") + private String projectCode; + + @Excel(name = "涓氬姟绫诲瀷") + @ApiModelProperty(value= "涓氬姟绫诲瀷") + @ExcelComment(value = "wkType", example = "閲囪喘鍏ュ簱鍗�") + private String wkType; + + @Excel(name = "椤圭洰鍚嶇О") + @ApiModelProperty(value= "椤圭洰鍚嶇О") + @ExcelComment(value = "project", example = "浜笢鐢靛晢绔嬪簱") + private String project; + + /** + * 鐗╂枡缂栫爜 + */ + @Excel(name = "*鐗╂枡缂栫爜") + @ApiModelProperty(value= "*鐗╂枡缂栫爜") + @ExcelComment(value = "matnrCode", example = "101000000002") + private String matnrCode; + + /** + * + */ + @Excel(name = "鐗╂枡鍚嶇О") + @ApiModelProperty(value= "鐗╂枡鍚嶇О") + @ExcelComment(value = "matnrName", example = "TC-03128瀵歌繛浣撳唴涓婃墭") + private String matnrName; + + + /** + * 鏁伴噺 + */ + @Excel(name = "鏁伴噺") + @ApiModelProperty(value= "鏁伴噺") + @ExcelComment(value = "anfme", example = "75") + private Double anfme; + + /** + * 渚涘簲鍟嗙紪鐮� + */ + @Excel(name = "*渚涘簲鍟嗙紪鐮�") + @ApiModelProperty(value= "*渚涘簲鍟嗙紪鐮�") + @ExcelComment(value = "splrCode", example = "685947") + private String splrCode; + + /** + * 渚涘簲鍟嗘壒娆� + */ + @Excel(name = "渚涘簲鍟嗘壒娆�") + @ApiModelProperty(value= "渚涘簲鍟嗘壒娆�") + @ExcelComment(value = "splrBatch", example = "20250401") + private String splrBatch; + + + @Excel(name = "棰勮閫佽揪鏃堕棿") + @ApiModelProperty("棰勮閫佽揪鏃堕棿") + @ExcelComment(value = "arrTime", example = "2025-05-21") + private String arrTime; + + + @Excel(name = "澶囨敞") + @ApiModelProperty("澶囨敞") + @ExcelComment(value = "memo", example = "娉細鏄撶鍝侊紝杞绘嬁鏀�") + private String memo; + +} diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java index 75ddce8..4445a74 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java @@ -58,7 +58,6 @@ * @time 2025/4/2 12:37 */ @Scheduled(cron = "0/3 * * * * ?") -// @Transactional(rollbackFor = Exception.class) public void completeInStock() throws Exception { List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.COMPLETE_IN.id)); if (tasks.isEmpty()) { @@ -73,8 +72,7 @@ * @description: 瀹屾垚鍑哄簱浠诲姟锛屾洿鏂板簱瀛� * @version 1.0 */ - @Scheduled(cron = "0/30 * * * * ? ") - @Transactional(rollbackFor = Exception.class) + @Scheduled(cron = "0/5 * * * * ? ") public void complateOutStock() throws Exception { List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskStatus, TaskStsType.COMPLETE_OUT.id)); if (tasks.isEmpty()) { @@ -90,7 +88,7 @@ * @description 宸插畬鎴愪换鍔″姞鍏ュ巻鍙叉。 * @time 2025/4/3 12:54 */ - @Scheduled(cron = "0 0/05 * * * ? ") + @Scheduled(cron = "0 0/01 * * * ? ") @Transactional(rollbackFor = Exception.class) public void taskLogUpdate() { LambdaQueryWrapper<Task> queryWrapper = new LambdaQueryWrapper<Task>(); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java index 1aaf06c..ff4c683 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java @@ -2,14 +2,16 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.server.manager.controller.params.LocToTaskParams; import com.vincent.rsf.server.manager.entity.LocItem; +import com.vincent.rsf.server.manager.entity.Task; import java.util.Map; public interface LocItemService extends IService<LocItem> { - R generateTask(Map<String, Object> map); + R generateTask(LocToTaskParams map); - R genMoveTask(Map<String, Object> map); + Task genMoveTask(LocToTaskParams map); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java index fa79c4c..cac3725 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java @@ -10,6 +10,8 @@ import com.vincent.rsf.server.api.service.WcsService; import com.vincent.rsf.server.api.utils.LocUtils; import com.vincent.rsf.server.api.utils.SlaveProperties; +import com.vincent.rsf.server.common.constant.Constants; +import com.vincent.rsf.server.manager.controller.params.LocToTaskParams; import com.vincent.rsf.server.manager.entity.*; import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.server.manager.enums.LocType; @@ -58,22 +60,16 @@ @Override @Synchronized @Transactional(rollbackFor = Exception.class) - public R generateTask(Map<String, Object> map) { - String type; - if (!Objects.isNull(map.get("type")) && StringUtils.isNotBlank(map.get("type").toString())) { - type = map.get("type").toString(); - } else { - type = "stock"; - } - if (Objects.isNull(map.get("siteNo"))) { + public R generateTask(LocToTaskParams map) { + if (Objects.isNull(map.getSiteNo())) { throw new CoolException("绔欑偣涓嶈兘涓虹┖锛�"); } - if (Objects.isNull(map.get("items"))) { + if (Objects.isNull(map.getItems()) || map.getItems().isEmpty()) { throw new CoolException("鏄庣粏涓嶈兘涓虹┖锛�"); } - String siteNo = map.get("siteNo").toString(); - List<LocItem> items = JSONArray.parseArray(JSONArray.toJSONString(map.get("items")), LocItem.class); + String siteNo = map.getSiteNo(); + List<LocItem> items = map.getItems(); Map<Long, List<LocItem>> listMap = items.stream().collect(Collectors.groupingBy(LocItem::getLocId)); listMap.keySet().forEach(key -> { Task task = new Task(); @@ -87,13 +83,25 @@ throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐ワ紒锛�"); } + Task moveTask = new Task(); if (!LocUtils.isShallowLoc(slaveProperties, loc.getCode())) { - //TODO 鍒ゆ柇鏄惁娣卞簱浣嶏紝濡傛灉涓烘繁搴撲綅锛岄渶鐢熸垚绉诲簱浠诲姟 + //鑾峰彇娣卞簱浣嶅搴旀祬搴撲綅 + String shallowLoc = LocUtils.getShallowLoc(slaveProperties, loc.getCode()); + Loc one = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc)); + if (Objects.isNull(one)) { + throw new CoolException("瀵瑰簲搴撲綅涓嶅瓨鍦紒锛�"); + } + map.setOrgLoc(one.getCode()); + //浼樺厛鐢熸垚绉诲簱浠诲姟 + if (!one.getUseStatus().equals(LocStsType.LOC_STS_TYPE_O.type)) { + moveTask = genMoveTask(map); + } } String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null); task.setOrgLoc(loc.getCode()) .setTaskCode(ruleCode) + .setParentId(moveTask.getId()) .setTargSite(siteNo) .setTaskStatus(TaskStsType.GENERATE_OUT.id) .setBarcode(loc.getBarcode()); @@ -113,7 +121,7 @@ throw new CoolException("鎵樼洏浠诲姟鎵ц涓紝涓嶈兘閲嶅鍒涘缓锛�"); } - if (type.equals("stock")) { + if (map.getType().equals(Constants.TASK_TYPE_OUT_STOCK)) { Double useQty = Math.round((outQty + workQty) * 10000) / 10000.0; if (orgQty.compareTo(useQty) > 0) { //鎷f枡鍑哄簱 @@ -136,7 +144,7 @@ throw new CoolException("绔欑偣涓嶆敮鎸佸叏鏉垮嚭搴擄紒锛�"); } } - } else if (type.equals("check")) { + } else if (map.getType().equals(Constants.TASK_TYPE_OUT_CHECK)) { //鐩樼偣鍑哄簱 task.setTaskType(TaskType.TASK_TYPE_CHECK_OUT.type); DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>() @@ -144,7 +152,7 @@ .eq(DeviceSite::getSite, siteNo) .eq(DeviceSite::getType, TaskType.TASK_TYPE_CHECK_OUT.type)); if (Objects.isNull(deviceSite)) { - throw new CoolException("绔欑偣涓嶆敮鎸佺洏鐐瑰嚭搴擄紒锛�"); + throw new CoolException("褰撳墠绔欑偣涓嶆敮鎸佺洏鐐瑰嚭搴擄紒锛�"); } } @@ -199,14 +207,20 @@ */ @Override @Transactional(rollbackFor = Exception.class) - public R genMoveTask(Map<String, Object> map) { - if (Objects.isNull(map.get("orgLoc")) || StringUtils.isBlank(map.get("orgLoc").toString())) { + public Task genMoveTask(LocToTaskParams map) { + if (Objects.isNull(map.getOrgLoc()) || StringUtils.isBlank(map.getOrgLoc())) { throw new CoolException("婧愬簱浣嶄笉鑳戒负绌猴紒"); } - Loc orgLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, map.get("orgLoc"))); + Loc orgLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, map.getOrgLoc())); if (Objects.isNull(orgLoc)) { throw new CoolException("婧愬簱浣嶄笉瀛樺湪锛侊紒"); + } + + if (orgLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_R.type) + || orgLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_S.type) + || orgLoc.getUseStatus().equals(LocStsType.LOC_STS_TYPE_X.type ) ) { + throw new CoolException("婧愬簱浣嶆湁浠诲姟姝e湪鎵ц涓�..."); } orgLoc.setUseStatus(LocStsType.LOC_STS_TYPE_R.type); @@ -216,7 +230,7 @@ } Loc targetLoc = new Loc(); - if (Objects.isNull(map.get("tarLoc")) || StringUtils.isBlank(map.get("tarLoc").toString())) { + if (Objects.isNull(map.getTarLoc()) || StringUtils.isBlank(map.getTarLoc())) { //鐩爣搴撲綅涓虹┖锛岃嚜鍔ㄨ幏鍙栨柊搴撲綅 DeviceSite deviceSite = deviceSiteService.getOne(new LambdaQueryWrapper<DeviceSite>() .eq(DeviceSite::getType, TaskType.TASK_TYPE_LOC_MOVE.type) @@ -237,7 +251,7 @@ } targetLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, locNo.getLocNo())); } else { - targetLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, map.get("tarLoc").toString())); + targetLoc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, map.getTarLoc())); } if (Objects.isNull(targetLoc)) { @@ -264,26 +278,22 @@ } List<LocItem> locItems = locItemService.list(new LambdaQueryWrapper<LocItem>().eq(LocItem::getLocId, orgLoc.getId())); - if (locItems.isEmpty()) { - throw new CoolException("搴撲綅鏄庣粏涓嶅瓨鍦紒锛�"); + if (!locItems.isEmpty()) { + List<TaskItem> taskItems = new ArrayList<>(); + for (LocItem item : locItems) { + TaskItem taskItem = new TaskItem(); + BeanUtils.copyProperties(item, taskItem); + taskItem.setTaskId(task.getId()) + .setAnfme(item.getAnfme()) + .setBatch(item.getBatch()) + .setOrderType(OrderType.ORDER_IN.type) + .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)); + taskItems.add(taskItem); + } + if (!taskItemService.saveBatch(taskItems)) { + throw new CoolException("浠诲姟鏄庣粏鐢熸垚澶辫触锛侊紒"); + } } - - List<TaskItem> taskItems = new ArrayList<>(); - for (LocItem item : locItems) { - TaskItem taskItem = new TaskItem(); - BeanUtils.copyProperties(item, taskItem); - taskItem.setTaskId(task.getId()) - .setAnfme(item.getAnfme()) - .setBatch(item.getBatch()) - .setOrderType(OrderType.ORDER_IN.type) - .setWkType(Short.parseShort(OrderWorkType.ORDER_WORK_TYPE_OTHER_IN.type)); - taskItems.add(taskItem); - } - if (!taskItemService.saveBatch(taskItems)) { - throw new CoolException("浠诲姟鏄庣粏鐢熸垚澶辫触锛侊紒"); - } - - return R.ok(task); + return task; } - } 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 311fcbe..f62c67a 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 @@ -6,6 +6,7 @@ import com.vincent.rsf.server.api.controller.params.TaskInParam; import com.vincent.rsf.server.api.entity.dto.InTaskMsgDto; import com.vincent.rsf.server.api.service.WcsService; +import com.vincent.rsf.server.common.constant.Constants; import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; @@ -167,7 +168,6 @@ throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } /**鑾峰彇缁勬嫋*/ -// List<Long> ids = pakins.stream().map(WaitPakin::getId).collect(Collectors.toList()); List<WaitPakin> waitPakins = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>() .in(WaitPakin::getId, pakins.getId()) .eq(WaitPakin::getIoStatus, Short.parseShort(PakinIOStatus.PAKIN_IO_STATUS_DONE.val))); @@ -645,17 +645,15 @@ throw new CoolException("褰撳墠浠诲姟涓嶅瓨鍦紒锛�"); } Integer type; - if (oType.equals("check")) { + if (oType.equals(Constants.TASK_TYPE_OUT_CHECK)) { //鐩樼偣鍏ュ簱 type = TaskType.TASK_TYPE_CHECK_IN.type; - if (!task.getTaskType().equals(TaskType.TASK_TYPE_CHECK_OUT.type)) { throw new CoolException("闈炵洏鐐瑰嚭搴� 锛屼笉鍙墽琛屾鎿嶄綔锛侊紒"); } } else { //鎷f枡鍏ュ簱 type = TaskType.TASK_TYPE_PICK_IN.type; - if (!task.getTaskType().equals(TaskType.TASK_TYPE_PICK_AGAIN_OUT.type)) { throw new CoolException("闈炴嫞鏂欏嚭搴� 锛屼笉鍙墽琛屾鎿嶄綔锛侊紒"); } @@ -674,11 +672,11 @@ .setBarcode(task.getBarcode()) .setTaskStatus(TaskStsType.GENERATE_IN.id); - //TODO 鏍规嵁鐗╂枡鐨勫簱浣嶇被鍨嬬敓鎴愭柊鐨勫簱浣� TaskInParam param = new TaskInParam(); param.setSourceStaNo(Integer.parseInt(task.getTargSite())) .setIoType(type) .setLocType1(Integer.parseInt(loc.getType())); + //鑾峰彇鏂板簱浣� InTaskMsgDto locInfo = wcsService.getLocNo(param); if (Objects.isNull(locInfo)) { @@ -746,6 +744,13 @@ if (Objects.isNull(task)) { throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒"); } + if (StringUtils.isNotBlank(task.getParentId() + "")) { + Task task1 = taskService.getById(task.getParentId()); + if (!Objects.isNull(task1)) { + throw new CoolException("鐖朵换鍔★細" + task1.getTaskCode() + "鏈墽琛屽畬鎴愶紒"); + } + } + Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc())); if (Objects.isNull(loc)) { throw new CoolException("搴撲綅涓嶅瓨鍦紒锛�"); -- Gitblit v1.9.1