diff --git a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java index ea15bdbe..e361f232 100644 --- a/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java +++ b/mes-module-heli/mes-module-heli-biz/src/main/java/com/chanko/yunxi/mes/module/heli/controller/admin/storage/StorageController.java @@ -1,95 +1,116 @@ -package com.chanko.yunxi.mes.module.heli.controller.admin.storage; - -import org.springframework.web.bind.annotation.*; -import javax.annotation.Resource; -import org.springframework.validation.annotation.Validated; -import org.springframework.security.access.prepost.PreAuthorize; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.Operation; - -import javax.validation.constraints.*; -import javax.validation.*; -import javax.servlet.http.*; -import java.util.*; -import java.io.IOException; - -import com.chanko.yunxi.mes.framework.common.pojo.PageParam; -import com.chanko.yunxi.mes.framework.common.pojo.PageResult; -import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; -import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; -import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; - -import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; - -import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; -import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; - -import com.chanko.yunxi.mes.module.heli.controller.admin.storage.vo.*; -import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; -import com.chanko.yunxi.mes.module.heli.service.storage.StorageService; - -@Tag(name = "管理后台 - 入/出库") -@RestController -@RequestMapping("/heli/storage") -@Validated -public class StorageController { - - @Resource - private StorageService storageService; - - @PostMapping("/create") - @Operation(summary = "创建入/出库") - @PreAuthorize("@ss.hasPermission('heli:storage:create')") - public CommonResult createStorage(@Valid @RequestBody StorageSaveReqVO createReqVO) { - return success(storageService.createStorage(createReqVO)); - } - - @PutMapping("/update") - @Operation(summary = "更新入/出库") - @PreAuthorize("@ss.hasPermission('heli:storage:update')") - public CommonResult updateStorage(@Valid @RequestBody StorageSaveReqVO updateReqVO) { - storageService.updateStorage(updateReqVO); - return success(true); - } - - @DeleteMapping("/delete") - @Operation(summary = "删除入/出库") - @Parameter(name = "id", description = "编号", required = true) - @PreAuthorize("@ss.hasPermission('heli:storage:delete')") - public CommonResult deleteStorage(@RequestParam("id") Long id) { - storageService.deleteStorage(id); - return success(true); - } - - @GetMapping("/get") - @Operation(summary = "获得入/出库") - @Parameter(name = "id", description = "编号", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('heli:storage:query')") - public CommonResult getStorage(@RequestParam("id") Long id) { - StorageDO storage = storageService.getStorage(id); - return success(BeanUtils.toBean(storage, StorageRespVO.class)); - } - - @GetMapping("/page") - @Operation(summary = "获得入/出库分页") - @PreAuthorize("@ss.hasPermission('heli:storage:query')") - public CommonResult> getStoragePage(@Valid StoragePageReqVO pageReqVO) { - PageResult pageResult = storageService.getStoragePage(pageReqVO); - return success(BeanUtils.toBean(pageResult, StorageRespVO.class)); - } - - @GetMapping("/export-excel") - @Operation(summary = "导出入/出库 Excel") - @PreAuthorize("@ss.hasPermission('heli:storage:export')") - @OperateLog(type = EXPORT) - public void exportStorageExcel(@Valid StoragePageReqVO pageReqVO, - HttpServletResponse response) throws IOException { - pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = storageService.getStoragePage(pageReqVO).getList(); - // 导出 Excel - ExcelUtils.write(response, "入/出库.xls", "数据", StorageRespVO.class, - BeanUtils.toBean(list, StorageRespVO.class)); - } - -} \ No newline at end of file +package com.chanko.yunxi.mes.module.heli.controller.admin.storage; + +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.time.LocalDateTime; +import java.util.*; +import java.io.IOException; + +import com.chanko.yunxi.mes.framework.common.pojo.PageParam; +import com.chanko.yunxi.mes.framework.common.pojo.PageResult; +import com.chanko.yunxi.mes.framework.common.pojo.CommonResult; +import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; +import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; + +import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils; + +import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog; +import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*; + +import com.chanko.yunxi.mes.module.heli.controller.admin.storage.vo.*; +import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; +import com.chanko.yunxi.mes.module.heli.service.storage.StorageService; + +@Tag(name = "管理后台 - 入/出库") +@RestController +@RequestMapping("/heli/storage") +@Validated +public class StorageController { + + @Resource + private StorageService storageService; + + @PostMapping("/create") + @Operation(summary = "创建入/出库") + @PreAuthorize("@ss.hasPermission('heli:storage:create')") + public CommonResult createStorage(@Valid @RequestBody StorageSaveReqVO createReqVO) { + return success(storageService.createStorage(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新入/出库") + @PreAuthorize("@ss.hasPermission('heli:storage:update')") + public CommonResult updateStorage(@Valid @RequestBody StorageSaveReqVO updateReqVO) { + storageService.updateStorage(updateReqVO); + return success(true); + } + @PutMapping("/update-status") + @Operation(summary = "更新入/出库") + @PreAuthorize("@ss.hasPermission('heli:storage:update')") + public CommonResult updateStorageStatus(@Valid @RequestBody StorageSaveReqVO updateReqVO) { + StorageDO targetDo = storageService.getStorage(updateReqVO.getId()); + targetDo.setStatus(updateReqVO.getStatus()); + + LocalDateTime currTime = LocalDateTime.now(); + if(updateReqVO.getStatus().equals(2)){ + targetDo.setKeeper(updateReqVO.getKeeper()); + targetDo.setKeeperTime(currTime); + }else{ + targetDo.setCancel(updateReqVO.getCancel()); + targetDo.setCancelTime(currTime); + } + updateReqVO = BeanUtils.toBean(targetDo, StorageSaveReqVO.class); + + storageService.updateStorage(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除入/出库") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('heli:storage:delete')") + public CommonResult deleteStorage(@RequestParam("id") Long id) { + storageService.deleteStorage(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得入/出库") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('heli:storage:query')") + public CommonResult getStorage(@RequestParam("id") Long id) { + StorageDO storage = storageService.getStorage(id); + return success(BeanUtils.toBean(storage, StorageRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得入/出库分页") + @PreAuthorize("@ss.hasPermission('heli:storage:query')") + public CommonResult> getStoragePage(@Valid StoragePageReqVO pageReqVO) { + PageResult pageResult = storageService.getStoragePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, StorageRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出入/出库 Excel") + @PreAuthorize("@ss.hasPermission('heli:storage:export')") + @OperateLog(type = EXPORT) + public void exportStorageExcel(@Valid StoragePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = storageService.getStoragePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "入/出库.xls", "数据", StorageRespVO.class, + BeanUtils.toBean(list, StorageRespVO.class)); + } + +} diff --git a/mes-ui/mes-ui-admin-vue3/src/api/heli/storage/index.ts b/mes-ui/mes-ui-admin-vue3/src/api/heli/storage/index.ts index c8aaf646..995c7c06 100644 --- a/mes-ui/mes-ui-admin-vue3/src/api/heli/storage/index.ts +++ b/mes-ui/mes-ui-admin-vue3/src/api/heli/storage/index.ts @@ -37,6 +37,10 @@ export const createStorage = async (data: StorageVO) => { export const updateStorage = async (data: StorageVO) => { return await request.put({ url: `/heli/storage/update`, data }) } +// 修改入/出库 +export const updateStorageStatus = async (data: StorageVO) => { + return await request.put({ url: `/heli/storage/update-status`, data }) +} // 删除入/出库 export const deleteStorage = async (id: number) => { diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue index f3ea6e14..b4345020 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageForm.vue @@ -272,13 +272,13 @@ - - {{ userList.find((user) => user.id == formData.outbound)?.nickname }} + + {{ userList.find((user) => user.id == formData.cancel)?.nickname }} - - {{ formatDate(formData.outboundTime, 'YYYY-MM-DD HH:mm') }} + + {{ formatDate(formData.cancelTime, 'YYYY-MM-DD HH:mm') }} @@ -304,6 +304,7 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' import * as StorageApi from '@/api/heli/storage' import * as StorageMatApi from '@/api/heli/storagemat' import { getAccessToken, getTenantId } from "@/utils/auth" +import { useUserStore } from '@/store/modules/user' import * as MaterialApi from '@/api/heli/material' import * as WarehouseApi from '@/api/heli/warehouse' @@ -367,7 +368,14 @@ const handleStatus = (async (num) => { formData.value.status = num const dataUpdate = formData.value as unknown as StorageApi.StorageVO - await StorageApi.updateStorage(dataUpdate) + + if(num==2){ + dataUpdate.keeper = useUserStore().getUser.id + }else{ + dataUpdate.cancel = useUserStore().getUser.id + } + + await StorageApi.updateStorageStatus(dataUpdate) message.success(t('common.updateSuccess')) @@ -387,6 +395,7 @@ const handleStatus = (async (num) => { default: break } + reload(); }) const userList = ref([]) // 用户列表 @@ -479,6 +488,7 @@ const submitForm = async () => { // 成功后刷新 reload(); + } finally { formLoading.value = false } diff --git a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue index 10e35b46..684d3d95 100644 --- a/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue +++ b/mes-ui/mes-ui-admin-vue3/src/views/heli/storage/StorageOut.vue @@ -242,25 +242,25 @@ - - {{ userList.find((user) => user.id == formData.keeper)?.nickname }} + + {{ userList.find((user) => user.id == formData.outbound)?.nickname }} - - {{ formatDate(formData.keeperTime, 'YYYY-MM-DD HH:mm') }} + + {{ formatDate(formData.outboundTime, 'YYYY-MM-DD HH:mm') }} - - {{ userList.find((user) => user.id == formData.outbound)?.nickname }} + + {{ userList.find((user) => user.id == formData.cancel)?.nickname }} - - {{ formatDate(formData.outboundTime, 'YYYY-MM-DD HH:mm') }} + + {{ formatDate(formData.cancelTime, 'YYYY-MM-DD HH:mm') }} @@ -286,6 +286,7 @@ import { getIntDictOptions, DICT_TYPE } from '@/utils/dict' import * as StorageApi from '@/api/heli/storage' import * as StorageMatApi from '@/api/heli/storagemat' import { getAccessToken, getTenantId } from "@/utils/auth" +import { useUserStore } from '@/store/modules/user' import * as MaterialApi from '@/api/heli/material' import * as WarehouseApi from '@/api/heli/warehouse' @@ -349,6 +350,13 @@ const handleStatus = (async (num) => { formData.value.status = num const dataUpdate = formData.value as unknown as StorageApi.StorageVO + if(num==2){ + dataUpdate.outbound = useUserStore().getUser.id + dataUpdate.outboundTime = new Date().toLocaleString() + }else{ + dataUpdate.cancel = useUserStore().getUser.id + dataUpdate.cancelTime = new Date().toLocaleString() + } await StorageApi.updateStorage(dataUpdate) message.success(t('common.updateSuccess')) @@ -369,6 +377,7 @@ const handleStatus = (async (num) => { default: break } + reload() }) const userList = ref([]) // 用户列表 @@ -429,6 +438,23 @@ const submitForm = async () => { } catch (e) { return } + + //获取最新库存信息 + const matCurrentData = await StorageMatApi.getStorageMatList() + var hasRestNum = true + formData.value.matItemDOList.forEach( (rest) =>{ + + if(matCurrentData.find((mat)=>{ mat.matId == rest.matId && mat.pnId == rest.pnId && mat.matRest { item.matUnit = matVos.list.find((record) => record.id == item.matId)?.unit item.pnlist = pnList.value.filter((pn) => pn.rgId == item.rgId) item.matRest = matLastData.value.find((rest) => rest.rgId == item.rgId && rest.pnId == item.pnId)?.matRest + item.matRest = item.matRest == undefined?0:item.matRest matCount = matCount + 1