diff --git a/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/AesEncryptUtil.java b/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/AesEncryptUtil.java index 8db39ca..5f66f20 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/AesEncryptUtil.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/houqin/utils/AesEncryptUtil.java @@ -11,6 +11,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; @@ -19,7 +20,7 @@ import java.nio.charset.StandardCharsets; public class AesEncryptUtil { private static final Logger log = LoggerFactory.getLogger(AesEncryptUtil.class); private static final String KEY_ALGORITHM = "AES"; - private static final String AES_ENCRYPT_KEY = "pigxpigxpigxpigx"; + private static final String AES_ENCRYPT_KEY ="loqvpd0iqazwsxed";// "pigxpigxpigxpigx"; // @Resource @@ -30,12 +31,17 @@ public class AesEncryptUtil { // } public static String aesEncrypt(String encryptStr) { - if (StrUtil.isBlank(encryptStr)) { - return encryptStr; - } else { - AES aes = new AES(Mode.CBC, Padding.ZeroPadding, new SecretKeySpec(AES_ENCRYPT_KEY.getBytes(), "AES"), new IvParameterSpec(AES_ENCRYPT_KEY.getBytes())); - return aes.encryptBase64(encryptStr); + try{ + if (StrUtil.isBlank(encryptStr)) { + return encryptStr; + } else { + AES aes = new AES(Mode.ECB, Padding.PKCS5Padding, new SecretKeySpec(AES_ENCRYPT_KEY.getBytes(), "AES")); + return aes.encryptBase64(encryptStr); + } + }catch (Exception e){ + e.printStackTrace(); } + return encryptStr; } public static String aesDecode(String decodeStr) { diff --git a/bonus-modules/bonus-modules.iml b/bonus-modules/bonus-modules.iml deleted file mode 100644 index 84c5f11..0000000 --- a/bonus-modules/bonus-modules.iml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/bonus-modules/bonus-zjgl/bonus-zjgl.iml b/bonus-modules/bonus-zjgl/bonus-zjgl.iml index dbf29b1..72898ce 100644 --- a/bonus-modules/bonus-zjgl/bonus-zjgl.iml +++ b/bonus-modules/bonus-zjgl/bonus-zjgl.iml @@ -278,11 +278,6 @@ - - - - - @@ -370,6 +365,11 @@ + + + + + diff --git a/bonus-modules/bonus-zjgl/pom.xml b/bonus-modules/bonus-zjgl/pom.xml index 4787140..dc46813 100644 --- a/bonus-modules/bonus-zjgl/pom.xml +++ b/bonus-modules/bonus-zjgl/pom.xml @@ -210,6 +210,12 @@ 1.17.2 + + com.squareup.okhttp3 + okhttp + 4.12.0 + + com.arcsoft.face arcsoft-sdk-face @@ -275,6 +281,10 @@ 0.0.20131108.vaadin1 compile + + com.squareup.okhttp3 + okhttp + diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/controller/CertificateRefillController.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/controller/CertificateRefillController.java new file mode 100644 index 0000000..338a656 --- /dev/null +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/controller/CertificateRefillController.java @@ -0,0 +1,90 @@ +package com.bonus.canteen.core.certificate.controller; + +import com.alibaba.fastjson.JSONObject; +import com.bonus.canteen.core.certificate.mapper.CertificateReturnManageMapper; +import com.bonus.canteen.core.certificate.service.CertificateManageService; +import com.bonus.canteen.core.certificate.service.CertificateReturnManageService; +import com.bonus.canteen.core.certificate.vo.CertificateInfo; +import com.bonus.canteen.core.certificate.vo.CertificateRefill; +import com.bonus.canteen.core.config.SmUtils; +import com.bonus.common.core.web.controller.BaseController; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +@Api(tags = "证件信息回填接口") +@RestController +@RequestMapping("/certificate_refill") +public class CertificateRefillController extends BaseController { + @Resource + private CertificateReturnManageService certificateReturnManageService; + + @Resource + private CertificateReturnManageMapper certificateInfoMapper; + + /** + * 证件信息回填接口 + */ + @ApiOperation(value = "证件信息回填接口") + @GetMapping("/refill") + public Map refill(@RequestBody CertificateRefill certificateRefill) { + Map map=new HashMap<>(); + try{ + String taskcode=certificateRefill.getTaskcode(); + if("C0201".equals(taskcode)){ + String params=certificateRefill.getParams(); + String paramstr= SmUtils.decryptBySm42(params); + JSONObject jsonObject = JSONObject.parseObject(paramstr); + String taskno=jsonObject.getString("taskno"); + String actiontype=jsonObject.getString("actiontype"); + String operaTime=jsonObject.getString("operaTime"); + String operator=jsonObject.getString("operator"); + String opeidnumber=jsonObject.getString("opeidnumber"); + String cardno=jsonObject.getString("cardno"); + String deviceno=jsonObject.getString("deviceno"); + String savepos=jsonObject.getString("savepos"); + CertificateInfo certificateInfo=new CertificateInfo(); + if(actiontype.contains("Save")){ + certificateInfo.setCertificateNo(cardno); + certificateInfo.setTaskNo(taskno); + certificateInfo.setOpeidnumber(opeidnumber); + certificateInfo.setOperator(operator); + certificateInfo.setOperaTime(operaTime); + certificateInfo.setState("2"); + certificateInfo.setProcessState("1"); + certificateInfo.setRealProcessDate(operaTime); + certificateInfoMapper.updateCertificateSave(certificateInfo); + certificateInfoMapper.updateCertificateState(certificateInfo); + map.put("Message","执行成功"); + map.put("Success","1"); + }else{ + certificateInfo.setCertificateNo(cardno); + certificateInfo.setTaskNo(taskno); + certificateInfo.setOpeidnumber(opeidnumber); + certificateInfo.setOperator(operator); + certificateInfo.setOperaTime(operaTime); + certificateInfo.setState("4"); + certificateInfo.setProcessState("1"); + certificateInfo.setRealProcessDate(operaTime); + certificateInfoMapper.updateCertificateSave(certificateInfo); + certificateInfoMapper.updateCertificateState(certificateInfo); + map.put("Message","执行成功"); + map.put("Success","1"); + } + + }else{ + map.put("Success","0"); + map.put("Message","功能代码不正确,回馈接口代码C0201!"); + } + }catch (Exception e){ + map.put("Success","0"); + map.put("Message",e.toString()); + } + return map; + } + +} diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/controller/CertificateReturnManageController.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/controller/CertificateReturnManageController.java index 3755815..d1e9197 100644 --- a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/controller/CertificateReturnManageController.java +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/controller/CertificateReturnManageController.java @@ -10,13 +10,16 @@ import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.page.TableDataInfo; import com.bonus.common.log.annotation.SysLog; import com.bonus.common.log.enums.OperaType; +import com.bonus.common.security.utils.SecurityUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; import java.util.List; +import java.util.Map; @Api(tags = "证件信息接口") @RestController @@ -35,6 +38,22 @@ public class CertificateReturnManageController extends BaseController { List list = certificateInfoService.selectCertificateSaveList(deviceInfo); return getDataTable(list); } + /** + * 证件存入信息 + */ + @ApiOperation(value = "证件存入") + @SysLog(title = "证件存入", businessType = OperaType.INSERT, logType = 1,module = "借退管理->证件存入") + @PostMapping("/certificateSave/add") + public AjaxResult addCertificateSave(@RequestBody CertificateInfo certificateInfo) { + String username = SecurityUtils.getUsername(); + Map map=new HashMap<>(); + try { + return toAjax(certificateInfoService.addCertificateSave(certificateInfo)); + } catch (Exception e) { + e.printStackTrace(); + return error(e.getMessage()); + } + } /** * 查询证件信息列表 @@ -46,7 +65,21 @@ public class CertificateReturnManageController extends BaseController { List list = certificateInfoService.selectCertificateAtakeList(deviceInfo); return getDataTable(list); } - + /** + * 证件取出信息 + */ + @ApiOperation(value = "证件取出") + @SysLog(title = "证件取出", businessType = OperaType.INSERT, logType = 1,module = "借退管理->证件取出") + @PostMapping("/certificateTake/add") + public AjaxResult certificateTake(@RequestBody CertificateInfo certificateInfo) { + String username = SecurityUtils.getUsername(); + Map map=new HashMap<>(); + try { + return toAjax(certificateInfoService.addCertificateTake(certificateInfo)); + } catch (Exception e) { + return error(e.getMessage()); + } + } /** * 查询证件信息列表 */ @@ -57,5 +90,21 @@ public class CertificateReturnManageController extends BaseController { List list = certificateInfoService.selectCertificateTaskList(deviceInfo); return getDataTable(list); } + /** + * 证件取出信息 + */ + @ApiOperation(value = "证件任务撤回") + @SysLog(title = "证件任务撤回", businessType = OperaType.INSERT, logType = 1,module = "借退管理->证件任务撤回") + @PostMapping("/certificateTask/return") + public AjaxResult certificateReturn(@RequestBody CertificateInfo certificateInfo) { + String username = SecurityUtils.getUsername(); + Map map=new HashMap<>(); + try { + return toAjax(certificateInfoService.addCertificateReturn(certificateInfo)); + } catch (Exception e) { + e.printStackTrace(); + return error(e.getMessage()); + } + } } diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/mapper/CertificateReturnManageMapper.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/mapper/CertificateReturnManageMapper.java index 0c82047..da8fde7 100644 --- a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/mapper/CertificateReturnManageMapper.java +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/mapper/CertificateReturnManageMapper.java @@ -13,13 +13,6 @@ import java.util.List; * @date 2025-05-25 */ public interface CertificateReturnManageMapper { - /** - * 查询证件信息 - * - * @param deviceId 证件信息主键 - * @return 证件信息 - */ - public CertificateInfo selectCertificateInfoByDeviceId(Long deviceId); /** * 查询证件信息列表 @@ -33,123 +26,11 @@ public interface CertificateReturnManageMapper { public List selectCertificateAtakeList(CertificateInfo certificateInfo); - /** - * 新增证件信息 - * - * @param certificateInfo 证件信息 - * @return 结果 - */ - public int insertCertificateInfo(CertificateInfo certificateInfo); + public int addCertificateSave(CertificateInfo certificateInfo); + public int updateCertificateState(CertificateInfo certificateInfo); - /** - * 修改证件信息 - * - * @param certificateInfo 证件信息 - * @return 结果 - */ - public int updateCertificateInfo(CertificateInfo certificateInfo); + public CertificateInfo selectCertificateInfoByCertificateNo(@Param("certificateNo") String certificateNo); + public CertificateInfo selectCertificateTaskByCertificateNo(@Param("taskNo") String taskNo); + public int updateCertificateSave(CertificateInfo certificateInfo); - /** - * 删除证件信息 - * - * @param deviceId 证件信息主键 - * @return 结果 - */ - public int deleteCertificateInfoByDeviceId(Long deviceId); - - /** - * 批量删除证件信息 - * - * @param deviceIds 需要删除的数据主键集合 - * @return 结果 - */ - public int deleteCertificateInfoByDeviceIds(@Param("deviceIds") Long[] deviceIds); - - /** - * 校验设备名称是否唯一 - * - * @param certificateInfo 设备名称 - * @return 结果 - */ - int checkDeviceNameUnique(CertificateInfo certificateInfo); - - /** - * 校验设备编号是否唯一 - * - * @param certificateInfo 设备编号 - * @return 结果 - */ - int checkDeviceNumberUnique(CertificateInfo certificateInfo); - - /** - * 校验设备序列号是否唯一 - * - * @param certificateInfo 设备序列号 - * @return 结果 - */ - int checkDeviceSnUnique(CertificateInfo certificateInfo); - - /** - * 新增设备绑定关系 - * - * @param certificateInfo 设备绑定关系 - * @return 结果 - */ - int insertDeviceBinding(CertificateInfo certificateInfo); - - /** - * 修改设备绑定关系 - * - * @param certificateInfo 设备绑定关系 - * @return 结果 - */ - int updateDeviceBinding(CertificateInfo certificateInfo); - - /** - * 新增设备菜谱关系 - * - * @param certificateInfo 设备菜谱关系 - * @return 结果 - */ - int insertDeviceRecipeBinding(CertificateInfo certificateInfo); - - /** - * 修改设备菜谱关系 - * - * @param certificateInfo 设备菜谱关系 - * @return 结果 - */ - int updateDeviceRecipeBinding(CertificateInfo certificateInfo); - - /** - * 查询设备菜谱关系 - * - * @param certificateInfo 设备菜谱关系 - * @return 结果 - */ - String selectDeviceRecipeBinding(CertificateInfo certificateInfo); - - /** - * 批量删除设备绑定关系 - * - * @param deviceIds 需要删除的数据主键集合 - */ - void deleteDeviceBinding(@Param("deviceIds") Long[] deviceIds); - - /** - * 批量删除设备菜谱关系 - * - * @param deviceIds 需要删除的数据主键集合 - */ - void deleteDeviceRecipeBinding(@Param("deviceIds") Long[] deviceIds); - - /** - * 更新设备在线状态 - * - * @param sn 设备序列号 - * @return 结果 - */ - int updateTimeBySn(String sn); - - int updateTimeByKitchenSn(String sn); } diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/service/CertificateReturnManageService.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/service/CertificateReturnManageService.java index f80fb58..72131bb 100644 --- a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/service/CertificateReturnManageService.java +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/service/CertificateReturnManageService.java @@ -13,61 +13,23 @@ import java.util.List; */ public interface CertificateReturnManageService { /** - * 查询证件信息 - * - * @param deviceId 证件信息主键 - * @return 证件信息 - */ - public CertificateInfo selectCertificateInfoByDeviceId(Long deviceId); - - /** - * 查询证件信息列表 + * 查询证件任务信息列表 * * @param certificateInfo 证件信息 * @return 证件信息集合 */ public List selectCertificateTaskList(CertificateInfo certificateInfo); - + public int addCertificateReturn(CertificateInfo certificateInfo); + /** + * 存证信息列表 + * + * @param certificateInfo 证件信息 + * @return 证件信息集合 + */ public List selectCertificateSaveList(CertificateInfo certificateInfo); + public int addCertificateSave(CertificateInfo certificateInfo); public List selectCertificateAtakeList(CertificateInfo certificateInfo); - /** - * 新增证件信息 - * - * @param deviceInfo 证件信息 - * @return 结果 - */ - public int insertCertificateInfo(CertificateInfo deviceInfo); + public int addCertificateTake(CertificateInfo certificateInfo); - /** - * 修改证件信息 - * - * @param deviceInfo 证件信息 - * @return 结果 - */ - public int updateCertificateInfo(CertificateInfo deviceInfo); - - /** - * 批量删除证件信息 - * - * @param deviceIds 需要删除的证件信息主键集合 - * @return 结果 - */ - public int deleteCertificateInfoByDeviceIds(Long[] deviceIds); - - /** - * 删除证件信息信息 - * - * @param deviceId 证件信息主键 - * @return 结果 - */ - public int deleteCertificateInfoByDeviceId(Long deviceId); - - /** - * 根据设备sn码更新设备最后使用时间 - * @param deviceSn 设备sn码 - */ - void updateTimeBySn(String deviceSn); - - void updateTimeByKitchenSn(String deviceSn); } diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/service/impl/CertificateReturnManageServiceImpl.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/service/impl/CertificateReturnManageServiceImpl.java index 7f02e1e..f881be2 100644 --- a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/service/impl/CertificateReturnManageServiceImpl.java +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/service/impl/CertificateReturnManageServiceImpl.java @@ -1,17 +1,25 @@ package com.bonus.canteen.core.certificate.service.impl; +import com.alibaba.fastjson.JSONObject; import com.bonus.canteen.core.certificate.mapper.CertificateReturnManageMapper; import com.bonus.canteen.core.certificate.service.CertificateReturnManageService; import com.bonus.canteen.core.certificate.vo.CertificateInfo; import com.bonus.canteen.core.certificate.vo.CertificateTask; +import com.bonus.canteen.core.config.SmUtils; +import com.bonus.canteen.core.utils.BnsUtils; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.StringUtils; +import com.bonus.common.houqin.utils.AesEncryptUtil; +import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; +import java.util.Random; /** * 设备资料Service业务层处理 @@ -19,24 +27,14 @@ import java.util.List; * @author xsheng * @date 2025-05-25 */ + @Service public class CertificateReturnManageServiceImpl implements CertificateReturnManageService { @Resource private CertificateReturnManageMapper certificateInfoMapper; private static final Long DEVICE_TYPE_STALL = 20L; - - /** - * 查询设备资料 - * - * @param deviceId 设备资料主键 - * @return 设备资料 - */ - @Override - public CertificateInfo selectCertificateInfoByDeviceId(Long deviceId) { - return certificateInfoMapper.selectCertificateInfoByDeviceId(deviceId); - } - + private static final String certificateUrl="http://124.220.39.153:8090/externaltask/accessfunction"; /** * 查询设备资料列表 * @@ -47,53 +45,182 @@ public class CertificateReturnManageServiceImpl implements CertificateReturnMana public List selectCertificateTaskList(CertificateInfo certificateInfo) { return certificateInfoMapper.selectCertificateTaskList(certificateInfo); } + + //任务回撤接口 + @Override + public int addCertificateReturn(CertificateInfo certificateInfo) { + int res=0; + String[] nos=certificateInfo.getCertificateNos(); + if(nos!=null&&nos.length>0){ + for(int i=0;i selectCertificateSaveList(CertificateInfo certificateInfo) { return certificateInfoMapper.selectCertificateSaveList(certificateInfo); } + + //存证接口 + @Override + public int addCertificateSave(CertificateInfo certificateInfo) { + int res=0; + String[] nos=certificateInfo.getCertificateNos(); + SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMddHHmmssSSS"); + if(nos!=null&&nos.length>0){ + for(int i=0;i selectCertificateAtakeList(CertificateInfo certificateInfo) { return certificateInfoMapper.selectCertificateAtakeList(certificateInfo); } - - /** - * 新增设备资料 - * - * @param certificateInfo 设备资料 - * @return 结果 - */ + //取证接口 @Override - @Transactional(rollbackFor = Exception.class) - public int insertCertificateInfo(CertificateInfo certificateInfo) { - certificateInfo.setCreateTime(DateUtils.getNowDate()); - certificateInfo.setUpdateTime(DateUtils.getNowDate()); - try { - checkParam(certificateInfo,false); - return certificateInfoMapper.insertCertificateInfo(certificateInfo); - } catch (Exception e) { - e.printStackTrace(); - throw new ServiceException(e.getMessage()); + public int addCertificateTake(CertificateInfo certificateInfo) { + int res=0; + String[] nos=certificateInfo.getCertificateNos(); + SimpleDateFormat sdf =new SimpleDateFormat("yyyyMMddHHmmssSSS"); + if(nos!=null&&nos.length>0){ + for(int i=0;i 0) { - throw new ServiceException("设备名称已存在"); - } - if (certificateInfoMapper.checkDeviceNumberUnique(certificateInfo) > 0) { - throw new ServiceException("设备编号已存在"); - } - if (certificateInfoMapper.checkDeviceSnUnique(certificateInfo) > 0) { - throw new ServiceException("设备SN已存在"); - } - } - - /** - * 批量删除设备资料 - * - * @param deviceIds 需要删除的设备资料主键 - * @return 结果 - */ - @Override - @Transactional(rollbackFor = Exception.class) - public int deleteCertificateInfoByDeviceIds(Long[] deviceIds) { - certificateInfoMapper.deleteDeviceBinding(deviceIds); - certificateInfoMapper.deleteDeviceRecipeBinding(deviceIds); - return certificateInfoMapper.deleteCertificateInfoByDeviceIds(deviceIds); - } - - /** - * 删除设备资料信息 - * - * @param deviceId 设备资料主键 - * @return 结果 - */ - @Override - public int deleteCertificateInfoByDeviceId(Long deviceId) { - return certificateInfoMapper.deleteCertificateInfoByDeviceId(deviceId); - } - - /** - * 根据sn更新时间 - * - * @param sn 设备sn码 - */ - @Override - public void updateTimeBySn(String sn) { - int code = certificateInfoMapper.updateTimeBySn(sn); - if (code == 0) { - throw new ServiceException("更新时间失败"); - } - } - @Override - public void updateTimeByKitchenSn(String sn) { - int code = certificateInfoMapper.updateTimeByKitchenSn(sn); - if (code == 0) { - throw new ServiceException("更新时间失败"); - } - } - } diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateInfo.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateInfo.java index 9466717..d4ddbf3 100644 --- a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateInfo.java +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateInfo.java @@ -150,6 +150,17 @@ public class CertificateInfo extends BaseEntity { private String taskTypeName; private String email; + // 1 自主存证 2管理员存证 3自助取证 4 管理员取证 5应急取证 6代人取证 + private String type; + private String typeName; private String[] certificateNos; + + private String keyWord; + + private String operator; + private String operaTime; + private String opeidnumber; + + } diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateRefill.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateRefill.java new file mode 100644 index 0000000..37586fc --- /dev/null +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateRefill.java @@ -0,0 +1,24 @@ +package com.bonus.canteen.core.certificate.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.bonus.common.core.annotation.Excel; +import com.bonus.common.core.web.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +/** + * 设备资料对象 device_info + * + * @author xsheng + * @date 2025-05-25 + */ + + +@Data +@ToString +public class CertificateRefill { + private String taskcode; + private String params; +} diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateTask.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateTask.java index 50f5224..9019416 100644 --- a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateTask.java +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/certificate/vo/CertificateTask.java @@ -108,6 +108,8 @@ public class CertificateTask extends BaseEntity { private String taskTypeName; private String email; + private String type; + private String typeName; } diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/config/SmUtils.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/config/SmUtils.java index 59a9016..dcb267d 100644 --- a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/config/SmUtils.java +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/config/SmUtils.java @@ -4,10 +4,12 @@ import cn.hutool.core.codec.Base64Decoder; import cn.hutool.core.codec.Base64Encoder; import cn.hutool.core.util.PrimitiveArrayUtil; import cn.hutool.core.util.RandomUtil; +import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.Mode; import cn.hutool.crypto.Padding; import cn.hutool.crypto.SmUtil; import cn.hutool.crypto.asymmetric.KeyType; +import cn.hutool.crypto.symmetric.AES; import cn.hutool.crypto.symmetric.SM4; import com.bonus.canteen.core.common.utils.SpringContextHolder; import com.google.common.base.Joiner; @@ -17,6 +19,7 @@ import org.slf4j.LoggerFactory; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; import java.io.PrintStream; import java.nio.charset.StandardCharsets; import java.security.NoSuchAlgorithmException; @@ -24,6 +27,37 @@ import java.util.SortedMap; public class SmUtils { private static final Logger log = LoggerFactory.getLogger(SmUtils.class); + private static final String SM_ENCRYPT_KEY ="loqvpd0iqazwsxed"; + + public static String smEncrypt(String encryptStr) { + try{ + if (StrUtil.isBlank(encryptStr)) { + return encryptStr; + } else { + SM4 sm4=new SM4(Mode.ECB, Padding.PKCS5Padding,SM_ENCRYPT_KEY.getBytes()); + return sm4.encryptBase64(encryptStr); + } + }catch (Exception e){ + e.printStackTrace(); + } + return encryptStr; + } + + public static String decryptBySm42(String data) { + try{ + byte[] key=SM_ENCRYPT_KEY.getBytes(); + byte[] decodedData = Base64Decoder.decode(data); + if (decodedData.length <= 16) { + throw new IllegalArgumentException("Encrypted data byte length must greater than 16"); + } else { + return (new SM4(Mode.ECB, Padding.PKCS5Padding, key)).decryptStr(decodedData); + } + }catch (Exception e){ + e.printStackTrace(); + return data; + } + } + private static SecureProperties secureProperties = SpringContextHolder.getBean(SecureProperties.class); public static void setSecureProperties(SecureProperties secureProperties) { if (SmUtils.secureProperties == null) { @@ -31,6 +65,7 @@ public class SmUtils { } } + public static String signBySm3(SortedMap data, String clientKey) { data.put(secureProperties.getSecurity().getClientKeySignParamName(), clientKey); String joinedParam = Joiner.on("&").useForNull("").withKeyValueSeparator("=").join(data); diff --git a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/utils/BnsUtils.java b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/utils/BnsUtils.java index 4ffc3cc..7807fb7 100644 --- a/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/utils/BnsUtils.java +++ b/bonus-modules/bonus-zjgl/src/main/java/com/bonus/canteen/core/utils/BnsUtils.java @@ -1,11 +1,14 @@ package com.bonus.canteen.core.utils; import com.bonus.common.core.exception.ServiceException; +import okhttp3.*; import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl; import java.beans.PropertyDescriptor; +import java.io.IOException; +import java.util.Calendar; import java.util.HashSet; import java.util.Set; @@ -41,4 +44,102 @@ public class BnsUtils { String[] result = new String[emptyNames.size()]; return (String[])emptyNames.toArray(result); } + public static String sendMsgByUrl(String url,String jsonstr){ + String responseString=""; + try{ + OkHttpClient client = new OkHttpClient(); + MediaType mediaType = MediaType.parse("application/json"); + RequestBody requestBody = RequestBody.create(mediaType, jsonstr); + Request request = new Request.Builder() + .url(url) + .post(requestBody) + .build(); + Response response = client.newCall(request).execute(); + responseString = response.body().string(); + System.out.println("Response: " + responseString); + response.close(); + }catch (Exception e){ + e.printStackTrace(); + } + return responseString; + } + + /** + * 根据身份证号获取年龄 + */ + public static int countAge(String sfzjh){ + sfzjh = sfzjh.trim(); + if(sfzjh == null || "".equals(sfzjh) || sfzjh.contains("*")){ + return 0; + } + + if (sfzjh.length() != 15 && sfzjh.length() != 18){ + return 0; + } + int age = 0; + Calendar cal = Calendar.getInstance(); + int yearNow = cal.get(Calendar.YEAR); + int monthNow = cal.get(Calendar.MONTH)+1; + int dayNow = cal.get(Calendar.DATE); + + int year = Integer.valueOf(sfzjh.substring(6, 10)); + int month = Integer.valueOf(sfzjh.substring(10,12)); + int day = Integer.valueOf(sfzjh.substring(12,14)); + + if ((month < monthNow) || (month == monthNow && day<= dayNow) ){ + age = yearNow - year; + }else { + age = yearNow - year-1; + } + return age; + } + + /** + * 根据身份证号判断性别 奇数代表男 偶数代表女 + * @param idNumber + * @return + */ + public static String gender(String idNumber) { + int gender = 0; + if(idNumber.length() == 18){ + //如果身份证号18位,取身份证号倒数第二位 + char c = idNumber.charAt(idNumber.length() - 2); + gender = Integer.parseInt(String.valueOf(c)); + }else{ + //如果身份证号15位,取身份证号最后一位 + char c = idNumber.charAt(idNumber.length() - 1); + gender = Integer.parseInt(String.valueOf(c)); + } + if(gender % 2 == 1){ + return "男"; +// return "1"; + }else{ + return "女"; +// return "2"; + } + } + + /** + * 根据身份证号判断性别 奇数代表男 偶数代表女 + * @param idNumber + * @return + */ + public static int getIntTypeGender(String idNumber) { + int gender = 0; + if(idNumber.length() == 18){ + //如果身份证号18位,取身份证号倒数第二位 + char c = idNumber.charAt(idNumber.length() - 2); + gender = Integer.parseInt(String.valueOf(c)); + }else{ + //如果身份证号15位,取身份证号最后一位 + char c = idNumber.charAt(idNumber.length() - 1); + gender = Integer.parseInt(String.valueOf(c)); + } + if(gender % 2 == 1){ + return 1; + }else{ + return 2; + } + } + } diff --git a/bonus-modules/bonus-zjgl/src/main/resources/mapper/certificate/CertificateManageMapper.xml b/bonus-modules/bonus-zjgl/src/main/resources/mapper/certificate/CertificateManageMapper.xml index 2a364b1..463c3c9 100644 --- a/bonus-modules/bonus-zjgl/src/main/resources/mapper/certificate/CertificateManageMapper.xml +++ b/bonus-modules/bonus-zjgl/src/main/resources/mapper/certificate/CertificateManageMapper.xml @@ -30,6 +30,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and bc.certificate_no like concat('%', #{certificateNo}, '%') + + and (bc.certificate_no like concat('%', #{keyWord}, '%') or bc.name like concat('%', #{name}, '%') + or bc.id_number like concat('%', #{idNumber}, '%') + ) + order by bc.update_time desc diff --git a/bonus-modules/bonus-zjgl/src/main/resources/mapper/certificate/CertificateReturnManageMapper.xml b/bonus-modules/bonus-zjgl/src/main/resources/mapper/certificate/CertificateReturnManageMapper.xml index dc65fa5..b7bb6a0 100644 --- a/bonus-modules/bonus-zjgl/src/main/resources/mapper/certificate/CertificateReturnManageMapper.xml +++ b/bonus-modules/bonus-zjgl/src/main/resources/mapper/certificate/CertificateReturnManageMapper.xml @@ -14,20 +14,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" when bc.state='1' then '存入中' when bc.state='2' then '已存入' when bc.state='3' then '取出中' - when bc.state='3' then '已取出 ' + when bc.state='4' then '已取出 ' end as statename, bct.process_state as processstate, bct.real_process_date as realprocessdate, bct.verification_code as verificationcode, - case when bct.process_state='0' then '未执行' else '已执行' end processstatename, + case when bct.process_state='0' then '未执行' when bct.process_state='1' then '已执行' else '已撤销' end processstatename, bct.task_type as tasktype,bct.task_no as taskno, case when bct.task_type='1' then '存证' else '取证' end tasktypename, - bct.process_date as processdate,bct.create_time as createTime - from basic_certificate bc + bct.process_date as processdate,bct.create_time as createTime,bct.type, + case when bct.type='1' then '自主存证' + when bct.type='2' then '管理员存证' + when bct.type='3' then '自助取证' + when bct.type='4' then '管理员取证' + when bct.type='5' then '应急取证' + when bct.type='6' then '代人取证' end as typename + from basic_certificate_task bct + left join basic_certificate bc on bc.certificate_no=bct.certificate_no left join sys_dept sd on bc.dept_id=sd.dept_id left join (select * from sys_dict_data where dict_type='sys_certificate_type') sdd on bc.certificate_type=sdd.dict_value - left join basic_certificate_task bct on bc.certificate_no=bct.certificate_no - where bct.task_type in ('1','2') and bc.del_flag='0' + where bct.task_type in ('1','2') and bc.del_flag='0' and bct.del_flag='0' and bc.id_number like concat('%', #{idNumber}, '%') @@ -37,7 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and bc.certificate_no like concat('%', #{certificateNo}, '%') - order by bc.create_time desc + order by bct.create_time desc - - select bc.dept_id as deptid,bc.name,bc.birthday,bc.birth_addr as birthaddr ,bc.certificate_type as certificatetype,bc.id_number as idnumber,sdd.dict_label as certificatetypename ,bc.certificate_no as certificateno,bc.issue_addr as issueaddr,bc.issue_day as issueday @@ -106,137 +169,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" from basic_certificate bc left join sys_dept sd on bc.dept_id=sd.dept_id left join (select * from sys_dict_data where dict_type='sys_certificate_type') sdd on bc.certificate_type=sdd.dict_value - where di.device_id = #{deviceId} + where bc.certificate_no=#{certificateNo} - + select bc.dept_id as deptid,bc.name,bc.birthday,bc.birth_addr as birthaddr + ,bc.certificate_type as certificatetype,bc.id_number as idnumber,sdd.dict_label as certificatetypename + ,bc.certificate_no as certificateno,bc.issue_addr as issueaddr,bc.issue_day as issueday + ,bc.issue_lifespan as issuelifespan,bc.is_ele as isele,sd.dept_name as deptname,bct.task_no as taskno, + bct.task_type as tasktype + from basic_certificate_task bct + left join basic_certificate bc on bct.certificate_no=bc.certificate_no + left join sys_dept sd on bc.dept_id=sd.dept_id + left join (select * from sys_dict_data where dict_type='sys_certificate_type') sdd on bc.certificate_type=sdd.dict_value + where bct.task_no=#{taskNo} - - - - - insert into basic_certificate - - dept_id, - name, - id_number, - birthday, - birth_addr, - certificate_type, - certificate_no, - issue_addr, - issue_day, - issue_lifespan, - is_ele, - create_by, - create_time, - update_by, - update_time, - - - #{deptId}, - #{name}, - #{idNumber}, - #{birthday}, - #{birthAddr}, - #{certificateType}, - #{certificateNo}, - #{issueAddr}, - #{issueDay}, - #{issueLifespan}, - #{isEle}, - #{createBy}, - #{createTime}, - #{updateBy}, - #{updateTime}, - - - - - update basic_certificate - - dept_id = #{deptId}, - name = #{name}, - birthday = #{birthday}, - birth_addr = #{birthAddr}, - certificate_type = #{certificateType}, - certificate_no = #{certificateNo}, - issue_addr = #{issueAddr}, - issue_day = #{issueDay}, - issue_lifespan = #{issueLifespan}, - is_ele = #{isEle}, - create_by = #{createBy}, - create_time = #{createTime}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where certificate_no = #{certificateNo} - - - update device_bind - - area_id = #{areaId}, - canteen_id = #{canteenId}, - stall_id = #{stallId}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where device_id = #{deviceId} - - - update cook_recipe_bind_device - - canteen_id = #{canteenId}, - stall_id = #{stallId}, - recipe_id = #{recipeId}, - update_by = #{updateBy}, - update_time = #{updateTime}, - - where device_id = #{deviceId} - - - update device_info - set last_update_time = unix_timestamp() - where device_sn = #{sn} - - - - delete from device_info where device_id = #{deviceId} - - - - delete from device_info where device_id in - - #{deviceId} - - - - delete from device_bind where device_id in - - #{deviceId} - - - - delete from cook_recipe_bind_device where device_id in - - #{deviceId} - - - - - update kitchen_device_info - set last_update_time = unix_timestamp() - where device_sn = #{sn} - \ No newline at end of file