From 5bcd9950acacceed781ce10310de646879929cbc Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Mon, 30 Sep 2024 10:55:03 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/entity/bracelet/vo/PersonVo.java | 3 + .../TemporarilyPersonController.java | 43 +++++ .../mapper/TemporarilyPersonMapper.java | 54 ++++++ .../service/TemporarilyPersonService.java | 25 +++ .../impl/TemporarilyPersonServiceImpl.java | 182 ++++++++++++++++++ .../bracelet/TemporarilyPersonMapper.xml | 40 ++++ 6 files changed, 347 insertions(+) create mode 100644 bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/TemporarilyPersonController.java create mode 100644 bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/TemporarilyPersonMapper.java create mode 100644 bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/TemporarilyPersonService.java create mode 100644 bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/TemporarilyPersonServiceImpl.java create mode 100644 bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/TemporarilyPersonMapper.xml diff --git a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonVo.java b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonVo.java index a67f22e..5ac71b0 100644 --- a/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonVo.java +++ b/bonus-common/bonus-common-entity/src/main/java/com/bonus/common/entity/bracelet/vo/PersonVo.java @@ -180,6 +180,9 @@ public class PersonVo implements Serializable { */ private Integer isPush = 0; + /**班组名称*/ + private String teamName; + /** * 查询条件限制 */ diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/TemporarilyPersonController.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/TemporarilyPersonController.java new file mode 100644 index 0000000..37c3ff3 --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/controller/TemporarilyPersonController.java @@ -0,0 +1,43 @@ +package com.bonus.bracelet.controller; + +import com.bonus.bracelet.service.TemporarilyPersonService; +import com.bonus.common.core.web.controller.BaseController; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.entity.bracelet.BraceletParamsDto; +import com.bonus.common.log.annotation.SysLog; +import com.bonus.common.log.enums.OperaType; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @className:TemporarilyPersonController + * @author:cwchen + * @date:2024-09-30-9:23 + * @version:1.0 + * @description:临时人员-controller + */ +@RestController +@RequestMapping("/temporarilyPerson/") +@Slf4j +public class TemporarilyPersonController extends BaseController { + + @Resource(name = "TemporarilyPersonService") + private TemporarilyPersonService service; + + @GetMapping("list") + @SysLog(title = "临时人员管理", businessType = OperaType.QUERY, logType = 0, module = "基础管理->临时人员管理", details = "查询临时人员列表") + public TableDataInfo list(BraceletParamsDto dto) { + startPage(); + TableDataInfo tableDataInfo = service.getTemporarilyPersons(dto); + return tableDataInfo; + } + + @PostMapping("delTemporarilyPerson") + @SysLog(title = "临时人员管理", businessType = OperaType.DELETE, logType = 0, module = "基础管理->临时人员管理", details = "删除临时人员") + public AjaxResult delTemporarilyPerson(@RequestBody BraceletParamsDto dto) { + return service.delTemporarilyPerson(dto); + } +} diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/TemporarilyPersonMapper.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/TemporarilyPersonMapper.java new file mode 100644 index 0000000..26053b9 --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/mapper/TemporarilyPersonMapper.java @@ -0,0 +1,54 @@ +package com.bonus.bracelet.mapper; + +import com.bonus.common.entity.bracelet.BraceletParamsDto; +import com.bonus.common.entity.bracelet.vo.PersonVo; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @className:TemporarilyPersonMapper + * @author:cwchen + * @date:2024-09-30-9:27 + * @version:1.0 + * @description:临时人员-mapper + */ +@Repository(value = "TemporarilyPersonMapper") +public interface TemporarilyPersonMapper { + + /** + * 临时人员列表 + * @param dto + * @return List + * @author cwchen + * @date 2024/9/30 9:39 + */ + List getTemporarilyPersons(BraceletParamsDto dto); + + /** + * 删除临时人员 + * @param dto + * @return void + * @author cwchen + * @date 2024/9/30 10:26 + */ + void delTemporarilyPerson(BraceletParamsDto dto); + + /** + * 更新手环绑定的临时人员 + * @param dto + * @return void + * @author cwchen + * @date 2024/9/30 10:30 + */ + void updateBracelet(Long id); + + /** + * 查询临时人员绑定的手环设备 + * @param dto + * @return Long + * @author cwchen + * @date 2024/9/30 10:36 + */ + Long getBraceletByTemporarilyPerson(BraceletParamsDto dto); +} diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/TemporarilyPersonService.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/TemporarilyPersonService.java new file mode 100644 index 0000000..ceab6dc --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/TemporarilyPersonService.java @@ -0,0 +1,25 @@ +package com.bonus.bracelet.service; + +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.entity.bracelet.BraceletParamsDto; + +/** + * @className:TemporarilyPersonService + * @author:cwchen + * @date:2024-09-30-9:25 + * @version:1.0 + * @description:临时人员-service + */ +public interface TemporarilyPersonService { + TableDataInfo getTemporarilyPersons(BraceletParamsDto dto); + + /** + * 删除临时人员 + * @param dto + * @return AjaxResult + * @author cwchen + * @date 2024/9/30 10:25 + */ + AjaxResult delTemporarilyPerson(BraceletParamsDto dto); +} diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/TemporarilyPersonServiceImpl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/TemporarilyPersonServiceImpl.java new file mode 100644 index 0000000..707a6f8 --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/TemporarilyPersonServiceImpl.java @@ -0,0 +1,182 @@ +package com.bonus.bracelet.service.impl; + +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONObject; +import com.bonus.bracelet.mapper.ResourceFileMapper; +import com.bonus.bracelet.mapper.TemporarilyPersonMapper; +import com.bonus.bracelet.service.TemporarilyPersonService; +import com.bonus.common.core.constant.BusinessConstants; +import com.bonus.common.core.constant.HttpStatus; +import com.bonus.common.core.constant.SecurityConstants; +import com.bonus.common.core.domain.R; +import com.bonus.common.core.utils.FaceCodeUtil; +import com.bonus.common.core.utils.encryption.Sm4Utils; +import com.bonus.common.core.web.domain.AjaxResult; +import com.bonus.common.core.web.page.TableDataInfo; +import com.bonus.common.entity.bracelet.BraceletParamsDto; +import com.bonus.common.entity.bracelet.vo.PersonVo; +import com.bonus.system.api.RemoteFileService; +import com.bonus.system.api.domain.SysFile; +import com.github.pagehelper.PageInfo; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.interceptor.TransactionAspectSupport; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.Future; + +/** + * @className:TemporarilyPersonServiceImpl + * @author:cwchen + * @date:2024-09-30-9:26 + * @version:1.0 + * @description:临时人员-业务逻辑层 + */ +@Service(value = "TemporarilyPersonService") +@Slf4j +public class TemporarilyPersonServiceImpl implements TemporarilyPersonService { + + @Resource(name = "TemporarilyPersonMapper") + private TemporarilyPersonMapper mapper; + + @Resource(name = "testTaskExecutor") + private ThreadPoolTaskExecutor testTaskExecutor; + + @Resource(name = "ResourceFileMapper") + private ResourceFileMapper resourceFileMapper; + + @Resource + private RemoteFileService remoteFileService; + + @Autowired + private FaceInterUtilService faceInterService; + + @Override + public TableDataInfo getTemporarilyPersons(BraceletParamsDto dto) { + dto.setSourceType(BusinessConstants.RESOURCE_TYPE_USERTEMP); + List list = new ArrayList<>(); + List futureList = new ArrayList<>(); + List newList = new ArrayList<>(); + try { + list = mapper.getTemporarilyPersons(dto); + for (PersonVo vo : list) { + Future future = testTaskExecutor.submit(new Callable() { + @Override + public PersonVo call() throws Exception { + vo.setIdCard(Sm4Utils.decode(vo.getIdCard())); + vo.setPhone(Sm4Utils.decode(vo.getPhone())); + String imageBase64 = getImageBase64(vo.getFilePath()); + vo.setBase64Url(imageBase64); + return vo; + } + }); + futureList.add(future); + } + for (Future future : futureList) { + PersonVo vo = future.get(); + newList.add(vo); + } + } catch (Exception e) { + log.error("查询人员列表", e); + } + TableDataInfo rspData = new TableDataInfo(); + rspData.setCode(HttpStatus.SUCCESS); + rspData.setRows(newList); + rspData.setMsg("查询成功"); + rspData.setTotal(new PageInfo(list).getTotal()); + return rspData; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public AjaxResult delTemporarilyPerson(BraceletParamsDto dto) { + try { + if (dto.getId() == null) { + return AjaxResult.error("参数不能为空"); + } + // 删除临时人员、更新手环绑定的临时人员 + mapper.delTemporarilyPerson(dto); + Long id = mapper.getBraceletByTemporarilyPerson(dto); + mapper.updateBracelet(id); + if (StringUtils.isNotBlank(dto.getFilePath())) { + String personImgBase64 = getPersonImgBase64(dto.getFilePath()); + // 删除人脸库 + AjaxResult delAjax = delFaceToLibrary(personImgBase64, FaceCodeUtil.DEL, "ls-" + dto.getId()); + if (dto.getFileId() != null) { + resourceFileMapper.delResourceFile(dto.getFileId()); + remoteFileService.delFile(String.valueOf(dto.getFileId()), SecurityConstants.INNER); + } + } + return AjaxResult.success(); + } catch (Exception e) { + log.error(e.toString(), e); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + return AjaxResult.error(); + } + } + + /** + * 获取图片的base64 + * + * @param filePath + * @return String + * @author cwchen + * @date 2024/8/20 9:18 + */ + public String getImageBase64(String filePath) { + R result = remoteFileService.getImgBase64(filePath, SecurityConstants.INNER); + if (result != null && result.getCode() == HttpStatus.SUCCESS && result.getData() != null) { + String jsonString = JSON.toJSONString(result.getData()); + JSONObject item = JSON.parseObject(jsonString); + String base64 = item.getString("url"); + return base64; + } + return null; + } + + /** + * 根据文件ID获取图片base64 + * + * @param filePath + * @return String + * @author cwchen + * @date 2024/8/12 14:35 + */ + public String getPersonImgBase64(String filePath) { + R result = remoteFileService.getImgBase64(filePath, SecurityConstants.INNER); + if (result != null && result.getCode() == HttpStatus.SUCCESS && result.getData() != null) { + String jsonString = JSON.toJSONString(result.getData()); + JSONObject item = JSON.parseObject(jsonString); + String base64 = item.getString("url"); + return base64; + } + return null; + } + + /** + * 删除人脸库 + * + * @param base64 + * @param type + * @param id + * @return Integer + * @author cwchen + * @date 2024/8/12 13:27 + */ + public AjaxResult delFaceToLibrary(String base64, String type, String id) { + if (StringUtils.isEmpty(base64)) { + return null; + } + AjaxResult ajaxResult = faceInterService.addFace(base64, type, id); + log.info("删除人脸库返回结果:{}", ajaxResult); + return ajaxResult; + } + +} diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/TemporarilyPersonMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/TemporarilyPersonMapper.xml new file mode 100644 index 0000000..579118d --- /dev/null +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/TemporarilyPersonMapper.xml @@ -0,0 +1,40 @@ + + + + + UPDATE tb_bracelet SET peopel_type = null,bid_id = null,bid_time = null,face_status = null WHERE id = #{id} + + + + DELETE FROM tb_ls_user WHERE id = #{id} + + + + + + + \ No newline at end of file