瀏覽代碼

用工实名制接口集成。

zhengqiang 5 年之前
父節點
當前提交
77fa5843b6

+ 22 - 0
common/src/main/java/com/jpsoft/smart/modules/base/dao/ProjectInfoDAO.java

@@ -0,0 +1,22 @@
+package com.jpsoft.smart.modules.base.dao;
+
+import java.util.List;
+import org.springframework.stereotype.Repository;
+import com.jpsoft.smart.modules.base.entity.ProjectInfo;
+import java.util.Map;
+import com.jpsoft.smart.modules.common.dto.Sort;
+
+@Repository
+public interface ProjectInfoDAO {
+	int insert(ProjectInfo entity);
+	int update(ProjectInfo entity);
+	int exist(String id);
+	ProjectInfo get(String id);
+	int delete(String id);
+	List<ProjectInfo> list();
+	List<ProjectInfo> search(Map<String,Object> searchParams,List<Sort> sortList);
+
+    ProjectInfo findOneByCompanyId(String companyId);
+
+	ProjectInfo findOneByProjectCode(String projectCode);
+}

+ 79 - 0
common/src/main/java/com/jpsoft/smart/modules/base/entity/ProjectInfo.java

@@ -0,0 +1,79 @@
+package com.jpsoft.smart.modules.base.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.math.BigDecimal;
+
+import org.springframework.format.annotation.DateTimeFormat;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+/**
+ * 描述:base_project_info的实体类
+ */
+@Data
+@ApiModel(value = "base_project_info的实体类")
+public class ProjectInfo {
+    /**
+     *
+     */
+    @ApiModelProperty(value = "")
+    private String id;
+    /**
+     * 项目编码
+     */
+    @ApiModelProperty(value = "项目编码")
+    private String projectCode;
+    /**
+     * 接口ID
+     */
+    @ApiModelProperty(value = "接口ID")
+    private String appId;
+    /**
+     * 接口秘钥
+     */
+    @ApiModelProperty(value = "接口秘钥")
+    private String appSecret;
+    /**
+     * 单位编号
+     */
+    @ApiModelProperty(value = "单位编号")
+    private String companyId;
+    /**
+     * 企业统一社会信用代码
+     */
+    @ApiModelProperty(value = "企业统一社会信用代码")
+    private String socialCreditCode;
+    /**
+     * 创建人
+     */
+    @ApiModelProperty(value = "创建人")
+    private String createBy;
+    /**
+     * 创建时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date createTime;
+    /**
+     * 更新人
+     */
+    @ApiModelProperty(value = "更新人")
+    private String updateBy;
+    /**
+     * 更新时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
+    @ApiModelProperty(value = "更新时间")
+    private Date updateTime;
+    /**
+     * 是否删除
+     */
+    @ApiModelProperty(value = "是否删除")
+    private Boolean delFlag;
+}

+ 19 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/ProjectInfoService.java

@@ -0,0 +1,19 @@
+package com.jpsoft.smart.modules.base.service;
+
+import java.util.List;
+import java.util.Map;
+import com.jpsoft.smart.modules.base.entity.ProjectInfo;
+import com.github.pagehelper.Page;
+import com.jpsoft.smart.modules.common.dto.Sort;
+
+public interface ProjectInfoService {
+	ProjectInfo get(String id);
+	boolean exist(String id);
+	int insert(ProjectInfo model);
+	int update(ProjectInfo model);
+	int delete(String id);
+	List<ProjectInfo> list();
+	Page<ProjectInfo> pageSearch(Map<String, Object> searchParams,int pageNum,int pageSize,boolean count,List<Sort> sortList);
+    ProjectInfo findOneByCompanyId(String companyId);
+    ProjectInfo findOneByProjectCode(String projectCode);
+}

+ 80 - 0
common/src/main/java/com/jpsoft/smart/modules/base/service/impl/ProjectInfoServiceImpl.java

