From 87bf60136626bbfeecb6db6a89b0723766f2c668 Mon Sep 17 00:00:00 2001 From: chenhc <2369838784@qq.com> Date: Fri, 27 Sep 2024 21:19:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dev/DeviceAssetContractController.java | 121 ++++++++++++++++++ .../dao/dev/DeviceAssetContractMapper.java | 25 ++++ .../entity/dev/DeviceAssetContractEntity.java | 105 +++++++++++++++ .../req/dev/PostDeviceContractRequest.java | 11 ++ .../api/req/inv/FilterInvContractRequest.java | 99 ++++++++++++++ .../dev/DeviceAssetContractService.java | 34 +++++ .../impl/DeviceAssetContractServiceImpl.java | 54 ++++++++ .../mapper/dev/DeviceAssetContractMapper.xml | 81 ++++++++++++ src/main/resources/schemas/schema_v2.4.sql | 19 +++ 9 files changed, 549 insertions(+) create mode 100644 src/main/java/com/glxp/api/controller/dev/DeviceAssetContractController.java create mode 100644 src/main/java/com/glxp/api/dao/dev/DeviceAssetContractMapper.java create mode 100644 src/main/java/com/glxp/api/entity/dev/DeviceAssetContractEntity.java create mode 100644 src/main/java/com/glxp/api/req/dev/PostDeviceContractRequest.java create mode 100644 src/main/java/com/glxp/api/req/inv/FilterInvContractRequest.java create mode 100644 src/main/java/com/glxp/api/service/dev/DeviceAssetContractService.java create mode 100644 src/main/java/com/glxp/api/service/dev/impl/DeviceAssetContractServiceImpl.java create mode 100644 src/main/resources/mybatis/mapper/dev/DeviceAssetContractMapper.xml diff --git a/src/main/java/com/glxp/api/controller/dev/DeviceAssetContractController.java b/src/main/java/com/glxp/api/controller/dev/DeviceAssetContractController.java new file mode 100644 index 000000000..cb962ad83 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/dev/DeviceAssetContractController.java @@ -0,0 +1,121 @@ +package com.glxp.api.controller.dev; + +import cn.hutool.core.util.IdUtil; +import com.github.pagehelper.PageInfo; +import com.glxp.api.annotation.AuthRuleAnnotation; +import com.glxp.api.annotation.Log; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.BusinessType; +import com.glxp.api.constant.FileConstant; +import com.glxp.api.controller.BaseController; +import com.glxp.api.entity.dev.DeviceAssetContractEntity; +import com.glxp.api.req.dev.PostDeviceContractRequest; +import com.glxp.api.req.inv.FilterInvContractRequest; +import com.glxp.api.req.system.DeleteDeviceFileRequest; +import com.glxp.api.res.PageSimpleResponse; +import com.glxp.api.service.auth.CustomerService; +import com.glxp.api.service.dev.DeviceAssetContractService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.io.File; +import java.time.Instant; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import java.util.List; + +/** + * 设备资质证书,技术材料相关 + */ +@Slf4j +@RestController +public class DeviceAssetContractController extends BaseController { + @Value("${file_path}") + private String filePath; + @Resource + private DeviceAssetContractService deviceAssetContractService; + @Resource + private CustomerService customerService; + + @AuthRuleAnnotation("") + @GetMapping("/inv/device/contract/filter") + public BaseResponse filterDeviceContract(FilterInvContractRequest filterInvContractRequest) { + List deviceAssetContractEntityList + = deviceAssetContractService.filterDeviceContract(filterInvContractRequest); + PageInfo pageInfo; + pageInfo = new PageInfo<>(deviceAssetContractEntityList); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(deviceAssetContractEntityList); + return ResultVOUtils.success(pageSimpleResponse); + } + + @AuthRuleAnnotation("") + @PostMapping("/inv/info/insertDeviceContract") + @Log(title = "资质证书", businessType = BusinessType.INSERT) + public BaseResponse insertDeviceContract(@RequestBody DeviceAssetContractEntity deviceAssetContractEntity) { + String userId = customerService.getUserId()+ ""; + LocalDate now = LocalDate.now(); + deviceAssetContractEntity.setCreateTime(now); + deviceAssetContractEntity.setUpdateTime(now); + deviceAssetContractEntity.setCreateUser(userId); + deviceAssetContractEntity.setUpdateUser(userId); + deviceAssetContractEntity.setStatus(0); + deviceAssetContractEntity.setId(IdUtil.getSnowflakeNextId()); + boolean b = deviceAssetContractService.insertDeviceContract(deviceAssetContractEntity); + return ResultVOUtils.success("成功"); + } + + @AuthRuleAnnotation("") + @PostMapping("/inv/info/deleteDeviceContract") + public BaseResponse deleteDeviceContract(@RequestBody DeleteDeviceFileRequest deleteDeviceFileRequest) { + boolean b = deviceAssetContractService.deleteById(deleteDeviceFileRequest.getId()); + String URL = filePath + FileConstant.COMMON_FILE_PATH + deleteDeviceFileRequest.getFilePath(); + File file = new File(URL); + if (file.exists() && file.isFile()) { + file.delete(); + } + return ResultVOUtils.success("成功"); + } + + @AuthRuleAnnotation("") + @PostMapping("/inv/info/updateDeviceContract") + @Log(title = "资质证书", businessType = BusinessType.UPDATE) + public BaseResponse updateDeviceContract(@RequestBody PostDeviceContractRequest postDeviceContractRequest) { + DeviceAssetContractEntity deviceAssetContractEntity = new DeviceAssetContractEntity(); + BeanUtils.copyProperties(postDeviceContractRequest, deviceAssetContractEntity); + + LocalDateTime localDateTime1 = postDeviceContractRequest.getVailDate().atStartOfDay(); + LocalDateTime localDateTime2= postDeviceContractRequest.getExpireDate().atStartOfDay(); + Instant instant = localDateTime1.toInstant(ZoneOffset.UTC); + Instant instant2 = localDateTime2.toInstant(ZoneOffset.UTC); + long milliseconds = instant.toEpochMilli(); + long milliseconds2 = instant2.toEpochMilli(); + if (postDeviceContractRequest.getVailDate() != null && postDeviceContractRequest.getExpireDate() != null) { + if (milliseconds > milliseconds2) { + return ResultVOUtils.error( "生效期不能小于失效期!"); + } + } + String userId = customerService.getUserId()+ ""; + LocalDate now = LocalDate.now(); + deviceAssetContractEntity.setUpdateTime(now); + deviceAssetContractEntity.setUpdateUser(userId); + boolean b = deviceAssetContractService.updateDeviceContract(deviceAssetContractEntity); + if (b){ + return ResultVOUtils.success("修改成功"); + }else { + return ResultVOUtils.error("修改失败!"); + } + + } + + +} diff --git a/src/main/java/com/glxp/api/dao/dev/DeviceAssetContractMapper.java b/src/main/java/com/glxp/api/dao/dev/DeviceAssetContractMapper.java new file mode 100644 index 000000000..8fa071848 --- /dev/null +++ b/src/main/java/com/glxp/api/dao/dev/DeviceAssetContractMapper.java @@ -0,0 +1,25 @@ +package com.glxp.api.dao.dev; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.glxp.api.entity.dev.DeviceAssetContractEntity; +import com.glxp.api.req.inv.FilterInvContractRequest; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface DeviceAssetContractMapper extends BaseMapper { + + List filterCompanyContract(FilterInvContractRequest filterInvContractRequest); + + boolean deleteById(String id); + + + + boolean updateDeviceContract(DeviceAssetContractEntity deviceAssetContractEntity); + + + + + +} diff --git a/src/main/java/com/glxp/api/entity/dev/DeviceAssetContractEntity.java b/src/main/java/com/glxp/api/entity/dev/DeviceAssetContractEntity.java new file mode 100644 index 000000000..5629d908b --- /dev/null +++ b/src/main/java/com/glxp/api/entity/dev/DeviceAssetContractEntity.java @@ -0,0 +1,105 @@ +package com.glxp.api.entity.dev; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDate; + +@Data +@TableName(value = "device_asset_contract") +public class DeviceAssetContractEntity implements Serializable { + /** + * 注意要用雪花ID + */ + @TableId(value = "id", type = IdType.INPUT) + private Long id; + + /** + * 设备资产编码外键 + */ + @TableField(value = "devCodeFk") + private String devCodeFk; + + /** + * 证书名称 + */ + @TableField(value = "`name`") + private String name; + + /** + * 证书编码 + */ + @TableField(value = "code") + private String code; + + /** + * 文件路径 + */ + @TableField(value = "filePath") + private String filePath; + + /** + * 生效期 + */ + @TableField(value = "vailDate") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate vailDate; + + /** + * 失效期 + */ + @TableField(value = "expireDate") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate expireDate; + + /** + * 证书状态 + */ + @TableField(value = "`status`") + private Integer status; + + /** + * 证书类型(1:资质证书;2:技术材料) + */ + @TableField(value = "`type`") + private Integer type; + + /** + * 备注说明 + */ + @TableField(value = "remark") + private String remark; + + /** + * 创建人 + */ + @TableField(value = "`createUser`") + private String createUser; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate createTime; + + /** + * 更新人 + */ + @TableField(value = "updateUser") + private String updateUser; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate updateTime; + + private static final long serialVersionUID = 1L; +} diff --git a/src/main/java/com/glxp/api/req/dev/PostDeviceContractRequest.java b/src/main/java/com/glxp/api/req/dev/PostDeviceContractRequest.java new file mode 100644 index 000000000..55ec749f0 --- /dev/null +++ b/src/main/java/com/glxp/api/req/dev/PostDeviceContractRequest.java @@ -0,0 +1,11 @@ +package com.glxp.api.req.dev; + +import com.glxp.api.entity.dev.DeviceAssetCertEntity; +import lombok.Data; + +@Data +public class PostDeviceContractRequest extends DeviceAssetCertEntity { + + + private int repeatUpload; +} diff --git a/src/main/java/com/glxp/api/req/inv/FilterInvContractRequest.java b/src/main/java/com/glxp/api/req/inv/FilterInvContractRequest.java new file mode 100644 index 000000000..8d976eecf --- /dev/null +++ b/src/main/java/com/glxp/api/req/inv/FilterInvContractRequest.java @@ -0,0 +1,99 @@ +package com.glxp.api.req.inv; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.glxp.api.util.page.ListPageRequest; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 查询部门设备明细接口参数 + */ +@Data +public class FilterInvContractRequest extends ListPageRequest { + /** + * + */ + @TableId(value = "id") + private Long id; + + /** + * 设备资产编码外键 + */ + @TableField(value = "devCodeFk") + private String devCodeFk; + + /** + * 证书名称 + */ + @TableField(value = "name") + private String name; + + /** + * 证书编码 + */ + @TableField(value = "code") + private String code; + + /** + * 文件路径 + */ + @TableField(value = "filePath") + private String filePath; + + /** + * 生效期 + */ + @TableField(value = "vailDate") + private LocalDateTime vailDate; + + /** + * 失效期 + */ + @TableField(value = "expireDate") + private LocalDateTime expireDate; + + /** + * 证书状态 + */ + @TableField(value = "status") + private Integer status; + + /** + * 证书类型(1:资质证书;2:技术材料) + */ + @TableField(value = "type") + private Integer type; + + /** + * 备注说明 + */ + @TableField(value = "remark") + private String remark; + + /** + * 创建人 + */ + @TableField(value = "createUser") + private String createUser; + + /** + * 创建时间 + */ + @TableField(value = "createTime") + private LocalDateTime createTime; + + /** + * 更新人 + */ + @TableField(value = "updateUser") + private String updateUser; + + /** + * 更新时间 + */ + @TableField(value = "updateTime") + private LocalDateTime updateTime; + +} diff --git a/src/main/java/com/glxp/api/service/dev/DeviceAssetContractService.java b/src/main/java/com/glxp/api/service/dev/DeviceAssetContractService.java new file mode 100644 index 000000000..73f0a0597 --- /dev/null +++ b/src/main/java/com/glxp/api/service/dev/DeviceAssetContractService.java @@ -0,0 +1,34 @@ +package com.glxp.api.service.dev; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.glxp.api.entity.dev.DeviceAssetContractEntity; +import com.glxp.api.req.inv.FilterInvContractRequest; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public interface DeviceAssetContractService extends IService { + List filterDeviceContract(FilterInvContractRequest filterInvContractRequest); + + boolean insertDeviceContract(DeviceAssetContractEntity deviceAssetCertEntity); + + boolean deleteById(String id); + + boolean updateDeviceContract(DeviceAssetContractEntity deviceAssetContractEntity); + + + + + + + + + + + + + + + +} diff --git a/src/main/java/com/glxp/api/service/dev/impl/DeviceAssetContractServiceImpl.java b/src/main/java/com/glxp/api/service/dev/impl/DeviceAssetContractServiceImpl.java new file mode 100644 index 000000000..ed5616c19 --- /dev/null +++ b/src/main/java/com/glxp/api/service/dev/impl/DeviceAssetContractServiceImpl.java @@ -0,0 +1,54 @@ +package com.glxp.api.service.dev.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import com.glxp.api.dao.dev.DeviceAssetContractMapper; +import com.glxp.api.entity.dev.DeviceAssetContractEntity; +import com.glxp.api.req.inv.FilterInvContractRequest; +import com.glxp.api.service.dev.DeviceAssetContractService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Collections; +import java.util.List; + +@Slf4j +@Service +@Transactional(rollbackFor = Exception.class) +public class DeviceAssetContractServiceImpl extends ServiceImpl implements DeviceAssetContractService { + @Resource + DeviceAssetContractMapper deviceAssetContractMapper; + + + @Override + public List filterDeviceContract(FilterInvContractRequest filterInvContractRequest) { + if (filterInvContractRequest == null) { + return Collections.emptyList(); + } + if (filterInvContractRequest.getPage() != null) { + int offset = (filterInvContractRequest.getPage() - 1) * filterInvContractRequest.getLimit(); + PageHelper.offsetPage(offset, filterInvContractRequest.getLimit()); + } + return deviceAssetContractMapper.filterCompanyContract(filterInvContractRequest); + } + @Override + public boolean insertDeviceContract(DeviceAssetContractEntity deviceAssetContractEntity) { + return deviceAssetContractMapper.insert(deviceAssetContractEntity) > 0 ? true : false; + } + + @Override + public boolean deleteById(String id) { + return deviceAssetContractMapper.deleteById(id); + } + + @Override + public boolean updateDeviceContract(DeviceAssetContractEntity deviceAssetContractEntity) { + return deviceAssetContractMapper.updateDeviceContract(deviceAssetContractEntity); + } + + + +} diff --git a/src/main/resources/mybatis/mapper/dev/DeviceAssetContractMapper.xml b/src/main/resources/mybatis/mapper/dev/DeviceAssetContractMapper.xml new file mode 100644 index 000000000..7eff7d6c9 --- /dev/null +++ b/src/main/resources/mybatis/mapper/dev/DeviceAssetContractMapper.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + id, devCodeFk, `name`, code, filePath, vailDate, expireDate, `status`, `type`, remark, + `createUser`, createTime, updateUser, updateTime + + + + + + DELETE + FROM device_asset_contract + WHERE id = #{id} + + + + UPDATE device_asset_contract + + name=#{name}, + devCodeFk=#{devCodeFk}, + filePath=#{filePath}, + remark=#{remark}, + vailDate=#{vailDate}, + expireDate=#{expireDate}, + `type`=#{type}, + `code`=#{code}, + `status`=#{status}, + `updateUser`=#{updateUser}, + `updateTime`=#{updateTime}, + + + WHERE id = #{id} + + + + + diff --git a/src/main/resources/schemas/schema_v2.4.sql b/src/main/resources/schemas/schema_v2.4.sql index d58bd0d91..6da7897c1 100644 --- a/src/main/resources/schemas/schema_v2.4.sql +++ b/src/main/resources/schemas/schema_v2.4.sql @@ -3892,3 +3892,22 @@ CREATE TABLE IF NOT EXISTS `sys_msg_todo` ( `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; + + +CREATE TABLE IF NOT EXISTS `device_asset_contract` ( + `id` bigint NOT NULL, + `devCodeFk` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '设备资产编码外键', + `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '证书名称', + `code` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '证书编码', + `filePath` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '文件路径', + `vailDate` datetime DEFAULT NULL COMMENT '生效期', + `expireDate` datetime DEFAULT NULL COMMENT '失效期', + `status` tinyint DEFAULT NULL COMMENT '证书状态', + `type` tinyint DEFAULT NULL COMMENT '证书类型(1:资质证书;2:技术材料)', + `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注说明', + `createUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '创建人', + `createTime` datetime DEFAULT NULL COMMENT '创建时间', + `updateUser` varchar(255) DEFAULT NULL COMMENT '更新人', + `updateTime` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC; \ No newline at end of file