diff --git a/psdc-admin/src/main/resources/application.yml b/psdc-admin/src/main/resources/application.yml index 90385b2..caf4dfc 100644 --- a/psdc-admin/src/main/resources/application.yml +++ b/psdc-admin/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: prod \ No newline at end of file + active: dev \ No newline at end of file diff --git a/psdc-business/lib/dntd-common-1.0-SNAPSHOT.jar b/psdc-business/lib/dntd-common-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..8e7fa26 Binary files /dev/null and b/psdc-business/lib/dntd-common-1.0-SNAPSHOT.jar differ diff --git a/psdc-business/lib/dntd-model-buildheating-1.0-SNAPSHOT.jar b/psdc-business/lib/dntd-model-buildheating-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..756fecd Binary files /dev/null and b/psdc-business/lib/dntd-model-buildheating-1.0-SNAPSHOT.jar differ diff --git a/psdc-business/lib/dntd-model-heatboiler-1.0-SNAPSHOT.jar b/psdc-business/lib/dntd-model-heatboiler-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..d8f0809 Binary files /dev/null and b/psdc-business/lib/dntd-model-heatboiler-1.0-SNAPSHOT.jar differ diff --git a/psdc-business/lib/dntd-modelI-1.0-SNAPSHOT.jar b/psdc-business/lib/dntd-modelI-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..ed88bd3 Binary files /dev/null and b/psdc-business/lib/dntd-modelI-1.0-SNAPSHOT.jar differ diff --git a/psdc-business/lib/dntd-tool-1.0-SNAPSHOT.jar b/psdc-business/lib/dntd-tool-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..d87b833 Binary files /dev/null and b/psdc-business/lib/dntd-tool-1.0-SNAPSHOT.jar differ diff --git a/psdc-business/pom.xml b/psdc-business/pom.xml index 5458ecb..fa58529 100644 --- a/psdc-business/pom.xml +++ b/psdc-business/pom.xml @@ -28,12 +28,49 @@ psdc-framework 0.0.1 + + + cn.hutool + hutool-all + 5.4.5 + + com.psdc psdc-quartz 0.0.1 + + com.dky + dntd-common + 1.0.0 + + + + com.dky + dntd-modelI + 1.0.0 + + + + com.dky + dntd-model-heatboiler + 1.0.0 + + + + com.dky + dntd-model-buildheating + 1.0.0 + + + + com.dky + dntd-tool + 1.0.0 + + org.bouncycastle bcprov-jdk15on @@ -71,5 +108,15 @@ - + + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + \ No newline at end of file diff --git a/psdc-business/src/main/java/com/psdc/entity/SecretKey.java b/psdc-business/src/main/java/com/psdc/entity/SecretKey.java index 6c05c9a..3ffd079 100644 --- a/psdc-business/src/main/java/com/psdc/entity/SecretKey.java +++ b/psdc-business/src/main/java/com/psdc/entity/SecretKey.java @@ -21,6 +21,10 @@ public class SecretKey { private Integer id ; /** 密钥 */ private String keyValue ; + /** 密钥cpu_ids */ + private String cpuIds ; + /** 授权单位 */ + private String keyUnit ; /** 有效期至 */ private String exportDate ; /** 创建时间 */ diff --git a/psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java b/psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java index 2906332..d6c4669 100644 --- a/psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java +++ b/psdc-business/src/main/java/com/psdc/mapper/SecretKeyMapper.java @@ -1,9 +1,12 @@ package com.psdc.mapper; +import com.psdc.entity.PrivateKey; import com.psdc.entity.SecretKey; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * @author 小镇做题家 @@ -27,6 +30,22 @@ public interface SecretKeyMapper { Integer update(@Param(value = "newKey") String s1, @Param(value = "oldKey") String s2); + Integer updateById(SecretKey secretKey); + SecretKey selOneByKey(@Param(value = "key") String s); + + SecretKey selOneById(@Param(value = "id") Integer id); + + Integer deleteById(@Param(value = "id") Integer id); + + List queryAllByLimit(@Param(value = "keyUnit") String keyUnit, + @Param(value = "endDateTime") String endDateTime, + @Param(value = "startDateTime") String startDateTime, + @Param(value = "pageCurrent") Integer pageCurrent, + @Param(value = "pageSize") Integer pageSize); + + Long selectCount(@Param(value = "keyUnit") String keyUnit, + @Param(value = "endDateTime") String endDateTime, + @Param(value = "startDateTime") String startDateTime); } diff --git a/psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java b/psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java index 0687e21..bebec9e 100644 --- a/psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java +++ b/psdc-business/src/main/java/com/psdc/service/ISecretKeyService.java @@ -1,5 +1,6 @@ package com.psdc.service; +import com.psdc.core.domain.AjaxResult; import com.psdc.entity.SecretKey; /** @@ -14,6 +15,14 @@ public interface ISecretKeyService { SecretKey selOne(String key, String date); + SecretKey selOneById(Integer id); + + Integer deleteById(Integer id); + + Integer updateById(SecretKey secretKey); + + AjaxResult queryAllByLimit(String keyUnit, String startDateTime, String endDateTime, Integer pageCurrent, Integer pageSize); + Integer insert(SecretKey secretKey); Integer update(String s1, String s2); diff --git a/psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java b/psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java index 60e3c7e..132fad4 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/GenerateKeyIml.java @@ -35,12 +35,11 @@ public class GenerateKeyIml implements IGenerateKey { @Override public String generateKey(Map map, String sm4) { String key; - SM4Util sm4Util = new SM4Util(); try { - // 解密 - String decryptBySM4ECB = sm4Util.decryptBySM4ECB(sm4, SM4_KEY); + // 解密 SM4Util sm4Util = new SM4Util(); + // String decryptBySM4ECB = sm4Util.decryptBySM4ECB(sm4, SM4_KEY); Cipher cipher = Cipher.getInstance(ALGORITHM, "BC"); - SecretKeySpec secretKey = new SecretKeySpec(decryptBySM4ECB.getBytes(StandardCharsets.UTF_8), "AES"); + SecretKeySpec secretKey = new SecretKeySpec(sm4.getBytes(StandardCharsets.UTF_8), "AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encrypted = cipher.doFinal(mapToString(map).getBytes(StandardCharsets.UTF_8)); key = Base64.getEncoder().encodeToString(encrypted); @@ -51,6 +50,15 @@ public class GenerateKeyIml implements IGenerateKey { return key; } + public static String encrypt(Map map) throws Exception { + + Cipher cipher = Cipher.getInstance(ALGORITHM, "BC"); + SecretKeySpec secretKey = new SecretKeySpec(SM4_KEY.getBytes(StandardCharsets.UTF_8), "AES"); + cipher.init(Cipher.ENCRYPT_MODE, secretKey); + byte[] encrypted = cipher.doFinal(mapToString(map).getBytes(StandardCharsets.UTF_8)); + return Base64.getEncoder().encodeToString(encrypted); + } + private static String mapToString(Map map) { StringBuilder sb = new StringBuilder(); for (Map.Entry entry : map.entrySet()) { diff --git a/psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java index c5064b1..d6ea894 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/PrivateKeyServiceImpl.java @@ -72,7 +72,13 @@ public class PrivateKeyServiceImpl implements IPrivateKeyService { long pageCount = (count/pageSize) + (count%pageSize==0?0:1); AjaxResult ajax = new AjaxResult(); Map map = new HashMap(); + SM4Util sm4Util = new SM4Util(); List list = privateKeyMapper.queryAllByLimit(keyUnit, start, pageSize); + list.parallelStream().forEach((s)->{ + // 解密 + String decryptBySM4ECB = sm4Util.decryptBySM4ECB(s.getKeyValue(), SM4_KEY); + s.setKeyValue(decryptBySM4ECB); + }); ajax.put("data", list); map.put("pageCurrent", pageCurrent); map.put("pageSize", pageSize); @@ -86,10 +92,13 @@ public class PrivateKeyServiceImpl implements IPrivateKeyService { public AjaxResult selectAll() { List ary = new ArrayList<>(); AjaxResult ajax = new AjaxResult(); + SM4Util sm4Util = new SM4Util(); List list = privateKeyMapper.selectAll(); list.parallelStream().forEach((s)->{ Map map = new HashMap(); - map.put("key", s.getKeyValue()); + // 解密 + String decryptBySM4ECB = sm4Util.decryptBySM4ECB(s.getKeyValue(), SM4_KEY); + map.put("key", decryptBySM4ECB); map.put("unit", s.getKeyUnit()); ary.add(map); }); diff --git a/psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java index 0ee1672..a2d0ff6 100644 --- a/psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java +++ b/psdc-business/src/main/java/com/psdc/service/impl/SecretKeyServiceImpl.java @@ -1,5 +1,7 @@ package com.psdc.service.impl; +import com.psdc.core.domain.AjaxResult; +import com.psdc.entity.PrivateKey; import com.psdc.entity.SecretKey; import com.psdc.mapper.SecretKeyMapper; import com.psdc.service.ISecretKeyService; @@ -8,6 +10,9 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @Author:戴仕崑 @@ -31,6 +36,39 @@ public class SecretKeyServiceImpl implements ISecretKeyService { return secretKeyMapper.selOneByKey(key); } + @Override + public SecretKey selOneById(Integer id) { + return secretKeyMapper.selOneById(id); + } + + @Override + public Integer deleteById(Integer id) { + return secretKeyMapper.deleteById(id); + } + + @Override + public Integer updateById(SecretKey secretKey) { + secretKey.setUpdateTime(sdf.format(new Date())); + return secretKeyMapper.updateById(secretKey); + } + + @Override + public AjaxResult queryAllByLimit(String keyUnit, String startDateTime, String endDateTime, Integer pageCurrent, Integer pageSize) { + int start = (pageCurrent - 1) * pageSize; + long count = secretKeyMapper.selectCount(keyUnit, endDateTime, startDateTime); + long pageCount = (count/pageSize) + (count%pageSize==0?0:1); + AjaxResult ajax = new AjaxResult(); + Map map = new HashMap(); + List list = secretKeyMapper.queryAllByLimit(keyUnit, endDateTime, startDateTime, start, pageSize); + ajax.put("data", list); + map.put("pageCurrent", pageCurrent); + map.put("pageSize", pageSize); + map.put("pageTotalRow", count); + map.put("pageCount", pageCount); + ajax.put("page", map); + return ajax; + } + @Override public Integer insert(SecretKey secretKey) { secretKey.setCreateTime(sdf.format(new Date())); diff --git a/psdc-business/src/main/java/com/psdc/service/model/IBuildHeatingService.java b/psdc-business/src/main/java/com/psdc/service/model/IBuildHeatingService.java new file mode 100644 index 0000000..0f637fd --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/service/model/IBuildHeatingService.java @@ -0,0 +1,19 @@ +package com.psdc.service.model; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; + +/** + * @Author:戴仕崑 + * @Project:psdc + * @Filename:IBuildHeatingService + * @Slogan 致敬大师,致敬未来的你 + * @Date:2024/2/1 17:32 + * @Version 1.0 + */ +public interface IBuildHeatingService { + + JSONObject exeModel2Report(JSONArray devSpecList, JSONObject jsonObject, String key); + + +} diff --git a/psdc-business/src/main/java/com/psdc/service/model/impl/BuildHeatingServiceImpl.java b/psdc-business/src/main/java/com/psdc/service/model/impl/BuildHeatingServiceImpl.java new file mode 100644 index 0000000..19c4fe5 --- /dev/null +++ b/psdc-business/src/main/java/com/psdc/service/model/impl/BuildHeatingServiceImpl.java @@ -0,0 +1,29 @@ +package com.psdc.service.model.impl; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import com.dky.tool.ModelTool; +import com.psdc.service.model.IBuildHeatingService; +import org.springframework.stereotype.Service; + +/** + * @Author:戴仕崑 + * @Project:psdc + * @Filename:BuildHeatingServiceImpl + * @Slogan 致敬大师,致敬未来的你 + * @Date:2024/2/1 17:32 + * @Version 1.0 + */ +@Service +public class BuildHeatingServiceImpl implements IBuildHeatingService { + + + @Override + public JSONObject exeModel2Report(JSONArray devSpecList, JSONObject param, String key) { + JSONObject list = new JSONObject(); + list.put("devSpecList",devSpecList); + new ModelTool(list); + + return ModelTool.exeModel2Report(param, key); + } +} diff --git a/psdc-business/src/main/resources/mapper/business/PrivateKeyMapper.xml b/psdc-business/src/main/resources/mapper/business/PrivateKeyMapper.xml index 7c00507..193cea9 100644 --- a/psdc-business/src/main/resources/mapper/business/PrivateKeyMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/PrivateKeyMapper.xml @@ -32,7 +32,7 @@ Select COUNT(1) From private_key - key_unit Like CONCAT("%",#{keyUnit},"%") + key_unit Like CONCAT("%",#{keyUnit},"%") diff --git a/psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml b/psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml index c234de6..f609b9e 100644 --- a/psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml +++ b/psdc-business/src/main/resources/mapper/business/SecretKeyMapper.xml @@ -6,21 +6,87 @@ + + - Insert into secret_key(key_value,export_date,create_time,update_time) - values (#{keyValue},#{exportDate},#{createTime},#{updateTime}) + Insert into secret_key(key_value,export_date,cpu_ids,key_unit,create_time,update_time) + values (#{keyValue},#{exportDate},#{cpuIds},#{keyUnit},#{createTime},#{updateTime}) UPDATE `secret_key` set key_value = #{newKey}, update_time = now() WHERE key_value = #{oldKey} + + Update secret_key + + + key_value = #{keyValue}, + + + export_date = #{exportDate}, + + + create_time = #{createTime}, + + + update_time = #{updateTime}, + + + cpu_ids = #{cpuIds}, + + + key_unit = #{keyUnit}, + + + Where id = #{id} + + + + Delete from secret_key Where id = #{id} + + + + + + + + \ No newline at end of file diff --git a/psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java b/psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java index 2a5abad..8b7cd1a 100644 --- a/psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java +++ b/psdc-web/src/main/java/com/psdc/controller/key/GenerateKeyController.java @@ -10,10 +10,8 @@ import com.psdc.service.ISecretKeyService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.text.SimpleDateFormat; +import java.util.*; /** @@ -37,10 +35,11 @@ public class GenerateKeyController extends BaseController { public AjaxResult getGenerateKey(@RequestBody Map requestBody) { List cpuIds = (List) requestBody.get("cpuIds"); String expiration = (String) requestBody.get("expiration"); + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String key = (String) requestBody.get("key"); - String companyname = (String) requestBody.get("companyname"); + String companyName = (String) requestBody.get("companyname"); Map map = new HashMap(); - map.put("companyname", companyname); + map.put("companyname", companyName); map.put("expireTime", expiration); map.put("cpuIds", cpuIds.toString()); AjaxResult ajax = AjaxResult.success(); @@ -48,7 +47,9 @@ public class GenerateKeyController extends BaseController { ajax.put("key", s); SecretKey secretKey = new SecretKey(); secretKey.setKeyValue(s); + secretKey.setCpuIds(cpuIds.toString()); secretKey.setExportDate(expiration); + secretKey.setKeyUnit(companyName); SecretKey selOne = secretKeyService.selOne(s, expiration); if (Optional.ofNullable(selOne).isPresent()) { secretKeyService.update(s, selOne.getKeyValue()); diff --git a/psdc-web/src/main/java/com/psdc/controller/key/SecretKeyController.java b/psdc-web/src/main/java/com/psdc/controller/key/SecretKeyController.java new file mode 100644 index 0000000..0b090ad --- /dev/null +++ b/psdc-web/src/main/java/com/psdc/controller/key/SecretKeyController.java @@ -0,0 +1,101 @@ +package com.psdc.controller.key; + +import com.psdc.core.domain.AjaxResult; +import com.psdc.entity.SecretKey; +import com.psdc.service.IGenerateKey; +import com.psdc.service.ISecretKeyService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * @Author:戴仕崑 + * @Project:psdc + * @Filename:SecretKeyController + * @Slogan 致敬大师,致敬未来的你 + * @Date:2024/1/30 10:09 + * @Version 1.0 + */ +@RestController +@RequestMapping("/system/secret/key") +public class SecretKeyController { + + @Autowired + ISecretKeyService secretKeyService; + + @Autowired + IGenerateKey generateKey; + + /** + * 通过ID查询单条数据 + * + * @param id 主键 + * @return 实例对象 + */ + @GetMapping("/byId") + public AjaxResult queryById(@RequestParam(value = "id") Integer id){ + AjaxResult ajax = new AjaxResult(); + ajax.put("data", secretKeyService.selOneById(id)); + return ajax; + } + + /** + * 通过ID删除单条数据 + * + * @param requestBody 参数 + * @return 实例对象 + */ + @PostMapping("/delById") + public AjaxResult delById(@RequestBody Map requestBody){ + AjaxResult ajax = new AjaxResult(); + Integer id = (Integer) requestBody.get("id"); + ajax.put("data", secretKeyService.deleteById(id)); + return ajax; + } + + /** + * 分页查询 + * + * @param requestBody 筛选条件 + * @return 查询结果 + */ + @PostMapping("/byPage") + public AjaxResult paginQuery(@RequestBody Map requestBody){ + String unit = (String) requestBody.get("keyUnit"); + String startDateTime = (String) requestBody.get("startDateTime"); + String endDateTime = (String) requestBody.get("endDateTime"); + Integer pageCurrent = (Integer) requestBody.get("pageCurrent"); + Integer pageSize = (Integer) requestBody.get("pageSize"); + return secretKeyService.queryAllByLimit(unit, startDateTime, endDateTime, pageCurrent, pageSize); + } + + + @PostMapping("/upKeyData") + public AjaxResult upKeyDate(@RequestBody Map requestBody){ + List cpuIds = (List) requestBody.get("cpuIds"); + String expiration = (String) requestBody.get("expiration"); + String key = (String) requestBody.get("key"); + String companyName = (String) requestBody.get("companyname"); + Integer id = (Integer) requestBody.get("id"); + Map map = new HashMap(); + map.put("companyname", companyName); + map.put("expireTime", expiration); + map.put("cpuIds", cpuIds.toString()); + AjaxResult ajax = AjaxResult.success(); + String s = generateKey.generateKey(map, key); + ajax.put("key", s); + SecretKey secretKey = new SecretKey(); + secretKey.setKeyValue(s); + secretKey.setId(id); + secretKey.setCpuIds(cpuIds.toString()); + secretKey.setExportDate(expiration); + secretKey.setKeyUnit(companyName); + secretKeyService.updateById(secretKey); + return ajax; + } + +} diff --git a/psdc-web/src/main/java/com/psdc/controller/model/BuildHeatingController.java b/psdc-web/src/main/java/com/psdc/controller/model/BuildHeatingController.java new file mode 100644 index 0000000..6e8a9e9 --- /dev/null +++ b/psdc-web/src/main/java/com/psdc/controller/model/BuildHeatingController.java @@ -0,0 +1,50 @@ +package com.psdc.controller.model; + +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import com.dky.utils.entity.SysDeviceHeatScene; +import com.psdc.core.domain.AjaxResult; +import com.psdc.entity.SecretKey; +import com.psdc.service.model.IBuildHeatingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +/** + * @Author:戴仕崑 + * @Project:psdc + * @Filename:BuildHeatingController + * @Slogan 致敬大师,致敬未来的你 + * @Date:2024/2/2 8:55 + * @Version 1.0 + */ +@RestController +@RequestMapping("/system/model") +public class BuildHeatingController { + + @Autowired + IBuildHeatingService buildHeatingService; + + @PostMapping("/getReport") + public AjaxResult getGenerateKey(@RequestBody Map requestBody) { + List devSpecList = (List) requestBody.get("devSpecList"); + JSONArray objects = new JSONArray(); + objects.addAll(devSpecList); + HashMap param = (HashMap) requestBody.get("param"); + JSONObject jsonObject = new JSONObject(); + jsonObject.putAll(param); + String key = (String) requestBody.get("key"); + AjaxResult ajax = AjaxResult.success(); + ajax.put("report", buildHeatingService.exeModel2Report(objects, jsonObject, key)); + return ajax; + } + +}