@@ -0,0 +1,80 @@
+package com.jpsoft.smart.modules.base.service.impl;
+
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import javax.annotation.Resource;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+import com.jpsoft.smart.modules.base.dao.ProjectInfoDAO;
+import com.jpsoft.smart.modules.base.entity.ProjectInfo;
+import com.jpsoft.smart.modules.base.service.ProjectInfoService;
+import com.github.pagehelper.Page;
+import com.jpsoft.smart.modules.common.dto.Sort;
+import com.github.pagehelper.PageHelper;
+
+@Transactional
+@Component(value="projectInfoService")
+public class ProjectInfoServiceImpl implements ProjectInfoService {
+	@Resource(name="projectInfoDAO")
+	private ProjectInfoDAO projectInfoDAO;
+
+	@Override
+	public ProjectInfo get(String id) {
+		// TODO Auto-generated method stub
+		return projectInfoDAO.get(id);
+	}
+
+	@Override
+	public int insert(ProjectInfo model) {
+		// TODO Auto-generated method stub
+		//model.setId(UUID.randomUUID().toString());
+		
+		return projectInfoDAO.insert(model);
+	}
+
+	@Override
+	public int update(ProjectInfo model) {
+		// TODO Auto-generated method stub
+		return projectInfoDAO.update(model);		
+	}
+
+	@Override
+	public int delete(String id) {
+		// TODO Auto-generated method stub
+		return projectInfoDAO.delete(id);
+	}
+
+	@Override
+	public boolean exist(String id) {
+		// TODO Auto-generated method stub
+		int count = projectInfoDAO.exist(id);
+		
+		return count > 0 ? true : false;
+	}
+	
+	@Override
+	public List<ProjectInfo> list() {
+		// TODO Auto-generated method stub
+		return projectInfoDAO.list();
+	}
+		
+	@Override
+	public Page<ProjectInfo> pageSearch(Map<String, Object> searchParams, int pageNumber, int pageSize,boolean count,List<Sort> sortList) {
+        Page<ProjectInfo> page = PageHelper.startPage(pageNumber,pageSize,count).doSelectPage(()->{
+            projectInfoDAO.search(searchParams,sortList);
+        });
+        
+        return page;
+	}
+
+	@Override
+	public ProjectInfo findOneByCompanyId(String companyId) {
+		return projectInfoDAO.findOneByCompanyId(companyId);
+	}
+
+	@Override
+	public ProjectInfo findOneByProjectCode(String projectCode) {
+		return projectInfoDAO.findOneByProjectCode(projectCode);
+	}
+}

+ 3 - 1
common/src/main/java/com/jpsoft/smart/modules/realname/dto/WorkerAttendanceDTO.java

@@ -6,9 +6,11 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import org.codehaus.jackson.annotate.JsonIgnore;
 
+import java.io.Serializable;
+
 @NoArgsConstructor
 @Data
