Browse Source

add:考勤

caozixuan 1 year ago
parent
commit
d3872c0117

+ 44 - 3
sop-api/src/main/java/com/qmth/sop/server/api/TBDingController.java

@@ -3,19 +3,19 @@ package com.qmth.sop.server.api;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.boot.api.constant.ApiConstant;
+import com.qmth.sop.business.activiti.service.ActivitiService;
 import com.qmth.sop.business.annotation.OperationLog;
 import com.qmth.sop.business.bean.params.DingSaveParam;
 import com.qmth.sop.business.bean.result.*;
 import com.qmth.sop.business.entity.SysUser;
 import com.qmth.sop.business.entity.TBTask;
 import com.qmth.sop.business.service.TBDingService;
+import com.qmth.sop.business.service.TBSopInfoService;
 import com.qmth.sop.business.service.TBTaskService;
 import com.qmth.sop.business.templete.execute.AsyncDingAttendanceExportService;
 import com.qmth.sop.business.templete.execute.AsyncDingCountExportService;
 import com.qmth.sop.common.contant.SystemConstant;
-import com.qmth.sop.common.enums.DingResultEnum;
-import com.qmth.sop.common.enums.InOutTypeEnum;
-import com.qmth.sop.common.enums.TaskTypeEnum;
+import com.qmth.sop.common.enums.*;
 import com.qmth.sop.common.util.Result;
 import com.qmth.sop.common.util.ResultUtil;
 import com.qmth.sop.common.util.ServletUtil;
@@ -27,7 +27,10 @@ import javax.annotation.Resource;
 import javax.validation.Valid;
 import javax.validation.constraints.Max;
 import javax.validation.constraints.Min;
