Merge branch 'main' of http://192.168.0.56:3000/bonus/gz_att
This commit is contained in:
commit
c119c328b4
|
|
@ -34,20 +34,70 @@ public class AttExceptionHandleController extends BaseController {
|
||||||
private AttExceptionHandleService attExceptionHandle;
|
private AttExceptionHandleService attExceptionHandle;
|
||||||
|
|
||||||
@RequiresPermissions("att:exception:query")
|
@RequiresPermissions("att:exception:query")
|
||||||
@GetMapping("/getAttExceptionList")
|
@GetMapping("/list")
|
||||||
@Log(title = "异常处理->异常数据->列表查询", businessType = BusinessType.QUERY)
|
@Log(title = "异常处理->轮休临时外出异常数据->列表查询", businessType = BusinessType.QUERY)
|
||||||
public TableDataInfo getAttExceptionList(AttExceptionBean data) {
|
public TableDataInfo list(AttExceptionBean data) {
|
||||||
startPage();
|
startPage();
|
||||||
|
// List<AttExceptionBean> list = attExceptionHandle.selectAttExceptionList(data);
|
||||||
return attExceptionHandle.selectAttExceptionList(data);
|
return attExceptionHandle.selectAttExceptionList(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresPermissions("att:exception:query")
|
@RequiresPermissions("att:exception:query")
|
||||||
@GetMapping("/getAttExceptionListByMonth")
|
@GetMapping("/getDetailException")
|
||||||
@Log(title = "异常处理->异常报表->列表查询", businessType = BusinessType.QUERY)
|
@Log(title = "异常处理->轮休临时外出异常报表->列表查询", businessType = BusinessType.QUERY)
|
||||||
public TableDataInfo getAttExceptionListByMonth(AttExceptionBean data) {
|
public TableDataInfo getDetailException(AttExceptionBean data) {
|
||||||
startPage();
|
startPage();
|
||||||
List<AttExceptionBean> list = attExceptionHandle.getDetailException(data);
|
List<AttExceptionBean> list = attExceptionHandle.getDetailException(data);
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("att:exception:query")
|
||||||
|
@GetMapping("/getDetailExceptionRest")
|
||||||
|
@Log(title = "异常处理->轮休异常报表未申请详情->列表查询", businessType = BusinessType.QUERY)
|
||||||
|
public TableDataInfo getDetailExceptionRest(AttDetailLeaveBean data) {
|
||||||
|
startPage();
|
||||||
|
List<AttDetailLeaveBean> list = attExceptionHandle.getDetailExceptionRest(data);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("att:exception:query")
|
||||||
|
@GetMapping("/getDetailExceptionOut")
|
||||||
|
@Log(title = "异常处理->临时外出异常报表未申请详情->列表查询", businessType = BusinessType.QUERY)
|
||||||
|
public TableDataInfo getDetailExceptionOut(AttDetailLeaveBean data) {
|
||||||
|
startPage();
|
||||||
|
List<AttDetailLeaveBean> list = attExceptionHandle.getDetailExceptionOut(data);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("att:exception:query")
|
||||||
|
@GetMapping("/getDetailExceptionAll")
|
||||||
|
@Log(title = "异常处理->轮休和临时外出异常报表未申请详情->列表查询", businessType = BusinessType.QUERY)
|
||||||
|
public TableDataInfo getDetailExceptionAll(AttDetailLeaveBean data) {
|
||||||
|
startPage();
|
||||||
|
List<AttDetailLeaveBean> list = attExceptionHandle.getDetailExceptionAll(data);
|
||||||
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("att:exception:query")
|
||||||
|
@GetMapping("/export")
|
||||||
|
public void export(HttpServletResponse response, AttExceptionBean data) {
|
||||||
|
try{
|
||||||
|
List<AttExceptionBean> list = attExceptionHandle.getDetailException(data);
|
||||||
|
ExcelUtil<AttExceptionBean> util = new ExcelUtil<AttExceptionBean>(AttExceptionBean.class);
|
||||||
|
util.exportExcel(response, list, "轮休临时外出异常报表");
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error(e.toString(),e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批提醒
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/examineRemind")
|
||||||
|
@Log(title = "异常处理->临时外出异常报表->审批提醒", businessType = BusinessType.QUERY)
|
||||||
|
public AjaxResult examineRemind(@Validated @RequestBody AttExRemindBean vo) {
|
||||||
|
return attExceptionHandle.examineRemind(vo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,48 @@
|
||||||
|
package com.bonus.system.att.controller;
|
||||||
|
|
||||||
|
import com.bonus.common.core.web.controller.BaseController;
|
||||||
|
import com.bonus.common.core.web.page.TableDataInfo;
|
||||||
|
import com.bonus.common.log.annotation.Log;
|
||||||
|
import com.bonus.common.log.enums.BusinessType;
|
||||||
|
import com.bonus.common.security.annotation.RequiresPermissions;
|
||||||
|
import com.bonus.system.att.entity.AttExceptionBean;
|
||||||
|
import com.bonus.system.att.service.AttExceptionHandleService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轮休临时外出异常数据
|
||||||
|
*
|
||||||
|
* @author hongchao
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/attExceptionHandle")
|
||||||
|
@Slf4j
|
||||||
|
public class AttExceptionHandleController2 extends BaseController {
|
||||||
|
|
||||||
|
/*@Resource(name = "attExceptionHandle")
|
||||||
|
private AttExceptionHandleService attExceptionHandle;
|
||||||
|
|
||||||
|
@RequiresPermissions("att:exception:query")
|
||||||
|
@GetMapping("/getAttExceptionList")
|
||||||
|
@Log(title = "异常处理->异常数据->列表查询", businessType = BusinessType.QUERY)
|
||||||
|
public TableDataInfo getAttExceptionList(AttExceptionBean data) {
|
||||||
|
startPage();
|
||||||
|
return attExceptionHandle.selectAttExceptionList(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequiresPermissions("att:exception:query")
|
||||||
|
@GetMapping("/getAttExceptionListByMonth")
|
||||||
|
@Log(title = "异常处理->异常报表->列表查询", businessType = BusinessType.QUERY)
|
||||||
|
public TableDataInfo getAttExceptionListByMonth(AttExceptionBean data) {
|
||||||
|
startPage();
|
||||||
|
List<AttExceptionBean> list = attExceptionHandle.getDetailException(data);
|
||||||
|
return getDataTable(list);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -18,9 +18,19 @@ public interface AttExceptionHandleDao {
|
||||||
* @param data 参数
|
* @param data 参数
|
||||||
* @return list bean
|
* @return list bean
|
||||||
*/
|
*/
|
||||||
List<AttExceptionBean> selectAttExceptionList(AttExceptionBean data);
|
AttExceptionBean selectAttExceptionList(AttExceptionBean data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轮休临时外出异常月份
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<Map<String,Object>> selectAttExceptionMonth();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轮休临时外出异常未处理月份
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<Map<String,Object>> selectAttExceptionNoHandleMonth();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取轮休临时外出异常数据详情
|
* 获取轮休临时外出异常数据详情
|
||||||
|
|
@ -29,4 +39,52 @@ public interface AttExceptionHandleDao {
|
||||||
*/
|
*/
|
||||||
List<AttExceptionBean> getDetailException(AttExceptionBean data);
|
List<AttExceptionBean> getDetailException(AttExceptionBean data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取轮休临时外出异常数据详情
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
List<AttExceptionBean> getDetailAllException(AttExceptionBean data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取轮休异常报表未申请详情
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
List<AttDetailLeaveBean> getDetailExceptionRest(AttDetailLeaveBean data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取临时外出异常报表未申请详情
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
List<AttDetailLeaveBean> getDetailExceptionOut(AttDetailLeaveBean data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取轮休和临时外出异常报表未申请详情
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
List<AttDetailLeaveBean> getDetailExceptionAll(AttDetailLeaveBean data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取部门负责人id数据
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
AttExRemindBean getOrgUserId(AttExRemindBean data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批提醒
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int examineRemind(AttExRemindBean vo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批提醒
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
int examineRemindTemp(AttExRemindBean vo);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.bonus.system.att.dao;
|
||||||
|
|
||||||
|
import com.bonus.system.att.entity.AttExceptionBean;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轮休临时外出异常数据-数据访问层
|
||||||
|
* @author hongchao
|
||||||
|
*/
|
||||||
|
@Repository("attExceptionHandleDao2")
|
||||||
|
public interface AttExceptionHandleDao2 {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取轮休临时外出异常数据
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
List<AttExceptionBean> selectAttExceptionList(AttExceptionBean data);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取轮休临时外出异常数据详情
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
List<AttExceptionBean> getDetailException(AttExceptionBean data);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -44,6 +44,17 @@ public class AttExceptionBean {
|
||||||
private Integer orgId;
|
private Integer orgId;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 考勤月份的当月一号
|
||||||
|
*/
|
||||||
|
private String attCurrentMonthFirst;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 考勤月份的次月一号
|
||||||
|
*/
|
||||||
|
private String attNextMonthFirst;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 异常数量
|
* 异常数量
|
||||||
*/
|
*/
|
||||||
|
|
@ -60,31 +71,16 @@ public class AttExceptionBean {
|
||||||
private int noFinishCount;
|
private int noFinishCount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 迟到数量
|
* 轮休未审批条数
|
||||||
*/
|
*/
|
||||||
private int lateCount;
|
@Excel(name = "轮休未审批条数")
|
||||||
|
private int errorRestCount;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 早退数量
|
* 临时外出未审批条数
|
||||||
*/
|
*/
|
||||||
private int earlyCount;
|
@Excel(name = "临时外出未审批条数")
|
||||||
|
private int errorOutCount;
|
||||||
/**
|
|
||||||
* 旷工数量
|
|
||||||
*/
|
|
||||||
private int absenteeismCount;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 打卡地异常数量
|
|
||||||
*/
|
|
||||||
private int addressCount;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 出入异常数量
|
|
||||||
*/
|
|
||||||
private int goOutCount;
|
|
||||||
|
|
||||||
|
|
||||||
private int[] orgIds;
|
private int[] orgIds;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,94 @@
|
||||||
|
package com.bonus.system.att.entity;
|
||||||
|
|
||||||
|
import com.bonus.common.core.annotation.Excel;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 月报表实体类
|
||||||
|
* @author zys
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AttExceptionBean2 {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编号
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
@Excel(name = "姓名")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户编号
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 考勤月份
|
||||||
|
*/
|
||||||
|
@Excel(name = "考勤月份")
|
||||||
|
private String attCurrentMonth;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 所属部门
|
||||||
|
*/
|
||||||
|
@Excel(name = "所属部门")
|
||||||
|
private String orgName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门编号
|
||||||
|
*/
|
||||||
|
private Integer orgId;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异常数量
|
||||||
|
*/
|
||||||
|
private int errorCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 已处理数量
|
||||||
|
*/
|
||||||
|
private int finishCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 未处理数量
|
||||||
|
*/
|
||||||
|
private int noFinishCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 迟到数量
|
||||||
|
*/
|
||||||
|
private int lateCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 早退数量
|
||||||
|
*/
|
||||||
|
private int earlyCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 旷工数量
|
||||||
|
*/
|
||||||
|
private int absenteeismCount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打卡地异常数量
|
||||||
|
*/
|
||||||
|
private int addressCount;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 出入异常数量
|
||||||
|
*/
|
||||||
|
private int goOutCount;
|
||||||
|
|
||||||
|
|
||||||
|
private int[] orgIds;
|
||||||
|
|
||||||
|
private String[] month;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -20,10 +20,38 @@ public interface AttExceptionHandleService {
|
||||||
TableDataInfo selectAttExceptionList(AttExceptionBean data);
|
TableDataInfo selectAttExceptionList(AttExceptionBean data);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取异常数据详情
|
* 获取轮休临时外出异常数据详情
|
||||||
* @param data 参数
|
* @param data 参数
|
||||||
* @return list bean
|
* @return list bean
|
||||||
*/
|
*/
|
||||||
List<AttExceptionBean> getDetailException(AttExceptionBean data);
|
List<AttExceptionBean> getDetailException(AttExceptionBean data);
|
||||||
|
|
||||||
}
|
/**
|
||||||
|
* 获取轮休异常报表未申请详情
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
List<AttDetailLeaveBean> getDetailExceptionRest(AttDetailLeaveBean data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取临时外出异常报表未申请详情
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
List<AttDetailLeaveBean> getDetailExceptionOut(AttDetailLeaveBean data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取轮休和临时外出异常报表未申请详情
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
List<AttDetailLeaveBean> getDetailExceptionAll(AttDetailLeaveBean data);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批提醒
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
AjaxResult examineRemind(AttExRemindBean vo);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
package com.bonus.system.att.service;
|
||||||
|
|
||||||
|
import com.bonus.common.core.web.page.TableDataInfo;
|
||||||
|
import com.bonus.system.att.entity.AttExceptionBean;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轮休临时外出异常数据-业务层
|
||||||
|
* @author hongchao
|
||||||
|
*/
|
||||||
|
public interface AttExceptionHandleService2 {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取轮休临时外出异常数据
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
/* TableDataInfo selectAttExceptionList(AttExceptionBean data);*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取异常数据详情
|
||||||
|
* @param data 参数
|
||||||
|
* @return list bean
|
||||||
|
*/
|
||||||
|
/*List<AttExceptionBean> getDetailException(AttExceptionBean data);*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -47,14 +47,36 @@ public class AttExceptionHandleServiceImpl implements AttExceptionHandleService{
|
||||||
@Override
|
@Override
|
||||||
public TableDataInfo selectAttExceptionList(AttExceptionBean data)
|
public TableDataInfo selectAttExceptionList(AttExceptionBean data)
|
||||||
{
|
{
|
||||||
|
AttExceptionBean attExceptionBean = new AttExceptionBean();
|
||||||
List<AttExceptionBean> list = new ArrayList<>();
|
List<AttExceptionBean> list = new ArrayList<>();
|
||||||
|
List<Map<String,Object>> mapList = new ArrayList<>();
|
||||||
try {
|
try {
|
||||||
list = attExceptionHandleDao.selectAttExceptionList(data);
|
if(!StringUtils.isEmpty(data.getAttCurrentMonth())){
|
||||||
list.forEach(item -> {
|
LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01");
|
||||||
item.setNoFinishCount(item.getErrorCount()-item.getFinishCount());
|
LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1);
|
||||||
});
|
LocalDate nowMonth =date.withDayOfMonth(1);
|
||||||
|
data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ;
|
||||||
|
data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
|
attExceptionBean = attExceptionHandleDao.selectAttExceptionList(data);
|
||||||
|
list.add(attExceptionBean);
|
||||||
|
}else{
|
||||||
|
mapList = attExceptionHandleDao.selectAttExceptionMonth();
|
||||||
|
if(mapList.size()!=0){
|
||||||
|
for (int i = 0; i < mapList.size(); i++) {
|
||||||
|
LocalDate date = LocalDate.parse(mapList.get(i).get("month") + "-01");
|
||||||
|
LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1);
|
||||||
|
LocalDate nowMonth =date.withDayOfMonth(1);
|
||||||
|
data.setAttCurrentMonth(String.valueOf(mapList.get(i).get("month")));
|
||||||
|
data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ;
|
||||||
|
data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
|
attExceptionBean = attExceptionHandleDao.selectAttExceptionList(data);
|
||||||
|
list.add(attExceptionBean);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("查询异常数据", e);
|
log.error("查询轮休临时外出异常数据", e);
|
||||||
}
|
}
|
||||||
TableDataInfo rspData = new TableDataInfo();
|
TableDataInfo rspData = new TableDataInfo();
|
||||||
rspData.setCode(HttpStatus.SUCCESS);
|
rspData.setCode(HttpStatus.SUCCESS);
|
||||||
|
|
@ -64,18 +86,251 @@ public class AttExceptionHandleServiceImpl implements AttExceptionHandleService{
|
||||||
return rspData;
|
return rspData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public List<AttExceptionBean> getDetailException(AttExceptionBean data)
|
||||||
|
// {
|
||||||
|
// List<AttExceptionBean> listPerson = new ArrayList<>();
|
||||||
|
// List<AttExceptionBean> list = new ArrayList<>();
|
||||||
|
// List<Map<String,Object>> mapList = new ArrayList<>();
|
||||||
|
// List<AttDetailByMonthBean> listTemp = new ArrayList<>();
|
||||||
|
// List<Map<String,Object>> parentIdList = new ArrayList<>();
|
||||||
|
// List<Map<String,Object>> sonsIdList = new ArrayList<>();
|
||||||
|
// Map<String,Object> map = new HashMap<>();
|
||||||
|
// try {
|
||||||
|
// if(!StringUtils.isEmpty(data.getAttCurrentMonth())){
|
||||||
|
// LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01");
|
||||||
|
// LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1);
|
||||||
|
// LocalDate nowMonth =date.withDayOfMonth(1);
|
||||||
|
// data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ;
|
||||||
|
// data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
|
// if(data.getOrgId()==null){
|
||||||
|
// listTemp = attDetailByMonthDao.getAllParentId();
|
||||||
|
// for (int i = 0; i < listTemp.size(); i++) {
|
||||||
|
// findSonsIds(listTemp.get(i).getOrgId(),sonsIdList);
|
||||||
|
// }
|
||||||
|
// }else {
|
||||||
|
// findSonsIds(data.getOrgId(), sonsIdList);
|
||||||
|
// }
|
||||||
|
// for (int i = 0; i < sonsIdList.size(); i++) {
|
||||||
|
// map = sonsIdList.get(i);
|
||||||
|
// findParentIds(map,parentIdList);
|
||||||
|
// sonsIdList.get(i).put("orgName",parentIdList.get(i).get("orgName"));
|
||||||
|
// }
|
||||||
|
// int[] orgIdsTemp = new int[sonsIdList.size()];
|
||||||
|
// for (int i = 0; i < sonsIdList.size(); i++){
|
||||||
|
// orgIdsTemp[i] = (int) sonsIdList.get(i).get("id");
|
||||||
|
// }
|
||||||
|
// data.setOrgIds(orgIdsTemp);
|
||||||
|
// list = attExceptionHandleDao.getDetailException(data);
|
||||||
|
// for (int i = 0; i < list.size(); i++) {
|
||||||
|
// for (int j = 0; j < sonsIdList.size(); j++) {
|
||||||
|
// if(sonsIdList.get(j).get("id")==list.get(i).getOrgId()){
|
||||||
|
// list.get(i).setOrgName((String) sonsIdList.get(j).get("orgName"));
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }else{
|
||||||
|
// mapList = attExceptionHandleDao.selectAttExceptionNoHandleMonth();
|
||||||
|
// if(mapList.size()!=0){
|
||||||
|
// String[] monthError = new String[mapList.size()];
|
||||||
|
// for (int i = 0; i < mapList.size(); i++) {
|
||||||
|
// monthError[i] = (String) mapList.get(i).get("month");
|
||||||
|
// }
|
||||||
|
// data.setMonth(monthError);
|
||||||
|
// list = attExceptionHandleDao.getDetailAllException(data);
|
||||||
|
// for (int i = 0; i < list.size(); i++) {
|
||||||
|
// LocalDate date = LocalDate.parse(list.get(i).getAttCurrentMonth());
|
||||||
|
//
|
||||||
|
// // 格式化日期为 "YYYY-MM"
|
||||||
|
// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
|
||||||
|
// String formattedDate = date.format(formatter);
|
||||||
|
// list.get(i).setAttCurrentMonth(formattedDate);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// log.error("查询轮休临时外出异常数据详细信息", e);
|
||||||
|
// }
|
||||||
|
// return list;
|
||||||
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<AttExceptionBean> getDetailException(AttExceptionBean data)
|
public List<AttExceptionBean> getDetailException(AttExceptionBean data)
|
||||||
{
|
{
|
||||||
|
List<AttExceptionBean> listPerson = new ArrayList<>();
|
||||||
List<AttExceptionBean> list = new ArrayList<>();
|
List<AttExceptionBean> list = new ArrayList<>();
|
||||||
|
List<Map<String,Object>> mapList = new ArrayList<>();
|
||||||
|
List<AttDetailByMonthBean> listTemp = new ArrayList<>();
|
||||||
|
List<Map<String,Object>> parentIdList = new ArrayList<>();
|
||||||
|
List<Map<String,Object>> sonsIdList = new ArrayList<>();
|
||||||
|
Map<String,Object> map = new HashMap<>();
|
||||||
try {
|
try {
|
||||||
|
if(!StringUtils.isEmpty(data.getAttCurrentMonth())){
|
||||||
|
LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01");
|
||||||
|
LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1);
|
||||||
|
LocalDate nowMonth =date.withDayOfMonth(1);
|
||||||
|
data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ;
|
||||||
|
data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
list = attExceptionHandleDao.getDetailException(data);
|
list = attExceptionHandleDao.getDetailException(data);
|
||||||
|
|
||||||
|
}else{
|
||||||
|
list = attExceptionHandleDao.getDetailException(data);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("查询轮休临时外出异常数据详细信息", e);
|
log.error("查询轮休临时外出异常数据详细信息", e);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AttDetailLeaveBean> getDetailExceptionRest(AttDetailLeaveBean data)
|
||||||
|
{
|
||||||
|
List<AttDetailLeaveBean> list = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01");
|
||||||
|
LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1);
|
||||||
|
LocalDate nowMonth =date.withDayOfMonth(1);
|
||||||
|
data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ;
|
||||||
|
data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
|
list = attExceptionHandleDao.getDetailExceptionRest(data);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("查询轮休异常报表未申请详情", e);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AttDetailLeaveBean> getDetailExceptionOut(AttDetailLeaveBean data)
|
||||||
|
{
|
||||||
|
List<AttDetailLeaveBean> list = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01");
|
||||||
|
LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1);
|
||||||
|
LocalDate nowMonth =date.withDayOfMonth(1);
|
||||||
|
data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ;
|
||||||
|
data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
|
list = attExceptionHandleDao.getDetailExceptionOut(data);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("查询临时外出异常报表未申请详情", e);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AttDetailLeaveBean> getDetailExceptionAll(AttDetailLeaveBean data)
|
||||||
|
{
|
||||||
|
List<AttDetailLeaveBean> list = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
LocalDate date = LocalDate.parse(data.getAttCurrentMonth() + "-01");
|
||||||
|
LocalDate nextMonth =date.plusMonths(1).withDayOfMonth(1);
|
||||||
|
LocalDate nowMonth =date.withDayOfMonth(1);
|
||||||
|
data.setAttNextMonthFirst(nextMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))) ;
|
||||||
|
data.setAttCurrentMonthFirst(nowMonth.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
|
||||||
|
list = attExceptionHandleDao.getDetailExceptionAll(data);
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("查询轮休和临时外出异常报表未申请详情", e);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 审批提醒
|
||||||
|
* @param vo
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public AjaxResult examineRemind(AttExRemindBean vo) {
|
||||||
|
try {
|
||||||
|
SysOrg att = orgDao.selectOrgById(vo.getOrgId());
|
||||||
|
if(att==null){
|
||||||
|
return AjaxResult.error("审批提醒失败");
|
||||||
|
}else{
|
||||||
|
String orgIds = att.getOrgHeadUserId();
|
||||||
|
if(orgIds != null){
|
||||||
|
String[] nameArray = orgIds.split(",");
|
||||||
|
Long[] longArray = new Long[nameArray.length];
|
||||||
|
for (int i = 0; i < nameArray.length; i++) {
|
||||||
|
try {
|
||||||
|
longArray[i] = Long.parseLong(nameArray[i].trim());
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
longArray[i] = null; // 处理异常情况
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = 0; i < longArray.length; i++) {
|
||||||
|
vo.setUserId(longArray[i]);
|
||||||
|
int numTemp = attExceptionHandleDao.examineRemindTemp(vo);
|
||||||
|
if(numTemp!=1){
|
||||||
|
return AjaxResult.error("审批提醒失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vo.setUserUpdate(SecurityUtils.getUserId());
|
||||||
|
if("轮休".equals(vo.getLeaveType())){
|
||||||
|
vo.setType(67L);
|
||||||
|
}else{
|
||||||
|
vo.setType(68L);
|
||||||
|
}
|
||||||
|
int num = attExceptionHandleDao.examineRemind(vo);
|
||||||
|
if (num==1) {
|
||||||
|
return AjaxResult.success();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
return AjaxResult.error("部门没有负责人,无法提醒");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return AjaxResult.error("审批提醒失败");
|
||||||
|
} catch (Exception e) {
|
||||||
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
|
return AjaxResult.error();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从父级补充所属部门名称
|
||||||
|
* @param parentMap
|
||||||
|
* @param parentIdList
|
||||||
|
*/
|
||||||
|
public void findParentIds(Map<String,Object> parentMap,List<Map<String,Object>> parentIdList) {
|
||||||
|
Map<String, Object> map = attDetailByMonthDao.getDepartmentById(parentMap);
|
||||||
|
if (map!=null && map.get("parentId") != null) {
|
||||||
|
// 递归查找上级部门
|
||||||
|
findParentIds(map,parentIdList);
|
||||||
|
}else if(map!=null){
|
||||||
|
parentMap.put("orgName",map.get("orgName"));
|
||||||
|
parentIdList.add(parentMap);
|
||||||
|
}else{
|
||||||
|
parentIdList.add(parentMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取该部门编号下的所有部门编号
|
||||||
|
* @param orgId
|
||||||
|
* @param sonsIdList
|
||||||
|
*/
|
||||||
|
public void findSonsIds(int orgId, List<Map<String,Object>> sonsIdList) {
|
||||||
|
Map<String, Object> mapFinish = new HashMap<>();
|
||||||
|
Map<String, Object> mapTemp = new HashMap<>();
|
||||||
|
List<Map<String, Object>> listSon= attDetailByMonthDao.getSonsById(orgId);
|
||||||
|
if(listSon.size()!=0){
|
||||||
|
for (int i = 0; i < listSon.size(); i++) {
|
||||||
|
mapTemp = listSon.get(i);
|
||||||
|
if(mapTemp.get("parentId")==null){
|
||||||
|
sonsIdList.add(mapTemp);
|
||||||
|
}else{
|
||||||
|
findSonsIds((Integer) mapTemp.get("id"),sonsIdList);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
mapFinish = attDetailByMonthDao.getSonsFinish(orgId);
|
||||||
|
sonsIdList.add(mapFinish);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
package com.bonus.system.att.service;
|
||||||
|
|
||||||
|
import com.bonus.common.core.constant.HttpStatus;
|
||||||
|
import com.bonus.common.core.web.page.TableDataInfo;
|
||||||
|
import com.bonus.system.att.dao.AttDetailByMonthDao;
|
||||||
|
import com.bonus.system.att.dao.AttExceptionHandleDao;
|
||||||
|
import com.bonus.system.att.dao.AttExceptionHandleDao2;
|
||||||
|
import com.bonus.system.att.entity.AttExceptionBean;
|
||||||
|
import com.bonus.system.basic.dao.SysOrgDao;
|
||||||
|
import com.github.pagehelper.PageInfo;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 轮休临时外出异常数据-业务层
|
||||||
|
* @author hongchao
|
||||||
|
*/
|
||||||
|
@Service("attExceptionHandle2")
|
||||||
|
@Slf4j
|
||||||
|
public class AttExceptionHandleServiceImpl2 implements AttExceptionHandleService2{
|
||||||
|
|
||||||
|
/*@Resource(name = "attExceptionHandleDao2")
|
||||||
|
private AttExceptionHandleDao2 attExceptionHandleDao;
|
||||||
|
|
||||||
|
@Resource(name = "attDetailByMonthDao")
|
||||||
|
private AttDetailByMonthDao attDetailByMonthDao;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysOrgDao orgDao;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public TableDataInfo selectAttExceptionList(AttExceptionBean data)
|
||||||
|
{
|
||||||
|
List<AttExceptionBean> list = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
list = attExceptionHandleDao.selectAttExceptionList(data);
|
||||||
|
list.forEach(item -> {
|
||||||
|
item.setNoFinishCount(item.getErrorCount()-item.getFinishCount());
|
||||||
|
});
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("查询异常数据", e);
|
||||||
|
}
|
||||||
|
TableDataInfo rspData = new TableDataInfo();
|
||||||
|
rspData.setCode(HttpStatus.SUCCESS);
|
||||||
|
rspData.setRows(list);
|
||||||
|
rspData.setMsg("查询成功");
|
||||||
|
rspData.setTotal(new PageInfo(list).getTotal());
|
||||||
|
return rspData;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AttExceptionBean> getDetailException(AttExceptionBean data)
|
||||||
|
{
|
||||||
|
List<AttExceptionBean> list = new ArrayList<>();
|
||||||
|
try {
|
||||||
|
list = attExceptionHandleDao.getDetailException(data);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("查询轮休临时外出异常数据详细信息", e);
|
||||||
|
}
|
||||||
|
return list;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,62 +1,250 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<!DOCTYPE mapper
|
<!DOCTYPE mapper
|
||||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="com.bonus.system.att.dao.AttExceptionHandleDao">
|
<mapper namespace="com.bonus.system.att.dao.AttExceptionHandleDao">
|
||||||
|
|
||||||
<select id="selectAttExceptionList" resultType="com.bonus.system.att.entity.AttExceptionBean">
|
<select id="selectAttExceptionList" resultType="com.bonus.system.att.entity.AttExceptionBean">
|
||||||
SELECT
|
select
|
||||||
DATE_FORMAT( att_current_day, '%Y-%m' ) AS yearMonth,
|
#{attCurrentMonth} as attCurrentMonth,
|
||||||
SUM(
|
count(case when (leave_start_date < #{attNextMonthFirst} and leave_start_date >= #{attCurrentMonthFirst}) then 1 END) as errorCount,
|
||||||
CASE
|
count(case when (examine_status != 0 and leave_start_date < #{attNextMonthFirst} and leave_start_date >= #{attCurrentMonthFirst}) then 1 end) as finishCount,
|
||||||
|
count(case when (examine_status = 0 and leave_start_date < #{attNextMonthFirst} and leave_start_date >= #{attCurrentMonthFirst}) then 1 end) as noFinishCount
|
||||||
|
from leave_apply as la
|
||||||
|
where la.is_active = 1
|
||||||
|
and (la.leave_type like '%外出%' or la.leave_type like '%轮休%')
|
||||||
|
</select>
|
||||||
|
|
||||||
WHEN toWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 )
|
<select id="selectAttExceptionMonth" resultType="java.util.Map">
|
||||||
OR offWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 ) THEN
|
select
|
||||||
1 ELSE 0
|
DATE_FORMAT(leave_start_date,'%Y-%m') as month,
|
||||||
END
|
count(*) as leaveCount
|
||||||
) AS errorCount,
|
from leave_apply as la
|
||||||
SUM(
|
where la.is_active = 1
|
||||||
CASE
|
and (la.leave_type like '%外出%' or la.leave_type like '%轮休%')
|
||||||
|
group by month
|
||||||
|
</select>
|
||||||
|
|
||||||
WHEN (
|
<select id="selectAttExceptionNoHandleMonth" resultType="java.util.Map">
|
||||||
toWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 )
|
select
|
||||||
OR offWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 ))
|
DATE_FORMAT(leave_start_date,'%Y-%m') as month,
|
||||||
AND is_update = 1
|
count(*) as leaveCount
|
||||||
AND reviewer_status = 1 THEN
|
from leave_apply as la
|
||||||
1 ELSE 0
|
where la.is_active = 1
|
||||||
END
|
and (la.leave_type like '%外出%' or la.leave_type like '%轮休%')
|
||||||
) AS finishCount
|
and la.examine_status=3
|
||||||
FROM
|
and (examine_time is null or examine_time = '')
|
||||||
v_att_update_data
|
group by month
|
||||||
<where>
|
|
||||||
locate(#{attCurrentMonth},att_current_day)
|
|
||||||
</where>
|
|
||||||
GROUP BY
|
|
||||||
yearMonth
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getDetailException" resultType="com.bonus.system.att.entity.AttExceptionBean">
|
<select id="getDetailException" resultType="com.bonus.system.att.entity.AttExceptionBean">
|
||||||
SELECT
|
select
|
||||||
vv.user_id,
|
user_id as userId,
|
||||||
vv.org_id,
|
user_name as name,
|
||||||
su.user_name,
|
org_id as orgId,
|
||||||
so.org_name,
|
org_name as orgName,
|
||||||
sum( IF ( toWorkOriginalAttStatus = 2 OR offWorkOriginalAttStatus = 2, 1, 0 ) ) as lateCount,
|
#{attCurrentMonth} as attCurrentMonth,
|
||||||
sum( IF ( toWorkOriginalAttStatus = 3 OR offWorkOriginalAttStatus = 3, 1, 0 ) ) as absenteeismCount,
|
count(case when la.leave_type like '%轮休%' then 1 END ) as errorRestCount,
|
||||||
sum( IF ( toWorkOriginalAttStatus = 4 OR offWorkOriginalAttStatus = 4, 1, 0 ) ) as earlyCount,
|
count(case when la.leave_type like '%外出%' then 1 END) as errorOutCount
|
||||||
sum( IF ( toWorkOriginalAttStatus = 8 OR offWorkOriginalAttStatus = 8, 1, 0 ) ) as addressCount,
|
from leave_apply as la
|
||||||
sum( IF ( toWorkOriginalAttStatus = 9 OR offWorkOriginalAttStatus = 9, 1, 0 ) ) as goOutCount
|
where la.is_active = 1
|
||||||
FROM
|
and examine_status = 0
|
||||||
v_att_update_data vv
|
and (leave_start_date < #{attNextMonthFirst} and leave_start_date >= #{attCurrentMonthFirst})
|
||||||
LEFT JOIN sys_user su ON su.user_id = vv.user_id
|
<if test="orgId != null and orgId != '' ">
|
||||||
AND su.is_active = '1'
|
and la.org_id = #{orgId}
|
||||||
LEFT JOIN sys_organization so ON so.id = vv.org_id
|
</if>
|
||||||
AND so.is_active = '1'
|
<if test="name != null and name != '' ">
|
||||||
WHERE
|
and INSTR(la.user_name,#{name}) > 0
|
||||||
locate( #{attCurrentMonth}, att_current_day )
|
</if>
|
||||||
GROUP BY
|
group by user_id
|
||||||
user_id,
|
|
||||||
org_id
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getDetailAllException" resultType="com.bonus.system.att.entity.AttExceptionBean">
|
||||||
|
select
|
||||||
|
user_id as userId,
|
||||||
|
user_name as name,
|
||||||
|
org_id as orgId,
|
||||||
|
org_name as orgName,
|
||||||
|
leave_start_date as attCurrentMonth,
|
||||||
|
count(case when la.leave_type like '%轮休%' then 1 END ) as errorRestCount,
|
||||||
|
count(case when la.leave_type like '%外出%' then 1 END) as errorOutCount
|
||||||
|
from leave_apply as la
|
||||||
|
where
|
||||||
|
<foreach collection="month" item="monthOne" separator="OR">
|
||||||
|
(
|
||||||
|
leave_start_date >= CONCAT(#{monthOne}, '-01') AND
|
||||||
|
leave_start_date < LAST_DAY(CONCAT(#{monthOne}, '-01'))
|
||||||
|
)
|
||||||
|
</foreach>
|
||||||
|
and la.is_active = 1
|
||||||
|
and examine_status = 0
|
||||||
|
<if test="orgId != null and orgId != '' ">
|
||||||
|
and la.org_id in
|
||||||
|
<foreach item="id" collection="orgIds" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</if>
|
||||||
|
<if test="name != null and name != '' ">
|
||||||
|
and INSTR(la.user_name,#{name}) > 0
|
||||||
|
</if>
|
||||||
|
group by user_id
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getDetailExceptionRest" resultType="com.bonus.system.att.entity.AttDetailLeaveBean">
|
||||||
|
select
|
||||||
|
id as id,
|
||||||
|
user_id as userId,
|
||||||
|
user_name as name,
|
||||||
|
org_id as orgId,
|
||||||
|
org_name as orgName,
|
||||||
|
leave_type as leaveType,
|
||||||
|
examine_status as examineStatus,
|
||||||
|
concat(leave_start_date,' ',
|
||||||
|
case
|
||||||
|
when leave_start_interval=1 then '上午'
|
||||||
|
when leave_start_interval then '下午'
|
||||||
|
ELSE ''
|
||||||
|
END) as leaveStartDate,
|
||||||
|
concat(leave_end_date,' ',
|
||||||
|
case
|
||||||
|
when leave_end_interval=1 then '上午'
|
||||||
|
when leave_end_interval then '下午'
|
||||||
|
ELSE ''
|
||||||
|
END) as leaveEndDate,
|
||||||
|
leave_duration as leaveDuration
|
||||||
|
from leave_apply as la
|
||||||
|
where la.is_active = 1
|
||||||
|
and examine_status = 0
|
||||||
|
and (leave_start_date < #{attNextMonthFirst} and leave_start_date >= #{attCurrentMonthFirst}) and (la.leave_type like '%轮休%')
|
||||||
|
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
|
||||||
|
and date_format(la.leave_start_date,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
|
||||||
|
</if>
|
||||||
|
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
|
||||||
|
and date_format(la.leave_end_date,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
|
||||||
|
</if>
|
||||||
|
<if test="userId != null and userId != '' ">
|
||||||
|
and la.user_id=#{userId}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getDetailExceptionOut" resultType="com.bonus.system.att.entity.AttDetailLeaveBean">
|
||||||
|
select
|
||||||
|
id as id,
|
||||||
|
user_id as userId,
|
||||||
|
user_name as name,
|
||||||
|
org_id as orgId,
|
||||||
|
org_name as orgName,
|
||||||
|
leave_type as leaveType,
|
||||||
|
examine_status as examineStatus,
|
||||||
|
concat(leave_start_date,' ',
|
||||||
|
case
|
||||||
|
when leave_start_interval=1 then '上午'
|
||||||
|
when leave_start_interval then '下午'
|
||||||
|
ELSE ''
|
||||||
|
END) as leaveStartDate,
|
||||||
|
concat(leave_end_date,' ',
|
||||||
|
case
|
||||||
|
when leave_end_interval=1 then '上午'
|
||||||
|
when leave_end_interval then '下午'
|
||||||
|
ELSE ''
|
||||||
|
END) as leaveEndDate,
|
||||||
|
leave_duration as leaveDuration
|
||||||
|
from leave_apply as la
|
||||||
|
where la.is_active = 1
|
||||||
|
and examine_status = 0
|
||||||
|
and (leave_start_date < #{attNextMonthFirst} and leave_start_date >= #{attCurrentMonthFirst}) and (la.leave_type like '%外出%')
|
||||||
|
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
|
||||||
|
and date_format(la.leave_start_date,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
|
||||||
|
</if>
|
||||||
|
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
|
||||||
|
and date_format(la.leave_end_date,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
|
||||||
|
</if>
|
||||||
|
<if test="userId != null and userId != '' ">
|
||||||
|
and la.user_id=#{userId}
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getDetailExceptionAll" resultType="com.bonus.system.att.entity.AttDetailLeaveBean">
|
||||||
|
select
|
||||||
|
id as id,
|
||||||
|
user_id as userId,
|
||||||
|
user_name as name,
|
||||||
|
org_id as orgId,
|
||||||
|
org_name as orgName,
|
||||||
|
leave_type as leaveType,
|
||||||
|
examine_status as examineStatus,
|
||||||
|
concat(leave_start_date,' ',
|
||||||
|
case
|
||||||
|
when leave_start_interval=1 then '上午'
|
||||||
|
when leave_start_interval then '下午'
|
||||||
|
ELSE ''
|
||||||
|
END) as leaveStartDate,
|
||||||
|
concat(leave_end_date,' ',
|
||||||
|
case
|
||||||
|
when leave_end_interval=1 then '上午'
|
||||||
|
when leave_end_interval then '下午'
|
||||||
|
ELSE ''
|
||||||
|
END) as leaveEndDate,
|
||||||
|
leave_duration as leaveDuration
|
||||||
|
from leave_apply as la
|
||||||
|
where la.is_active = 1
|
||||||
|
and (leave_start_date < #{attNextMonthFirst} and leave_start_date >= #{attCurrentMonthFirst}) and (la.leave_type like '%外出%' or la.leave_type like '%轮休%')
|
||||||
|
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
|
||||||
|
and date_format(la.leave_start_date,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')
|
||||||
|
</if>
|
||||||
|
|
||||||
|
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
|
||||||
|
and date_format(la.leave_end_date,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')
|
||||||
|
</if>
|
||||||
|
<if test="name != null and name != '' ">
|
||||||
|
and INSTR(la.user_name,#{name}) > 0
|
||||||
|
</if>
|
||||||
|
<if test="isExamine != null and isExamine == 1">
|
||||||
|
and la.examine_status = 0
|
||||||
|
</if>
|
||||||
|
<if test="isExamine != null and isExamine == 0">
|
||||||
|
and (la.examine_status = 1 or la.examine_status = 2 or la.examine_status = 3)
|
||||||
|
</if>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getOrgUserId" resultType="com.bonus.system.att.entity.AttExRemindBean">
|
||||||
|
select
|
||||||
|
org_head_user_id as orgHeadId
|
||||||
|
from sys_organization as so
|
||||||
|
where so.id = #{orgId}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="examineRemind" parameterType="com.bonus.system.att.entity.AttExRemindBean" >
|
||||||
|
insert into sys_notice(
|
||||||
|
<if test="userUpdate != null">user_id,</if>
|
||||||
|
<if test="title != null and title != ''">title,</if>
|
||||||
|
<if test="content != null and content != '' ">content,</if>
|
||||||
|
type,
|
||||||
|
create_time,
|
||||||
|
update_time,
|
||||||
|
is_active
|
||||||
|
)values(
|
||||||
|
<if test=" userUpdate != null">#{userUpdate},</if>
|
||||||
|
<if test="title != null and title != ''">#{title},</if>
|
||||||
|
<if test="content != null and content != ''">#{content},</if>
|
||||||
|
#{type},
|
||||||
|
now(),
|
||||||
|
now(),
|
||||||
|
1
|
||||||
|
)
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<insert id="examineRemindTemp" parameterType="com.bonus.system.att.entity.AttExRemindBean" >
|
||||||
|
insert into sys_notice_user(
|
||||||
|
<if test="userId != null">user_id,</if>
|
||||||
|
create_time,
|
||||||
|
update_time,
|
||||||
|
is_active
|
||||||
|
)values(
|
||||||
|
<if test=" userId != null">#{userId},</if>
|
||||||
|
now(),
|
||||||
|
now(),
|
||||||
|
1
|
||||||
|
)
|
||||||
|
</insert>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
|
<!DOCTYPE mapper
|
||||||
|
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.bonus.system.att.dao.AttExceptionHandleDao2">
|
||||||
|
|
||||||
|
<select id="selectAttExceptionList" resultType="com.bonus.system.att.entity.AttExceptionBean">
|
||||||
|
SELECT
|
||||||
|
DATE_FORMAT( att_current_day, '%Y-%m' ) AS yearMonth,
|
||||||
|
SUM(
|
||||||
|
CASE
|
||||||
|
|
||||||
|
WHEN toWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 )
|
||||||
|
OR offWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 ) THEN
|
||||||
|
1 ELSE 0
|
||||||
|
END
|
||||||
|
) AS errorCount,
|
||||||
|
SUM(
|
||||||
|
CASE
|
||||||
|
|
||||||
|
WHEN (
|
||||||
|
toWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 )
|
||||||
|
OR offWorkOriginalAttStatus IN ( 2, 3, 4, 8, 9 ))
|
||||||
|
AND is_update = 1
|
||||||
|
AND reviewer_status = 1 THEN
|
||||||
|
1 ELSE 0
|
||||||
|
END
|
||||||
|
) AS finishCount
|
||||||
|
FROM
|
||||||
|
v_att_update_data
|
||||||
|
<where>
|
||||||
|
locate(#{attCurrentMonth},att_current_day)
|
||||||
|
</where>
|
||||||
|
GROUP BY
|
||||||
|
yearMonth
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getDetailException" resultType="com.bonus.system.att.entity.AttExceptionBean">
|
||||||
|
SELECT
|
||||||
|
vv.user_id,
|
||||||
|
vv.org_id,
|
||||||
|
su.user_name,
|
||||||
|
so.org_name,
|
||||||
|
sum( IF ( toWorkOriginalAttStatus = 2 OR offWorkOriginalAttStatus = 2, 1, 0 ) ) as lateCount,
|
||||||
|
sum( IF ( toWorkOriginalAttStatus = 3 OR offWorkOriginalAttStatus = 3, 1, 0 ) ) as absenteeismCount,
|
||||||
|
sum( IF ( toWorkOriginalAttStatus = 4 OR offWorkOriginalAttStatus = 4, 1, 0 ) ) as earlyCount,
|
||||||
|
sum( IF ( toWorkOriginalAttStatus = 8 OR offWorkOriginalAttStatus = 8, 1, 0 ) ) as addressCount,
|
||||||
|
sum( IF ( toWorkOriginalAttStatus = 9 OR offWorkOriginalAttStatus = 9, 1, 0 ) ) as goOutCount
|
||||||
|
FROM
|
||||||
|
v_att_update_data vv
|
||||||
|
LEFT JOIN sys_user su ON su.user_id = vv.user_id
|
||||||
|
AND su.is_active = '1'
|
||||||
|
LEFT JOIN sys_organization so ON so.id = vv.org_id
|
||||||
|
AND so.is_active = '1'
|
||||||
|
WHERE
|
||||||
|
locate( #{attCurrentMonth}, att_current_day )
|
||||||
|
GROUP BY
|
||||||
|
user_id,
|
||||||
|
org_id
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Loading…
Reference in New Issue