-public class WorkerAttendanceDTO {
+public class WorkerAttendanceDTO implements Serializable {
 
     /**
      * CONTRACTTYPE : ZD420105201906220005717311

+ 2 - 2
common/src/main/resources/mapper/base/ProjectInfo.xml

@@ -104,11 +104,11 @@
             ${sort.name} ${sort.order}
         </foreach>
     </select>
-    <select id="findOneByCompanyId" resultMap="ProjectInfoMap">
+    <select id="findOneByCompanyId" parameterType="string" resultMap="ProjectInfoMap">
         select *
         from base_project_info where company_id=#{0} and del_flag=0 limit 1
     </select>
-    <select id="findOneByProjectCode" resultMap="ProjectInfoMap">
+    <select id="findOneByProjectCode" parameterType="string" resultMap="ProjectInfoMap">
         select *
         from base_project_info where project_code=#{0} and del_flag=0 limit 1
     </select>

+ 21 - 13
lapi/src/main/java/com/jpsoft/smart/lapi/handler/PersonVerificationHandler.java

@@ -10,6 +10,7 @@ import com.jpsoft.smart.modules.base.entity.PersonInfo;
 import com.jpsoft.smart.modules.base.entity.ProjectInfo;
 import com.jpsoft.smart.modules.base.service.PersonDeviceFilterLogService;
 import com.jpsoft.smart.modules.base.service.PersonDeviceLogService;
+import com.jpsoft.smart.modules.base.service.PersonInfoService;
 import com.jpsoft.smart.modules.base.service.ProjectInfoService;
 import com.jpsoft.smart.modules.business.service.WorkAttendanceService;
 import com.jpsoft.smart.modules.common.utils.AESUtil;
@@ -67,6 +68,9 @@ public class PersonVerificationHandler extends SimpleChannelInboundHandler<Perso
     @Autowired
     private ProjectInfoService projectInfoService;
 
+    @Autowired
+    private PersonInfoService personInfoService;
+
     @Autowired
     RabbitTemplate rabbitTemplate;
 
@@ -188,22 +192,26 @@ public class PersonVerificationHandler extends SimpleChannelInboundHandler<Perso
             if(personInfo.getId()!=null && personInfo.getId()!=0L) {
                 workAttendanceService.punchIn(personInfo.getId(), fTemperature, recordDate);
 
-                //查询是否关联了项目,如果是则需要上传到第三方服务器
-                ProjectInfo projectInfo = projectInfoService.findOneByCompanyId(personInfo.getCompanyId());
+                PersonInfo destPerson = personInfoService.get(personInfo.getId());
 
-                if(StringUtils.isNotEmpty(personInfo.getIdCard())
-                && projectInfo!=null
-                && StringUtils.isNotEmpty(projectInfo.getAppId())
-                && StringUtils.isNotEmpty(projectInfo.getAppSecret())){
-                    WorkerAttendanceDTO dto = new WorkerAttendanceDTO();
+                if(destPerson!=null) {
+                    //查询是否关联了项目,如果是则需要上传到第三方服务器
+                    ProjectInfo projectInfo = projectInfoService.findOneByCompanyId(destPerson.getCompanyId());
 
-                    dto.setProjectCode(projectInfo.getProjectCode());
-                    dto.setIdNumber(AESUtil.encrypt(personInfo.getIdCard(),projectInfo.getAppSecret()));
-                    dto.setSocialCreditCode(projectInfo.getSocialCreditCode());
-                    dto.setStartTime(new DateTime(date).toString("yyy-MM-dd HH:mm:ss"));
-                    dto.setSignDate(new DateTime(date).toString("yyy-MM-dd"));
+                    if (StringUtils.isNotEmpty(destPerson.getIdCard())
+                            && projectInfo != null
+                            && StringUtils.isNotEmpty(projectInfo.getAppId())
+                            && StringUtils.isNotEmpty(projectInfo.getAppSecret())) {
+                        WorkerAttendanceDTO dto = new WorkerAttendanceDTO();
 
-                    rabbitTemplate.convertAndSend("importImageExchange", "syncWorkerAttendence", dto);
+                        dto.setProjectCode(projectInfo.getProjectCode());
+                        dto.setIdNumber(destPerson.getIdCard());
+                        dto.setSocialCreditCode(projectInfo.getSocialCreditCode());
+                        dto.setStartTime(new DateTime(date).toString("yyy-MM-dd HH:mm:ss"));
+                        dto.setSignDate(new DateTime(date).toString("yyy-MM-dd"));
+
+                        rabbitTemplate.convertAndSend("importImageExchange", "syncWorkerAttendence", dto);
+                    }
                 }
             }
         }

+ 3 - 1
web/src/main/java/com/jpsoft/smart/listener/RealnameSysListener.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.jpsoft.smart.modules.base.entity.ProjectInfo;
 import com.jpsoft.smart.modules.base.service.CompanyInfoService;
 import com.jpsoft.smart.modules.base.service.ProjectInfoService;
+import com.jpsoft.smart.modules.common.utils.AESUtil;
 import com.jpsoft.smart.modules.realname.dto.WorkerAttendanceDTO;
 import com.jpsoft.smart.modules.realname.http.RealnameSysRequest;
 import com.jpsoft.smart.modules.sys.entity.SysLog;
@@ -51,6 +52,7 @@ public class RealnameSysListener {
                 JSONObject projectWorker = queryProjectWorker(projectInfo, dto.getIdNumber());
 
                 if (projectWorker != null) {
+                    dto.setIdNumber(AESUtil.encrypt(dto.getIdNumber(), projectInfo.getAppSecret()));
                     dto.setContractType(projectWorker.getString("contracttype"));
 
                     List<WorkerAttendanceDTO> dtoList = new ArrayList<>();
@@ -58,7 +60,7 @@ public class RealnameSysListener {
                     String jsonStr = JSONObject.toJSONString(dtoList);
 
                     JSONObject response = request.sendPost(projectInfo.getAppId(), projectInfo.getAppSecret(), uploadUrl, "WorkerAttendance.Add", jsonStr);
-                    String remark = response.getString("data");
+                    String remark = response.getString("message");
 
                     sysLog.setData(jsonStr);
                     sysLog.setRemark(remark);