Sfoglia il codice sorgente

物资检查计划业务逻辑

车车 10 mesi fa
parent
commit
a7e9bc0cc8

+ 6 - 10
ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMaterialsCheckPlanController.java

@@ -1,7 +1,5 @@
 package com.ktg.iscs.controller;
 
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ktg.common.annotation.Log;
@@ -10,6 +8,7 @@ import com.ktg.common.enums.BusinessType;
 import com.ktg.common.pojo.CommonResult;
 import com.ktg.common.utils.poi.ExcelUtil;
 import com.ktg.iscs.domain.IsMaterialsCheckPlan;
+import com.ktg.iscs.domain.dto.checkPlan.AddCheckPlanDTO;
 import com.ktg.iscs.service.IIsMaterialsCheckPlanService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -20,7 +19,6 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -79,18 +77,18 @@ public class IsMaterialsCheckPlanController extends BaseController
     @PreAuthorize("@ss.hasPermi('iscs:plan:add')")
     @Log(title = "物资检查计划", businessType = BusinessType.INSERT)
     @PostMapping("/insertIsMaterialsCheckPlan")
-    public CommonResult<Boolean> insertIsMaterialsCheckPlan(@RequestBody @Parameter(name = "isMaterialsCheckPlan", description = "新增数据类,放到body") IsMaterialsCheckPlan isMaterialsCheckPlan)
+    public CommonResult<Boolean> insertIsMaterialsCheckPlan(@RequestBody @Parameter(name = "dto", description = "新增数据类,放到body") AddCheckPlanDTO dto)
     {
-        return CommonResult.success(isMaterialsCheckPlanService.save(isMaterialsCheckPlan));
+        return CommonResult.success(isMaterialsCheckPlanService.insertIsMaterialsCheckPlan(dto));
     }
 
     @ApiOperation("修改物资检查计划")
     @PreAuthorize("@ss.hasPermi('iscs:plan:edit')")
     @Log(title = "物资检查计划", businessType = BusinessType.UPDATE)
     @PostMapping("/updateIsMaterialsCheckPlan")
-    public CommonResult<Boolean> updateIsMaterialsCheckPlan(@RequestBody @Parameter(name = "isMaterialsCheckPlan", description = "修改数据类,放到body") IsMaterialsCheckPlan isMaterialsCheckPlan)
+    public CommonResult<Boolean> updateIsMaterialsCheckPlan(@RequestBody @Parameter(name = "dto", description = "修改数据类,放到body") AddCheckPlanDTO dto)
     {
-        return CommonResult.success(isMaterialsCheckPlanService.updateById(isMaterialsCheckPlan));
+        return CommonResult.success(isMaterialsCheckPlanService.updateIsMaterialsCheckPlan(dto));
     }
 
     @ApiOperation("删除物资检查计划")
@@ -99,8 +97,6 @@ public class IsMaterialsCheckPlanController extends BaseController
 	@PostMapping("/deleteIsMaterialsCheckPlanByPlanIds")
     public CommonResult<Boolean> deleteIsMaterialsCheckPlanByPlanIds(String planIds)
     {
-        Assert.notBlank(planIds, "请选择需要删除的数据!");
-        Long[] longIds = Convert.toLongArray(planIds);
-        return CommonResult.success(isMaterialsCheckPlanService.removeBatchByIds(Arrays.asList(longIds)));
+        return CommonResult.success(isMaterialsCheckPlanService.deleteIsMaterialsCheckPlanByPlanIds(planIds));
     }
 }

+ 42 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/checkPlan/AddCheckPlanDTO.java

@@ -0,0 +1,42 @@
+package com.ktg.iscs.domain.dto.checkPlan;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 物资检查计划对象 is_materials_check_plan
+ *
+ * @author cgj
+ * @date 2025-01-14
+ */
+@EqualsAndHashCode(callSuper = false)
+@Data
+public class AddCheckPlanDTO
+{
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "物资计划id")
+    private Long planId;
+
+    @ApiModelProperty(value = "计划名称")
+    private String planName;
+
+    @ApiModelProperty(value = "所属岗位ID")
+    private Long workstationId;
+
+    @ApiModelProperty(value = "计划日期")
+    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd")
+    private Date planDate;
+
+    @ApiModelProperty(value = "检察员")
+    private Long checkUserId;
+
+    @ApiModelProperty(value = "物资柜ID")
+    private List<Long> cabinetIds;
+
+}

+ 1 - 1
ktg-iscs/src/main/java/com/ktg/iscs/domain/enums/JobStepEnum.java

