Przeglądaj źródła

增加考评相关接口

chenwen 3 lat temu
rodzic
commit
9f7f5e4c1f

+ 80 - 0
src/main/java/com/jpsoft/proj/kpi/controller/AssessController.java

@@ -0,0 +1,80 @@
+package com.jpsoft.proj.kpi.controller;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Pattern;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
+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 com.jpsoft.proj.kpi.service.AssessService;
+import com.jpsoft.proj.model.AssessDtl;
+import com.jpsoft.proj.utils.MapUtils;
+import com.jpsoft.proj.utils.RespVO;
+import com.jpsoft.proj.utils.RespVOBuilder;
+
+@RestController
+@RequestMapping("/**/api")
+@Validated
+public class AssessController {
+
+	@Autowired
+	private AssessService  service;
+	
+	/**
+	   * 加载某级领导对某个员工的月评
+	 * @param usId
+	 * @param evaUsId
+	 * @param assessMonth
+	 * @return
+	 */
+	@GetMapping("/loadMonthAssess")
+	public RespVO loadMonthAssess(@NotBlank(message = "员工编号不能为空") String usId,@NotBlank(message = "考评领导编号不能为空") String evaUsId,@NotNull(message = "考评月份不能为空") @Pattern(regexp="^\\d{4}-\\d{2}$",message = "考评月份格式不正确:yyyy-MM") String assessMonth) {
+		return RespVOBuilder.ok(service.loadMonthAssess(usId,evaUsId,assessMonth));
+	}
+	
+	/**
+	   * 保存某级领导对某个员工的月评
+	 * @param assessDtls
+	 * @return
+	 */
+	@PostMapping("/saveMonthAssess")
+	public RespVO saveMonthAssess(@RequestBody List<AssessDtl> assessDtls) {
+		if(assessDtls==null) {
+			return RespVOBuilder.error("缺少数据");
+		}
+		for(AssessDtl dtl : assessDtls) {
+			service.saveMonthAssess(dtl);
+		}
+		return RespVOBuilder.ok();
+	}
+	
+	/**
+	   * 加载某员工的考评项目模板(目前模板只与被考核人的岗位相关)
+	 * @param usId
+	 * @return
+	 */
+	public RespVO loadAssessTemplate(@NotBlank(message = "员工编号不能为空") String usId) {
+		List<Map<String,Object>>  assessProjects=service.loadAssessProjects(usId);
+		if(assessProjects==null||assessProjects.size()==0) {
+			return RespVOBuilder.error("未找到适用的考评模板");
+		}
+		Set<String>  projectIds=new HashSet<String>(assessProjects.size());
+		for(Map<String,Object> proj : assessProjects) {
+			projectIds.add(String.valueOf(proj.get("id")));
+		}
+		List<Map<String,Object>> assessProjectDtl=service.loadAssessProjectsDtl(projectIds);
+		
+		return RespVOBuilder.ok(MapUtils.builder("projects",assessProjects,"dtl",assessProjectDtl));
+	}
+}

+ 67 - 0
src/main/java/com/jpsoft/proj/kpi/service/AssessService.java

@@ -0,0 +1,67 @@
+package com.jpsoft.proj.kpi.service;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.jpsoft.framework.dao.core.SpringJdbcDAO;
+import com.jpsoft.proj.model.AssessDtl;
+
+@Service
+public class AssessService {
+
+	@Autowired
+	private SpringJdbcDAO  dao;
+	
+	
+	/**
+	   * 根据员工岗位加载其适用的考评项目(工作量、工作态度等)
+	 * @param usId
+	 * @return
+	 */
+	public List<Map<String,Object>> loadAssessProjects(String usId){
+		StringBuilder sql=new StringBuilder();
+		sql.append("select ap.* from sys_user  su ");
+		sql.append(" inner join post p on su.postid=p.id and p.delflag=0 ");
+		sql.append(" inner join assTemplate t on p.type=t.id and t.delflag=0 ");
+		sql.append(" inner join assproject  ap on ap.fid=t.id and ap.delflag=0 ");
+		sql.append(" where su.delflag=0  and su.id=? ");
+		sql.append(" order by ap.id ");
+		return dao.queryForListMap(sql.toString(), usId);
+	}
+	
+	public List<Map<String,Object>> loadAssessProjectsDtl(Set<String> fids){
+		String fidstr=StringUtils.join(fids, ",");
+		String sql="select * from assoptions where fid in("+fidstr+")";
+		return dao.queryForListMap(sql);
+	}
+	
+	/**
+	   * 加载某级领导对某个员工的月评
+	 * @param usId
+	 * @param evaUsId
+	 * @param assessMonth
+	 * @return
+	 */
+	public List<AssessDtl> loadMonthAssess(String usId,String evaUsId,String assessMonth) {
+		String sql="select * from incentive where userid=? and evauserid=? and left(date,7)=?";
+		return dao.queryForListPojo(sql, AssessDtl.class, usId,evaUsId,assessMonth);
+	}
+	
+	/**
+	   * 保存上级对员工的月度考评
+	 * @param assessDtl
+	 */
+	public void saveMonthAssess(AssessDtl  assessDtl) {
+		delSameMonthAssess(assessDtl.getUserid(),assessDtl.getEvauserid(),assessDtl.getName(),assessDtl.getDate());
+	}
+	
+	private void delSameMonthAssess(Integer usId,Integer evaUsId,String assessItem,String assessMonth) {
+		String sql="delete from incentive where userid=? and evauserid=? and name=? and left(date,7)=?";
+		dao.getJdbcTemplate().update(sql, usId,evaUsId,assessItem,assessMonth);
+	}
+}

+ 106 - 0
src/main/java/com/jpsoft/proj/model/AssessDtl.java

@@ -0,0 +1,106 @@
+package com.jpsoft.proj.model;
+
+import java.util.Date;
+
+public class AssessDtl {
+
+	private Integer userid;
+	
+	private Integer evauserid;
+	
+	private String date;
+	
+	private Integer  type;
+	
+	private String name;
+	
+	private String text;
+	
+	private Double value;
+	
+	private String remark;
+	
+	private Integer lv;
+	
+	private Date createtime;
+
+	public Integer getUserid() {
+		return userid;
+	}
+
+	public void setUserid(Integer userid) {
+		this.userid = userid;
+	}
+
+	public Integer getEvauserid() {
+		return evauserid;
+	}
+
+	public void setEvauserid(Integer evauserid) {
+		this.evauserid = evauserid;
+	}
+
+	public String getDate() {
+		return date;
+	}
+
+	public void setDate(String date) {
+		this.date = date;
+	}
+
+	public Integer getType() {
+		return type;
+	}
+
+	public void setType(Integer type) {
+		this.type = type;
+	}
+
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getText() {
+		return text;
+	}
+
+	public void setText(String text) {
+		this.text = text;
+	}
+
+	public Double getValue() {
+		return value;
+	}
+
+	public void setValue(Double value) {
+		this.value = value;
+	}
+
+	public String getRemark() {
+		return remark;
+	}
+
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+
+	public Integer getLv() {
+		return lv;
+	}
+
+	public void setLv(Integer lv) {
+		this.lv = lv;
+	}
+
+	public Date getCreatetime() {
+		return createtime;
+	}
+
+	public void setCreatetime(Date createtime) {
+		this.createtime = createtime;
+	}
+}