+import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 /**
  * 考勤打卡表 控制器
@@ -55,6 +58,12 @@ public class TBDingController {
     @Resource
     AsyncDingAttendanceExportService asyncDingAttendanceExportService;
 
+    @Resource
+    ActivitiService activitiService;
+
+    @Resource
+    TBSopInfoService tbSopInfoService;
+
 
     @ApiOperation(value = "工时统计统计查询接口")
     @RequestMapping(value = "/query", method = RequestMethod.POST)
@@ -214,4 +223,36 @@ public class TBDingController {
         tBDingService.dingSave(dingSaveParam, requestUser.getId());
         return ResultUtil.ok();
     }
+
+    @ApiOperation(value = "考勤打卡-查询进行中的sop")
+    @RequestMapping(value = "/ding_find_running_sop", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = DingElementResult.class)})
+    @OperationLog
+    public Result findDingRunningSop(@ApiParam(value = "服务单元id", required = true) @RequestParam String serviceUnitId) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        IPage<WorkTaskResult> page = activitiService.getFlowTaskList(new Page<>(1, SystemConstant.PAGE_SIZE_MAX_SELECT), requestUser.getId(),
+                TFCustomTypeEnum.SOP_FLOW, SystemConstant.convertIdToLong(serviceUnitId), null, FlowTaskTypeEnum.ALL, null);
+        List<SopInfoResult> list = page.getRecords().stream().flatMap(e -> {
+            SopInfoResult result = new SopInfoResult();
+            result.setSopNo(e.getCode());
+            result.setCrmNo(e.getCrmNo());
+            result.setCrmName(e.getCrmName());
+            result.setCustomId(e.getCustomId());
+            result.setCustomName(e.getCustomName());
+            result.setCustomType(e.getCustomType());
+            result.setCustomTypeStr(e.getCustomTypeStr());
+            return Stream.of(result);
+        }).collect(Collectors.toList());
+        return ResultUtil.ok(list);
+    }
+
+    @ApiOperation(value = "考勤打卡-查询所有sop")
+    @RequestMapping(value = "/ding_find_all_sop", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "查询成功", response = DingElementResult.class)})
+    @OperationLog
+    public Result findDingAllSop(@ApiParam(value = "服务单元id", required = true) @RequestParam String serviceUnitId) {
+        SysUser requestUser = (SysUser) ServletUtil.getRequestUser();
+        List<SopInfoResult> list = tbSopInfoService.findFlowByServiceId(SystemConstant.convertIdToLong(serviceUnitId), requestUser.getId());
+        return ResultUtil.ok(list);
+    }
 }

+ 1 - 1
sop-business/src/main/java/com/qmth/sop/business/bean/result/SopInfoResult.java

@@ -17,7 +17,7 @@ import java.util.Objects;
  */
 public class SopInfoResult implements Serializable {
 
-    @ApiModelProperty(value = "sopid")
+    @ApiModelProperty(value = "sopId")
     @JsonSerialize(using = ToStringSerializer.class)
     private Long id;
 

+ 1 - 0
sop-business/src/main/java/com/qmth/sop/business/service/impl/TBDingServiceImpl.java

@@ -2,6 +2,7 @@ package com.qmth.sop.business.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.sop.business.bean.dto.DateFormDto;
 import com.qmth.sop.business.bean.dto.SopCrmInfo;

+ 54 - 0
sop-common/src/main/java/com/qmth/sop/common/been/FaceMatchParam.java

@@ -0,0 +1,54 @@
+package com.qmth.sop.common.been;
+
+/**
+ * @Description: 人脸匹配参数
+ * @Author: CaoZixuan
+ * @Date: 2023-09-14
+ */
+public class FaceMatchParam {
+    private String image;
+    private String image_type;
+    private String face_type;
+    private String quality_control;
+    private String liveness_control;
+
+    public String getImage() {
+        return image;
+    }
+
+    public void setImage(String image) {
+        this.image = image;
+    }
+
+    public String getImage_type() {
+        return image_type;
+    }
+
+    public void setImage_type(String image_type) {
+        this.image_type = image_type;
+    }
+
+    public String getFace_type() {
+        return face_type;
+    }
+
+    public void setFace_type(String face_type) {
+        this.face_type = face_type;
+    }
+
+    public String getQuality_control() {
+        return quality_control;
+    }
+
+    public void setQuality_control(String quality_control) {
+        this.quality_control = quality_control;
+    }
+
+    public String getLiveness_control() {
+        return liveness_control;
+    }
+
+    public void setLiveness_control(String liveness_control) {
+        this.liveness_control = liveness_control;
+    }
+}

+ 50 - 0
sop-common/src/main/java/com/qmth/sop/common/sync/FaceApiUtils.java

@@ -0,0 +1,50 @@
+package com.qmth.sop.common.sync;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.qmth.sop.common.been.FaceMatchParam;
+import com.qmth.sop.common.util.FileUtil;
+import com.qmth.sop.common.util.HttpUtil;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description: 百度人脸识别工具类
+ * @Author: CaoZixuan
+ * @Date: 2023-09-14
+ */
+public class FaceApiUtils {
+    public static void faceMatch() throws IOException {
+        // TODO: 2023/9/14 demo 
+        File f1 = new File("E:\\pictures\\wj1.jpeg");
+        File f2 = new File("E:\\pictures\\wj2.jpeg");
+
+        String appId = "test";
+        String uri = "http://192.168.20.253";
+        String url = "/face-api/v3/face/match";
+        String postUrl = uri + url + "?appId=" + appId;
+        List<FaceMatchParam> faceMatchParamList = new ArrayList<>();
+        FaceMatchParam p1 = new FaceMatchParam();
+        p1.setImage(FileUtil.fileToBase64(f1));
+        p1.setImage_type("BASE64");
+        faceMatchParamList.add(p1);
+
+        FaceMatchParam p2 = new FaceMatchParam();
+        p2.setImage(FileUtil.fileToBase64(f2));
+        p2.setImage_type("BASE64");
+        faceMatchParamList.add(p2);
+        String json = JSONArray.toJSONString(faceMatchParamList);
+        System.out.println(json);
+
+        String result = HttpUtil.postJson(postUrl, json, null, null, false);
+        JSONObject jsonObject = JSONObject.parseObject(result);
+        System.out.println(jsonObject);
+    }
+
+    public static void main(String[] args) throws IOException {
+        faceMatch();
+    }
+}

+ 39 - 0
sop-common/src/main/java/com/qmth/sop/common/util/FileUtil.java

@@ -0,0 +1,39 @@
+package com.qmth.sop.common.util;
+
+import org.apache.commons.codec.binary.Base64;
+import org.apache.commons.io.IOUtils;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+/**
+ * @Description:
+ * @Author: CaoZixuan
+ * @Date:
+ */
+public class FileUtil {
+    public static String fileToBase64(File imgFile) {
+        String fileName=imgFile.getName();
+        String suff=fileName.substring(fileName.lastIndexOf(".")+1).toLowerCase();
+        InputStream is = null;
+        byte[] base64Byte;
+        try {
+            base64Byte = new byte[0];
+            byte[] imgByte;
+            is = new FileInputStream(imgFile);
+            imgByte = IOUtils.toByteArray(is);
+            base64Byte = Base64.encodeBase64(imgByte);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        } finally {
+            if (is != null)
+                try {
+                    is.close();
+                } catch (IOException e) {
+                }
+        }
+        return new String(base64Byte);
+    }
+}