Browse Source

批注接口提交

shenhao 4 years ago
parent
commit
811acb8efd

+ 11 - 2
src/main/java/com/ssj/api/controller/ApiHomeworkController.java

@@ -128,6 +128,15 @@ public class ApiHomeworkController extends BaseController {
         ResponseEntity responseEntity = new ResponseEntity();
         Map<String,Object> data=new HashMap<>(2);
         try {
+
+
+            if(Objects.isNull(req.getHomeworkId())){
+                return  responseEntity.failure("请检查作业id传参");
+            }
+            Homework homework = homeworkService.getById(req.getHomeworkId());
+            if(Objects.isNull(homework)){
+                return  responseEntity.failure("请检查作业id传参");
+            }
             //查询作业是否在批改
             int correctNum = homeworkPictureService.findHomeworkIsCorrect(req.getHomeworkId());
             if(correctNum>0){
@@ -135,9 +144,9 @@ public class ApiHomeworkController extends BaseController {
             }
             //分配老师
             homeworkPictureService.allotPlatHomework(req.getHomeworkId(),req.getTeacherId());
-            responseEntity.success(data,"获取分配老师列表成功!");
+            responseEntity.success(data,"分配老师成功!");
         } catch (Exception e) {
-            logger.error("获取分配老师列表异常", e);
+            logger.error("分配老师异常", e);
             responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
         }
         return responseEntity;

+ 13 - 0
src/main/java/com/ssj/api/controller/ApiManagerTeacherController.java

@@ -251,6 +251,19 @@ public class ApiManagerTeacherController extends BaseController {
         }
         return responseEntity;
     }
+    @RequestMapping(value = "/initTeacherPayData", method = RequestMethod.POST)
+    @ApiOperation(value = "手动生成老师薪酬列表",  notes = "手动生成老师薪酬列表")
+    public ResponseEntity initTeacherPayData(@RequestParam(name = "accessToken") String accessToken,String date) {
+        ResponseEntity responseEntity = new ResponseEntity();
+        try {
+            statisticsService.addTeacherSalarysData(date);
+            responseEntity.success("生成数据统计列表成功");
+        } catch (Exception e) {
+            logger.error("数据统计列表异常", e);
+            responseEntity.failure(ResponseConstant.CODE_500, "系统繁忙,请稍后重试");
+        }
+        return responseEntity;
+    }
     @RequestMapping(value = "/errorList", method = RequestMethod.POST)
     @ApiOperation(value = "查看报错列表",  notes = "数据统计列表")
     public ResponseEntity errorList(@RequestParam(name = "accessToken") String accessToken,@RequestBody ListReq req) {

+ 9 - 0
src/main/java/com/ssj/api/domain/vo/statistics/TeacherSalarysVO.java

@@ -29,6 +29,7 @@ public class TeacherSalarysVO {
     private String  otherSalary;
     private String  perkSalary;
     private String  salary;
+    private String teacherId;
 
     public String getWorkDate() {
         return workDate;
@@ -109,4 +110,12 @@ public class TeacherSalarysVO {
     public void setSalary(String salary) {
         this.salary = salary;
     }
+
+    public String getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(String teacherId) {
+        this.teacherId = teacherId;
+    }
 }

+ 5 - 5
src/main/java/com/ssj/dao/sys/homework/dao/impl/HomeworkQueryDaoImpl.java

@@ -289,19 +289,19 @@ public class HomeworkQueryDaoImpl implements HomeworkQueryDao {
         sql.append("(select count(1) from scon_homework_picture a where a.teacher_id = t.user_id and a.is_feedback = 0) as wait_nums  \n ");
         sql.append("from tb_lib_manager t  \n ");
         sql.append("where t.type=30 and t.state = 1 \n ");
-        if(Objects.nonNull(params.get("subject")) && StringUtil.isEmpty(params.get("subject").toString())){
+        if(Objects.nonNull(params.get("subject")) && StringUtil.isNotEmpty(params.get("subject").toString())){
             sql.append(" and t.course_name like concat('%',?,'%')");
             paramList.add(params.get("subject"));
         }
-        if(Objects.nonNull(params.get("teacherId")) && StringUtil.isEmpty(params.get("teacherId").toString())){
+        if(Objects.nonNull(params.get("teacherId")) && StringUtil.isNotEmpty(params.get("teacherId").toString())){
             sql.append(" and t.user_id <> ?");
             paramList.add(params.get("teacherId"));
         }
-        if(Objects.nonNull(params.get("teacherName")) && StringUtil.isEmpty(params.get("teacherName").toString())){
+        if(Objects.nonNull(params.get("teacherName")) && StringUtil.isNotEmpty(params.get("teacherName").toString())){
             sql.append(" and t.name like concat('%',?,'%')");
             paramList.add(params.get("teacherName"));
         }
-        sql.append("order by t.is_online desc  \n ");
+        sql.append("order by t.is_online desc,t.id  \n ");
         return dao.findPage(sql.toString(), paramList.toArray(),initPage,TeacherListVO.class);
     }
 
@@ -347,7 +347,7 @@ public class HomeworkQueryDaoImpl implements HomeworkQueryDao {
         selSQL.append("min(t.is_feedback) as is_feedback\n");
         selSQL.append("from scon_homework_picture t\n");
         selSQL.append("left join scon_homework t14 on t.homework_id = t14.id\n");
-        selSQL.append("left join scon_homework_picture_correct t11 on t.id = t11.homework_picture_id\n");
+        selSQL.append("left join scon_homework_picture_correct t11 on t.id = t11.homework_picture_id and t11.type=8\n");
         selSQL.append("left join tb_lib_vip t12 on t.vip_id = t12.id\n");
         selSQL.append(" where t.teacher_id=? and ((t11.end_time > ? and t.is_feedback=1) or t.is_feedback=0)\n");
         selSQL.append("and t.is_mark in (0,2)\n");

+ 3 - 3
src/main/java/com/ssj/dao/weixin/library/dao/impl/LibJoinQueryDaoImpl.java

@@ -1308,14 +1308,14 @@ public class LibJoinQueryDaoImpl implements ILibJoinQueryDao{
 		StringBuilder selSQL = new StringBuilder();
 		List<Object> queryParams = new ArrayList<Object>();
 		selSQL.append("SELECT a.wait_nums,a.state,a.teacher_id,a.teacher_name,a.wait_max_time,a.today_correct_time,a.efficiency,(ifnull(a.wait_nums,0)+ifnull(a.wait_nums2,0)) as homework_count from ( SELECT  \n");
-		selSQL.append("(SELECT count(DISTINCT a.homework_id) from scon_homework_picture a where a.teacher_id = t.user_id and a.is_mark in (0,2) and a.is_feedback = 0 and  \n" +
-				"homework_id not in (select homework_id  from scon_homework_picture_correct x where x.homework_picture_id = a.id and x.start_time is not null and x.type=8) ) as wait_nums, \n");
+		selSQL.append("(SELECT count(DISTINCT a.homework_id) from scon_homework_picture a left join scon_homework_picture_correct x on x.homework_picture_id = a.id and x.type = 8 where a.teacher_id = t.user_id and a.is_mark in (0,2) and a.is_feedback = 0 and  \n" +
+				"        x.start_time is null and a.homework_id not in (SELECT b.homework_id from scon_homework_picture_correct b where b.homework_id = b.homework_id and type=8 and b.start_time is not null)) as wait_nums, \n");
 		selSQL.append("(SELECT count(DISTINCT a.homework_id) from scon_homework_picture a join scon_homework_picture_correct b on b.homework_picture_id = a.id where a.teacher_id = t.user_id and a.is_mark in (0,2) and b.type=8  \n" +
 				"and ((b.end_time > ? and a.is_feedback=1) or a.is_feedback=0) ) as wait_nums2, \n");
 		queryParams.add(params.get("beginTime"));
 		selSQL.append("(SELECT ifnull(concat(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,min(a.allot_time),NOW())),''),0)   from scon_homework_picture a where a.teacher_id = t.user_id and a.is_mark in (0,2) and a.is_feedback = 0) as wait_max_time, \n");
 		selSQL.append("t.user_id as teacher_id,t.name as teacher_name, \n");
-		selSQL.append("(select ifnull(concat(SEC_TO_TIME(sum(a.correction_time)),''),0) from scon_homework_picture a join scon_homework_picture_correct b on a.id = b.homework_picture_id where a.teacher_id = t.user_id and a.is_mark in (0,2) and a.is_feedback=1 and b.end_time >?) as today_correct_time, \n");
+		selSQL.append("(select ifnull(concat(SEC_TO_TIME(sum(b.correction_time)),''),'00:00:00') from scon_homework_picture a join scon_homework_picture_correct b on a.id = b.homework_picture_id where a.teacher_id = t.user_id and a.is_mark in (0,2) and a.is_feedback=1 and b.end_time >?) as today_correct_time, \n");
 		queryParams.add(params.get("beginTime"));
 		selSQL.append("(select ifnull(concat(SEC_TO_TIME(floor(sum(TIMESTAMPDIFF(SECOND,a.allot_time,b.start_time))/count(1))),''),0) from scon_homework_picture a join scon_homework_picture_correct b on a.id = b.homework_picture_id and b.type=8 where a.teacher_id = t.user_id and a.is_mark in (0,2) and b.start_time is not null and ((a.is_feedback=1 and b.end_time > ?) or a.is_feedback=0)) as efficiency, \n");
 		queryParams.add(params.get("beginTime"));

+ 22 - 16
src/main/java/com/ssj/statistics/dao/impl/StatisticsQueryImpl.java

@@ -45,15 +45,19 @@ public class StatisticsQueryImpl implements IStatisticsQueryDao {
          * accuracy	string	list	正确率
          * errorNums	int	list	报错页数
          */
-
+        sql.append("select a.correctNums,a.overtimeNums, ");
+        sql.append("a.notCorrectNums,a.notCommentNums, ");
+        sql.append("a.repeatNums,concat(a.accuracy,'%') as accuracy,a.errorNums,a.teacherId,a.teacherName,a.subject,a.allSubject ");
+        sql.append(" from (");
         listInfo(params,queryParams,sql);
+        sql.append(" ) a");
         return dao.findPage(sql.toString(),queryParams.toArray(),initPage);
     }
 
     private void listInfo(Map<String, Object> params,List<Object> queryParams,StringBuffer sql){
-        sql.append("select t.teacher_id,t11.name as teacherName,t11.course_name as subject,t11.course_name as allSubject, \n");
-        sql.append(" t.correct_nums as correctNums,t.overtime_nums as overtimeNums,t.not_correct_nums as notCorrectNums, \n");
-        sql.append(" t.not_comment_nums as notCommentNums,t.repeat_nums as repeatNums,t.accuracy,t.error_nums as errorNums \n");
+        sql.append("select t.teacher_id as teacherId,t11.name as teacherName,t11.course_name as subject,t11.course_name as allSubject, \n");
+        sql.append(" sum(t.correct_nums) as correctNums,sum(t.overtime_nums) as overtimeNums,sum(t.not_correct_nums) as notCorrectNums, \n");
+        sql.append(" sum(t.not_comment_nums) as notCommentNums,sum(t.repeat_nums) as repeatNums,round((t.accuracy),2) as accuracy,sum(t.error_nums) as errorNums \n");
         sql.append(" from plat_teacher_statistics t \n");
         sql.append(" left join tb_lib_manager t11 on t.teacher_id = t11.user_id \n");
         sql.append(" where t11.type = 30 \n");
@@ -69,6 +73,8 @@ public class StatisticsQueryImpl implements IStatisticsQueryDao {
             sql.append(" and   t11.name like concat('%',?,'%') ");
             queryParams.add(params.get("teacherName"));
         }
+
+        sql.append(" group by  t11.user_id ");
     }
 
     @Override
@@ -133,9 +139,9 @@ public class StatisticsQueryImpl implements IStatisticsQueryDao {
         errorNums	int	list	报错页数
          */
         StringBuffer sql = new StringBuffer();
-        sql.append("select ifnull(sum(a.overtimeNums),0) as correctTotalNums,ifnull(sum(overtimeNums),0) as overtimeTotalNums, ");
+        sql.append("select ifnull(sum(a.correctNums),0) as correctTotalNums,ifnull(sum(overtimeNums),0) as overtimeTotalNums, ");
         sql.append("ifnull(sum(a.notCorrectNums),0) as notCorrectTotalNums,ifnull(sum(notCommentNums),0) as notCommentTotalNums, ");
-        sql.append("ifnull(sum(a.repeatNums),0) as repeatTotalNums,round(ifnull(avg(accuracy),0),2) as accuracyTotal ");
+        sql.append("ifnull(sum(a.repeatNums),0) as repeatTotalNums,concat(round(ifnull(avg(accuracy),0),2),'%') as accuracyTotal,ifnull(sum(errorNums),0) as errorTotalNums ");
         sql.append(" from (");
         List<Object> queryParams = new ArrayList<>();
         listInfo(params,queryParams,sql);
@@ -171,26 +177,26 @@ public class StatisticsQueryImpl implements IStatisticsQueryDao {
     public List<TeacherSalarysVO> addTeacherSalarysData(String month) {
         StringBuffer sql = new StringBuffer();
         List<Object> queryParams = new ArrayList<>();
-        sql.append("SELECT a.correct_nums,a.teacher_id,a.overtime_nums,a.perk_nums,a.error_nums,a.work_date,a.`month`,a.`year`,FLOOR(a.sum_perk)/a.perk_nums as perk_efficiency,Floor(100*(a.correct_nums-a.error_nums)/a.correct_nums) as accuracy,\n");
-        sql.append("(a.perk_nums-a.error_nums)*0.15 as perk_salary,(a.correct_nums-a.perk_nums-a.error_nums)*0.15 as other_salary,a.create_time\n" );
+        sql.append("SELECT a.correct_nums,a.teacher_id,a.overtime_nums,a.perk_nums,a.error_nums,a.work_date,FLOOR(a.sum_perk)/a.perk_nums as perk_efficiency,Floor(100*(a.correct_nums-a.error_nums)/a.correct_nums) as accuracy,\n");
+        sql.append(" case when a.perk_nums<134 and a.sum_perk<120 then 20 else (a.perk_nums-a.error_nums)*0.15 end as perk_salary\n" );
+        sql.append(",(a.correct_nums-a.perk_nums-a.error_nums)*0.15 as other_salary\n" );
         sql.append("from (\n" );
         sql.append("SELECT\n" );
         sql.append("count(1) as correct_nums,\n" );
-        sql.append("0 as overtime_nums,\n" );
-        sql.append("count(IF(DATE_FORMAT(t11.end_time,'%H:%s')>='18:00' and DATE_FORMAT(t11.end_time,'%H:%s')<='20:00',TRUE,null)) as perk_nums,\n" );
+        sql.append("count(if((DATE_FORMAT(t11.create_time,'%i:%s')>='20:30' and DATE_FORMAT(now(),'%Y-%m-%d %H%i:%s')>concat(DATE_FORMAT(DATE_ADD(t11.create_time,interval 1 day),'%Y-%m-%d'),' 12:00:00'))\n");
+        sql.append(" or (DATE_FORMAT(t11.create_time,'%i:%s')<'20:30' and DATE_FORMAT(now(),'%Y-%m-%d %H%i:%s')>concat(DATE_FORMAT(t11.create_time,'%Y-%m-%d'),' 23:59:59')),true,null)) as overtime_nums,\n");
+        sql.append("count(IF(DATE_FORMAT(t.end_time,'%H:%s')>='18:00' and DATE_FORMAT(t.end_time,'%H:%s')<='20:00',TRUE,null)) as perk_nums,\n" );
         sql.append("count(IF(t.is_check_error=1,TRUE,null)) as error_nums,\n" );
-        sql.append("DATE_FORMAT(t.start_time,'%Y-%m-%d') as work_date,\n" );
-        sql.append("2 as month,\n" );
-        sql.append("2021 as year,\n" );
-        sql.append("NOW() as create_time,\n" );
-        sql.append("sum(IF(DATE_FORMAT(t11.end_time,'%H:%s')>='18:00' and DATE_FORMAT(t11.end_time,'%H:%s')<='20:00',t.correction_time,0)) as sum_perk,\n" );
+        sql.append("DATE_FORMAT(t.end_time,'%Y-%m-%d') as work_date,\n" );
+        sql.append("sum(IF(DATE_FORMAT(t.end_time,'%H:%s')>='18:00' and DATE_FORMAT(t.end_time,'%H:%s')<='20:00',t.correction_time,0)) as sum_perk,\n" );
         sql.append("t11.teacher_id,\n" );
         sql.append("t.end_time,\n" );
         sql.append("t.start_time \n" );
         sql.append("from scon_homework_picture_correct t \n" );
         sql.append("join scon_homework_picture t11 on t.homework_picture_id = t11.id\n" );
         sql.append("where t.type=8 and t11.is_mark in(0,2) and t11.is_feedback=1 \n" );
-        sql.append("and t.end_time like '%2021-02%'\n" );
+        sql.append("and t.end_time like concat('%',?,'%')\n" );
+        queryParams.add(month);
         sql.append("GROUP BY t11.teacher_id\n" );
         sql.append(") a");
         return dao.findList(sql.toString(),queryParams.toArray(),TeacherSalarysVO.class);

+ 10 - 0
src/main/java/com/ssj/statistics/entity/TeacherPay.java

@@ -5,6 +5,7 @@ import com.ssj.bean.common.framework.core.domain.BaseEntity;
 import javax.persistence.Entity;
 import javax.persistence.Table;
 import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * @author sh
@@ -41,6 +42,7 @@ public class TeacherPay extends BaseEntity {
     private String otherSalary;
     private BigDecimal salary;
     private String teacherId;
+    private Date createTime;
 
     public Integer getCorrectNums() {
         return correctNums;
@@ -145,4 +147,12 @@ public class TeacherPay extends BaseEntity {
     public void setTeacherId(String teacherId) {
         this.teacherId = teacherId;
     }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
 }

+ 22 - 1
src/main/java/com/ssj/statistics/service/impl/StatisticsServiceImpl.java

@@ -8,9 +8,12 @@ import com.ssj.framework.core.common.service.BaseServiceImpl;
 import com.ssj.framework.weixin.util.DateUtil;
 import com.ssj.statistics.dao.IStatisticsDao;
 import com.ssj.statistics.dao.IStatisticsQueryDao;
+import com.ssj.statistics.entity.TeacherPay;
 import com.ssj.statistics.service.IStatisticsService;
+import com.ssj.statistics.service.ITeacherPayService;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -18,6 +21,7 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.repository.PagingAndSortingRepository;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -35,6 +39,9 @@ public class StatisticsServiceImpl  extends BaseServiceImpl<PlatTeacherStatistic
     @Autowired
     private IStatisticsQueryDao queryDao;
 
+    @Autowired
+    private ITeacherPayService payService;
+
     @Override
     public PagingAndSortingRepository<PlatTeacherStatistics, String> getDao() {
         return dao;
@@ -97,8 +104,22 @@ public class StatisticsServiceImpl  extends BaseServiceImpl<PlatTeacherStatistic
     @Override
     public void addTeacherSalarysData(String month) {
         if(StringUtils.isBlank(month)){
-            month = DateUtil.format_yyyyMMdd(DateUtil.addMonth(-1));
+            month = DateFormatUtils.format(DateUtil.addMonth(-1), "yyyy-MM");
         }
         List<TeacherSalarysVO> list = queryDao.addTeacherSalarysData(month);
+        if(Objects.nonNull(list) && list.size()>0){
+            String monthTemp = month.split("-")[1];
+            int month2 = monthTemp.startsWith("0")?Integer.parseInt(monthTemp.substring(1)):Integer.parseInt(monthTemp);
+            int year =Integer.parseInt(month.split("-")[0]) ;
+            for(TeacherSalarysVO vo:list){
+                TeacherPay pay = new TeacherPay();
+                BeanUtils.copyProperties(vo,pay);
+                pay.setMonth(month2);
+                pay.setYear(year);
+                pay.setCreateTime(new Date());
+                pay.setSalary(new BigDecimal(pay.getPerkSalary()).add(new BigDecimal(pay.getOtherSalary())));
+                payService.save(pay);
+            }
+        }
     }
 }