@@ -13,7 +13,7 @@ public class JobStepEnum {
     public JobStepEnum() {
         steps = new ArrayList<>();
         steps.add("识别所要完成的工作内容");
-        steps.add("判断工作所涉及的能量源及隔离方式");
+        steps.add("判断工作所涉及的能量源及隔离方式");
         steps.add("通知所有受影响的人");
         steps.add("如果设备正在运行,按正常操作停机");
         steps.add("上锁并挂牌");

+ 7 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsCheckPlanService.java

@@ -3,6 +3,7 @@ package com.ktg.iscs.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ktg.iscs.domain.IsMaterialsCheckPlan;
+import com.ktg.iscs.domain.dto.checkPlan.AddCheckPlanDTO;
 
 /**
  * 物资检查计划Service接口
@@ -14,4 +15,10 @@ public interface IIsMaterialsCheckPlanService extends IService<IsMaterialsCheckP
 
     Page<IsMaterialsCheckPlan> getIsMaterialsCheckPlanPage(Page<IsMaterialsCheckPlan> page, IsMaterialsCheckPlan isMaterialsCheckPlan);
 
+    Boolean insertIsMaterialsCheckPlan(AddCheckPlanDTO dto);
+
+    Boolean updateIsMaterialsCheckPlan(AddCheckPlanDTO dto);
+
+    Boolean deleteIsMaterialsCheckPlanByPlanIds(String planIds);
+
 }

+ 77 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsCheckPlanServiceImpl.java

@@ -1,13 +1,24 @@
 package com.ktg.iscs.service.impl;
 
+import cn.hutool.core.convert.Convert;
+import cn.hutool.core.lang.Assert;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ktg.common.utils.bean.BeanUtils;
 import com.ktg.iscs.domain.IsMaterialsCheckPlan;
+import com.ktg.iscs.domain.IsMaterialsPlanCabinet;
+import com.ktg.iscs.domain.dto.checkPlan.AddCheckPlanDTO;
 import com.ktg.iscs.mapper.IsMaterialsCheckPlanMapper;
 import com.ktg.iscs.service.IIsMaterialsCheckPlanService;
+import com.ktg.iscs.service.IIsMaterialsPlanCabinetService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 /**
  * 物资检查计划Service业务层处理
@@ -20,6 +31,8 @@ public class IsMaterialsCheckPlanServiceImpl extends ServiceImpl<IsMaterialsChec
 
     @Autowired
     private IsMaterialsCheckPlanMapper isMaterialsCheckPlanMapper;
+    @Autowired
+    private IIsMaterialsPlanCabinetService iIsMaterialsPlanCabinetService;
 
     @Override
     public Page<IsMaterialsCheckPlan> getIsMaterialsCheckPlanPage(Page<IsMaterialsCheckPlan> page, IsMaterialsCheckPlan isMaterialsCheckPlan) {
@@ -28,4 +41,68 @@ public class IsMaterialsCheckPlanServiceImpl extends ServiceImpl<IsMaterialsChec
         return result;
     }
 
+    @Transactional
+    @Override
+    public Boolean insertIsMaterialsCheckPlan(AddCheckPlanDTO dto) {
+        // 1.断言检测
+        Assert.notNull(dto.getPlanDate(), "检查日期不可为空!");
+        Assert.notNull(dto.getCheckUserId(), "检查员不可为空!");
+        Assert.isFalse(dto.getCabinetIds().isEmpty(), "请选择需要检查的柜子!");
+        // 2.开始新增计划
+        IsMaterialsCheckPlan materialsCheckPlan = BeanUtils.toBean(dto, IsMaterialsCheckPlan.class);
+        save(materialsCheckPlan);
+        // 3.开始新增计划和物资柜的关联关系
+        List<IsMaterialsPlanCabinet> isMaterialsPlanCabinets = new ArrayList<>();
+        for (Long cabinetId : dto.getCabinetIds()) {
+            IsMaterialsPlanCabinet isMaterialsPlanCabinet = new IsMaterialsPlanCabinet();
+            isMaterialsPlanCabinet.setPlanId(materialsCheckPlan.getPlanId());
+            isMaterialsPlanCabinet.setCabinetId(cabinetId);
+            isMaterialsPlanCabinets.add(isMaterialsPlanCabinet);
+        }
+        iIsMaterialsPlanCabinetService.saveBatch(isMaterialsPlanCabinets);
+        // 4.开始计算倒计时,给检查员发送邮件
+        
+        return true;
+    }
+
+    @Override
+    public Boolean updateIsMaterialsCheckPlan(AddCheckPlanDTO dto) {
+        // 1.断言检测
+        Assert.notNull(dto.getPlanId(), "主键ID不可为空!");
+        Assert.notNull(dto.getPlanDate(), "检查日期不可为空!");
+        Assert.notNull(dto.getCheckUserId(), "检查员不可为空!");
+        Assert.isFalse(dto.getCabinetIds().isEmpty(), "请选择需要检查的柜子!");
+        // 2.开始新增计划
+        IsMaterialsCheckPlan materialsCheckPlan = BeanUtils.toBean(dto, IsMaterialsCheckPlan.class);
+        updateById(materialsCheckPlan);
+        // 3.开始新增计划和物资柜的关联关系
+        // 3.1先删除,再新增
+        iIsMaterialsPlanCabinetService.remove(Wrappers.<IsMaterialsPlanCabinet>lambdaQuery()
+                .eq(IsMaterialsPlanCabinet::getPlanId, dto.getPlanId()));
+        List<IsMaterialsPlanCabinet> isMaterialsPlanCabinets = new ArrayList<>();
+        for (Long cabinetId : dto.getCabinetIds()) {
+            IsMaterialsPlanCabinet isMaterialsPlanCabinet = new IsMaterialsPlanCabinet();
+            isMaterialsPlanCabinet.setPlanId(materialsCheckPlan.getPlanId());
+            isMaterialsPlanCabinet.setCabinetId(cabinetId);
+            isMaterialsPlanCabinets.add(isMaterialsPlanCabinet);
+        }
+        iIsMaterialsPlanCabinetService.saveBatch(isMaterialsPlanCabinets);
+        // 4.开始计算倒计时给检查员发送邮件
+
+        return true;
+    }
+
+    @Transactional
+    @Override
+    public Boolean deleteIsMaterialsCheckPlanByPlanIds(String planIds) {
+        Assert.notBlank(planIds, "请选择需要删除的数据!");
+        Long[] longIds = Convert.toLongArray(planIds);
+        removeBatchByIds(Arrays.asList(longIds));
+        // 开始删除关联的数据
+        iIsMaterialsPlanCabinetService.remove(Wrappers.<IsMaterialsPlanCabinet>lambdaQuery()
+                .in(IsMaterialsPlanCabinet::getPlanId, longIds));
+        return true;
+    }
+
+
 }