考勤新报表
diff --git a/src/main/java/com/supwisdom/dlpay/atte/bean/AtteReport.java b/src/main/java/com/supwisdom/dlpay/atte/bean/AtteReport.java
index 23e3623..5968db7 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/bean/AtteReport.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/bean/AtteReport.java
@@ -22,6 +22,72 @@
private float cnt9;//出差
private String custtypename;
private String deptname;
+ private Integer a1;
+ private Integer p1;
+ private Integer a2;
+ private Integer p2;
+ private Integer a3;
+ private Integer p3;
+ private Integer a4;
+ private Integer p4;
+ private Integer a5;
+ private Integer p5;
+ private Integer a6;
+ private Integer p6;
+ private Integer a7;
+ private Integer p7;
+ private Integer a8;
+ private Integer p8;
+ private Integer a9;
+ private Integer p9;
+ private Integer a10;
+ private Integer p10;
+ private Integer a11;
+ private Integer p11;
+ private Integer a12;
+ private Integer p12;
+ private Integer a13;
+ private Integer p13;
+ private Integer a14;
+ private Integer p14;
+ private Integer a15;
+ private Integer p15;
+ private Integer a16;
+ private Integer p16;
+ private Integer a17;
+ private Integer p17;
+ private Integer a18;
+ private Integer p18;
+ private Integer a19;
+ private Integer p19;
+ private Integer a20;
+ private Integer p20;
+ private Integer a21;
+ private Integer p21;
+ private Integer a22;
+ private Integer p22;
+ private Integer a23;
+ private Integer p23;
+ private Integer a24;
+ private Integer p24;
+ private Integer a25;
+ private Integer p25;
+ private Integer a26;
+ private Integer p26;
+ private Integer a27;
+ private Integer p27;
+ private Integer a28;
+ private Integer p28;
+ private Integer a29;
+ private Integer p29;
+ private Integer a30;
+ private Integer p30;
+ private Integer a31;
+ private Integer p31;
+
+
+
+
public String getCustid() {
return custid;
@@ -150,4 +216,500 @@
public void setCnt9(float cnt9) {
this.cnt9 = cnt9;
}
+
+ public Integer getA1() {
+ return a1;
+ }
+
+ public void setA1(Integer a1) {
+ this.a1 = a1;
+ }
+
+ public Integer getP1() {
+ return p1;
+ }
+
+ public void setP1(Integer p1) {
+ this.p1 = p1;
+ }
+
+ public Integer getA2() {
+ return a2;
+ }
+
+ public void setA2(Integer a2) {
+ this.a2 = a2;
+ }
+
+ public Integer getP2() {
+ return p2;
+ }
+
+ public void setP2(Integer p2) {
+ this.p2 = p2;
+ }
+
+ public Integer getA3() {
+ return a3;
+ }
+
+ public void setA3(Integer a3) {
+ this.a3 = a3;
+ }
+
+ public Integer getP3() {
+ return p3;
+ }
+
+ public void setP3(Integer p3) {
+ this.p3 = p3;
+ }
+
+ public Integer getA4() {
+ return a4;
+ }
+
+ public void setA4(Integer a4) {
+ this.a4 = a4;
+ }
+
+ public Integer getP4() {
+ return p4;
+ }
+
+ public void setP4(Integer p4) {
+ this.p4 = p4;
+ }
+
+ public Integer getA5() {
+ return a5;
+ }
+
+ public void setA5(Integer a5) {
+ this.a5 = a5;
+ }
+
+ public Integer getP5() {
+ return p5;
+ }
+
+ public void setP5(Integer p5) {
+ this.p5 = p5;
+ }
+
+ public Integer getA6() {
+ return a6;
+ }
+
+ public void setA6(Integer a6) {
+ this.a6 = a6;
+ }
+
+ public Integer getP6() {
+ return p6;
+ }
+
+ public void setP6(Integer p6) {
+ this.p6 = p6;
+ }
+
+ public Integer getA7() {
+ return a7;
+ }
+
+ public void setA7(Integer a7) {
+ this.a7 = a7;
+ }
+
+ public Integer getP7() {
+ return p7;
+ }
+
+ public void setP7(Integer p7) {
+ this.p7 = p7;
+ }
+
+ public Integer getA8() {
+ return a8;
+ }
+
+ public void setA8(Integer a8) {
+ this.a8 = a8;
+ }
+
+ public Integer getP8() {
+ return p8;
+ }
+
+ public void setP8(Integer p8) {
+ this.p8 = p8;
+ }
+
+ public Integer getA9() {
+ return a9;
+ }
+
+ public void setA9(Integer a9) {
+ this.a9 = a9;
+ }
+
+ public Integer getP9() {
+ return p9;
+ }
+
+ public void setP9(Integer p9) {
+ this.p9 = p9;
+ }
+
+ public Integer getA10() {
+ return a10;
+ }
+
+ public void setA10(Integer a10) {
+ this.a10 = a10;
+ }
+
+ public Integer getP10() {
+ return p10;
+ }
+
+ public void setP10(Integer p10) {
+ this.p10 = p10;
+ }
+
+ public Integer getA11() {
+ return a11;
+ }
+
+ public void setA11(Integer a11) {
+ this.a11 = a11;
+ }
+
+ public Integer getP11() {
+ return p11;
+ }
+
+ public void setP11(Integer p11) {
+ this.p11 = p11;
+ }
+
+ public Integer getA12() {
+ return a12;
+ }
+
+ public void setA12(Integer a12) {
+ this.a12 = a12;
+ }
+
+ public Integer getP12() {
+ return p12;
+ }
+
+ public void setP12(Integer p12) {
+ this.p12 = p12;
+ }
+
+ public Integer getA13() {
+ return a13;
+ }
+
+ public void setA13(Integer a13) {
+ this.a13 = a13;
+ }
+
+ public Integer getP13() {
+ return p13;
+ }
+
+ public void setP13(Integer p13) {
+ this.p13 = p13;
+ }
+
+ public Integer getA14() {
+ return a14;
+ }
+
+ public void setA14(Integer a14) {
+ this.a14 = a14;
+ }
+
+ public Integer getP14() {
+ return p14;
+ }
+
+ public void setP14(Integer p14) {
+ this.p14 = p14;
+ }
+
+ public Integer getA15() {
+ return a15;
+ }
+
+ public void setA15(Integer a15) {
+ this.a15 = a15;
+ }
+
+ public Integer getP15() {
+ return p15;
+ }
+
+ public void setP15(Integer p15) {
+ this.p15 = p15;
+ }
+
+ public Integer getA16() {
+ return a16;
+ }
+
+ public void setA16(Integer a16) {
+ this.a16 = a16;
+ }
+
+ public Integer getP16() {
+ return p16;
+ }
+
+ public void setP16(Integer p16) {
+ this.p16 = p16;
+ }
+
+ public Integer getA17() {
+ return a17;
+ }
+
+ public void setA17(Integer a17) {
+ this.a17 = a17;
+ }
+
+ public Integer getP17() {
+ return p17;
+ }
+
+ public void setP17(Integer p17) {
+ this.p17 = p17;
+ }
+
+ public Integer getA18() {
+ return a18;
+ }
+
+ public void setA18(Integer a18) {
+ this.a18 = a18;
+ }
+
+ public Integer getP18() {
+ return p18;
+ }
+
+ public void setP18(Integer p18) {
+ this.p18 = p18;
+ }
+
+ public Integer getA19() {
+ return a19;
+ }
+
+ public void setA19(Integer a19) {
+ this.a19 = a19;
+ }
+
+ public Integer getP19() {
+ return p19;
+ }
+
+ public void setP19(Integer p19) {
+ this.p19 = p19;
+ }
+
+ public Integer getA20() {
+ return a20;
+ }
+
+ public void setA20(Integer a20) {
+ this.a20 = a20;
+ }
+
+ public Integer getP20() {
+ return p20;
+ }
+
+ public void setP20(Integer p20) {
+ this.p20 = p20;
+ }
+
+ public Integer getA21() {
+ return a21;
+ }
+
+ public void setA21(Integer a21) {
+ this.a21 = a21;
+ }
+
+ public Integer getP21() {
+ return p21;
+ }
+
+ public void setP21(Integer p21) {
+ this.p21 = p21;
+ }
+
+ public Integer getA22() {
+ return a22;
+ }
+
+ public void setA22(Integer a22) {
+ this.a22 = a22;
+ }
+
+ public Integer getP22() {
+ return p22;
+ }
+
+ public void setP22(Integer p22) {
+ this.p22 = p22;
+ }
+
+ public Integer getA23() {
+ return a23;
+ }
+
+ public void setA23(Integer a23) {
+ this.a23 = a23;
+ }
+
+ public Integer getP23() {
+ return p23;
+ }
+
+ public void setP23(Integer p23) {
+ this.p23 = p23;
+ }
+
+ public Integer getA24() {
+ return a24;
+ }
+
+ public void setA24(Integer a24) {
+ this.a24 = a24;
+ }
+
+ public Integer getP24() {
+ return p24;
+ }
+
+ public void setP24(Integer p24) {
+ this.p24 = p24;
+ }
+
+ public Integer getA25() {
+ return a25;
+ }
+
+ public void setA25(Integer a25) {
+ this.a25 = a25;
+ }
+
+ public Integer getP25() {
+ return p25;
+ }
+
+ public void setP25(Integer p25) {
+ this.p25 = p25;
+ }
+
+ public Integer getA26() {
+ return a26;
+ }
+
+ public void setA26(Integer a26) {
+ this.a26 = a26;
+ }
+
+ public Integer getP26() {
+ return p26;
+ }
+
+ public void setP26(Integer p26) {
+ this.p26 = p26;
+ }
+
+ public Integer getA27() {
+ return a27;
+ }
+
+ public void setA27(Integer a27) {
+ this.a27 = a27;
+ }
+
+ public Integer getP27() {
+ return p27;
+ }
+
+ public void setP27(Integer p27) {
+ this.p27 = p27;
+ }
+
+ public Integer getA28() {
+ return a28;
+ }
+
+ public void setA28(Integer a28) {
+ this.a28 = a28;
+ }
+
+ public Integer getP28() {
+ return p28;
+ }
+
+ public void setP28(Integer p28) {
+ this.p28 = p28;
+ }
+
+ public Integer getA29() {
+ return a29;
+ }
+
+ public void setA29(Integer a29) {
+ this.a29 = a29;
+ }
+
+ public Integer getP29() {
+ return p29;
+ }
+
+ public void setP29(Integer p29) {
+ this.p29 = p29;
+ }
+
+ public Integer getA30() {
+ return a30;
+ }
+
+ public void setA30(Integer a30) {
+ this.a30 = a30;
+ }
+
+ public Integer getP30() {
+ return p30;
+ }
+
+ public void setP30(Integer p30) {
+ this.p30 = p30;
+ }
+
+ public Integer getA31() {
+ return a31;
+ }
+
+ public void setA31(Integer a31) {
+ this.a31 = a31;
+ }
+
+ public Integer getP31() {
+ return p31;
+ }
+
+ public void setP31(Integer p31) {
+ this.p31 = p31;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/atte/controller/CustAtteController.java b/src/main/java/com/supwisdom/dlpay/atte/controller/CustAtteController.java
index 0cc130e..24d1b15 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/controller/CustAtteController.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/controller/CustAtteController.java
@@ -1102,4 +1102,123 @@
return map;
}
+ /**
+ * 新考勤报表 (按月)
+ */
+ @GetMapping("/newreport/index")
+ public String newreportindex(){
+ return "atte/newreport/index";
+ }
+
+ @ResponseBody
+ @RequestMapping(value="/newreport/prepare")
+ public Map policerepostlistpre(HttpServletRequest request,
+ HttpServletResponse response,
+ @RequestBody AttedtlSearchBean searchBean,
+ @AuthenticationPrincipal TOperator operUser) {
+
+ Map map=new HashMap();
+ try {
+ String opertype=operUser.getOpertype();
+ List<TCustType> custtypelist=systemService.findAllCusttype();
+
+ map.put("custtypelist",custtypelist);
+ List<TDept> deptlist=systemService.findAllDept();
+ map.put("deptlist",deptlist);
+ map.put("operator",operUser);
+ }catch (Exception e) {
+ e.printStackTrace();
+ log.error("查询新考勤规则失败:" + e.getMessage());
+ }
+ return map;
+ }
+ @ResponseBody
+ @RequestMapping(value="/newreport/list")
+ public Map newreportlist(HttpServletRequest request,
+ HttpServletResponse response,
+ @RequestParam(value = "pageNo", required = false, defaultValue = "1") int pageNo,
+ @RequestParam(value = "pageSize", required = false, defaultValue = "10") int pageSize,
+ @RequestParam(value = "startdate") String startdate,
+ @RequestParam(value = "enddate") String enddate,
+ @RequestBody AttedtlSearchBean searchBean,
+ @AuthenticationPrincipal TOperator operUser) {
+ searchBean.setStartdate(startdate);
+ searchBean.setEnddate(enddate);
+ Map map=new HashMap();
+ try {
+ Pagination page=null;
+ String opertype=operUser.getOpertype();
+ String deptcode=operUser.getDeptcode();
+ if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))){
+ deptcode=null;
+ }else {
+ if(StringUtil.isEmpty(deptcode)){
+ deptcode="-99";
+ }
+ }
+ searchBean.setDeptcode(deptcode);
+ page=atteClassService.getNewReportWithPage(searchBean,pageNo,pageSize);
+ map.put("PageResult",page);
+ List<TCustType> custtypelist=systemService.findAllCusttype();
+ map.put("custtypelist",custtypelist);
+ List<TDept> deptlist=systemService.findAllDept();
+ map.put("deptlist",deptlist);
+ map.put("operator",operUser);
+ }catch (Exception e) {
+ e.printStackTrace();
+ log.error("查询考勤规则失败:" + e.getMessage());
+ }
+ return map;
+ }
+
+ @GetMapping("/print/printnewreport")
+ public String printLaborCountnew(@ModelAttribute("searchBean") AttedtlSearchBean searchBean,
+ @RequestParam(value = "opercode",required = false) String opercode,ModelMap map) {
+ try {
+ TOperator operUser=managerService.getOperatorByOpercode(opercode);
+ String opertype=operUser.getOpertype();
+ String deptcode=operUser.getDeptcode();
+ if (!StringUtil.isEmpty(opertype) &&(opertype.equals("S")||opertype.equals("P"))){
+ deptcode=null;
+ }else {
+ if(StringUtil.isEmpty(deptcode)){
+ deptcode="-99";
+ }
+ }
+ List<TDept> deptlist=systemService.findAllDept();
+ TDept tdept=null;
+ for(TDept dept:deptlist){
+ if(dept.getDeptcode().equals(deptcode)){
+ tdept=dept;
+ }
+ }
+ map.addAttribute("deptname", tdept == null ? " " :tdept.getDeptname());
+ map.addAttribute("startdate",DateUtil.reformatDatetime(searchBean.getStartdate(),"yyyyMMdd","yyyy-MM-dd"));
+ map.addAttribute("enddate",DateUtil.reformatDatetime(searchBean.getEnddate(),"yyyyMMdd","yyyy-MM-dd"));
+ searchBean.setDeptcode(deptcode);
+ List<AtteReport> list=atteClassService.getNewReportList(searchBean);
+ map.addAttribute("showlist", list);
+ if(list!=null&&list.size()>0){
+ Sum sum=new Sum();
+ for(AtteReport report:list){
+ sum.setCnt1(sum.getCnt1()+report.getCnt1());
+ sum.setCnt2(sum.getCnt2()+report.getCnt2());
+ sum.setCnt3(sum.getCnt3()+report.getCnt3());
+ sum.setCnt4(sum.getCnt4()+report.getCnt4());
+ sum.setCnts(sum.getCnts()+report.getCnts());
+ sum.setCnt5(sum.getCnt5()+report.getCnt5());
+ sum.setCnt7(sum.getCnt7()+report.getCnt7());
+ sum.setCnt8(sum.getCnt8()+report.getCnt8());
+ sum.setCnt9(sum.getCnt9()+report.getCnt9());
+ }
+ map.addAttribute("sum",sum);
+ }
+ map.addAttribute("opername", operUser == null ? "unknow" : operUser.getOpername());
+ map.addAttribute("printdatetime",DateUtil.reformatDatetime(systemUtilService.getSysdatetime().getHostdatetime(),DateUtil.DATETIME_FMT,"yyyy-MM-dd HH:mm:ss"));
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return "atte/report/print/newreportindex";
+ }
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/atte/dao/AtteClassDao.java b/src/main/java/com/supwisdom/dlpay/atte/dao/AtteClassDao.java
index 27c65d7..69455c2 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/dao/AtteClassDao.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/dao/AtteClassDao.java
@@ -82,5 +82,7 @@
String startTranDate, String endTranDate,String startTranTime, String endTranTime,String cardno,
String custname,String buildingid,String devname,String streamstatus,int pageNo,int pageSize,String regionid);
-
+ //
+ public Pagination getNewReportWithPage(AttedtlSearchBean searchBean,int pageNo,int pageSize);
+ public List<AtteReport> getNewReportList(AttedtlSearchBean searchBean);
}
diff --git a/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java b/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java
index 97fe433..018928b 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/dao/impl/AtteClassDaoImpl.java
@@ -1081,4 +1081,274 @@
}
return 0;
}
+
+
+ @Override
+ public Pagination getNewReportWithPage(AttedtlSearchBean searchBean, int pageNo, int pageSize) {
+ StringBuffer sql=new StringBuffer();
+ sql.append(" with aa as (select v.*,substr(v.attedate,7) as ad from v_atte_info v left join t_card c on v. custid=c.custid left join tb_custtype ct on v.custtypeid=ct.custtypeid left join tb_dept d on v.deptcode=d.deptcode ")
+ .append(" where c.status='normal' and c.transtatus='normal' ");
+ if(!StringUtil.isEmpty(searchBean.getStartdate())&&!StringUtil.isEmpty(searchBean.getEnddate())){
+ sql.append(" and v.attedate between :sdate and :edate ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getCustname())){
+ sql.append(" and v.custname like :cname ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getCusttypeid())){
+ sql.append(" and v.custtypeid = :ctypeid ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getDeptcode())){
+ sql.append(" and v.deptcode = :dcode ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getDtcode())){
+ sql.append(" and v.deptcode = :dtcode ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getCardno())){
+ sql.append(" and c.cardno like :cno ");
+ }
+ sql.append(" ), ");
+ sql.append(" bb as (select count(custid)/2.0 cnts,custid,custname,deptcode,custtypeid from aa group by custid,custname,deptcode,custtypeid ), ")
+ .append("cc as (select custid,sum(case when (apflag=1 and ad = '01') then state else null end ) as a1\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '01' then state else null end ) as p1\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '02' then state else null end ) as a2\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '02' then state else null end ) as p2\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '03' then state else null end ) as a3\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '03' then state else null end ) as p3\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '04' then state else null end ) as a4\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '04' then state else null end ) as p4\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '05' then state else null end) as a5\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '05' then state else null end) as p5\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '06' then state else null end) as a6\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '06' then state else null end) as p6\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '07' then state else null end ) as a7\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '07' then state else null end) as p7\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '08' then state else null end ) as a8\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '08' then state else null end) as p8\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '09' then state else null end) as a9\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '09' then state else null end) as p9\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '10' then state else null end) as a10\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '10' then state else null end) as p10\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '11' then state else null end) as a11\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '11' then state else null end) as p11\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '12' then state else null end) as a12\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '12' then state else null end) as p12\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '13' then state else null end) as a13\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '13' then state else null end) as p13\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '14' then state else null end) as a14\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '14' then state else null end) as p14\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '15' then state else null end) as a15\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '15' then state else null end) as p15\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '16' then state else null end) as a16\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '16' then state else null end) as p16\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '17' then state else null end) as a17\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '17' then state else null end) as p17\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '18' then state else null end) as a18\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '18' then state else null end ) as p18\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '19' then state else null end ) as a19\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '19' then state else null end ) as p19\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '20' then state else null end ) as a20\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '20' then state else null end) as p20\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '21' then state else null end) as a21\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '21' then state else null end) as p21\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '22' then state else null end) as a22\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '22' then state else null end) as p22\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '23' then state else null end) as a23\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '23' then state else null end) as p23\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '24' then state else null end) as a24\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '24' then state else null end) as p24\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '25' then state else null end) as a25\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '25' then state else null end) as p25\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '26' then state else null end) as a26\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '26' then state else null end) as p26\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '27' then state else null end) as a27\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '27' then state else null end) as p27\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '28' then state else null end) as a28\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '28' then state else null end) as p28\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '29' then state else null end) as a29\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '29' then state else null end) as p29\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '30' then state else null end) as a30\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '30' then state else null end) as p30\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '31' then state else null end) as a31\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '31' then state else null end) as p31 ")
+ .append(" from aa group by aa.custid ),")
+ .append(" dd as (select count(aa.custid)/2.0 cnt,state,custid from aa group by aa.custid,aa.state), ")
+ .append(" ee as (select custid,0 cnt5,\n" +
+ "\t\t\t\t\tsum(case when state=1 then cnt else 0 end) as cnt1\n" +
+ "\t\t\t\t\t,sum(case when state=2 then cnt else 0 end) as cnt2\n" +
+ "\t\t\t\t\t,sum(case when state=3 then cnt else 0 end) as cnt3\n" +
+ "\t\t\t\t\t,sum(case when state=0 then cnt else 0 end) as cnt4\n" +
+ "\t\t\t\t\t,sum(case when state=7 then cnt else 0 end) as cnt7\n" +
+ "\t\t\t\t\t,sum(case when state=8 then cnt else 0 end) as cnt8\n" +
+ "\t\t\t\t\t,sum(case when state=9 then cnt else 0 end) as cnt9\n" +
+ "\t from dd group by dd.custid )")
+ .append(" select bb.custid,bb.custname,c.cardno,ct.custtypeid,d.deptcode,ct.custtypename,d.deptname,bb.cnts,cc.*,ee.*\n" +
+ " from bb left join t_card c on ( bb.custid=c.custid and c.status='normal' and c.transtatus='normal' ) \n" +
+ " left join tb_custtype ct on bb.custtypeid=ct.custtypeid \n" +
+ " left join tb_dept d on bb.deptcode=d.deptcode \n" +
+ " left join cc on cc.custid=bb.custid\n" +
+ " left join ee on bb.custid=ee.custid\n" +
+ " order by d.deptcode desc ,ct.custtypeid desc ");
+ Query query=entityManager.createNativeQuery(sql.toString(), AtteReport.class);
+
+ if(!StringUtil.isEmpty(searchBean.getStartdate())&&!StringUtil.isEmpty(searchBean.getEnddate())){
+ query.setParameter("sdate",searchBean.getStartdate());
+ query.setParameter("edate",searchBean.getEnddate());
+ }
+ if(!StringUtil.isEmpty(searchBean.getCustname())){
+ query.setParameter("cname","%"+searchBean.getCustname()+"%");
+ }
+ if(!StringUtil.isEmpty(searchBean.getCusttypeid())){
+ query.setParameter("ctypeid",Integer.parseInt(searchBean.getCusttypeid()));
+ }
+ if(!StringUtil.isEmpty(searchBean.getDeptcode())){
+ query.setParameter("dcode",searchBean.getDeptcode());
+ }
+ if(!StringUtil.isEmpty(searchBean.getCardno())){
+ query.setParameter("cno",searchBean.getCardno());
+ }
+ if(!StringUtil.isEmpty(searchBean.getDtcode())){
+ query.setParameter("dtcode",searchBean.getDtcode());
+ }
+ pageNo = pageNo <= 0 ? 1 : pageNo;
+ query.setFirstResult((pageNo - 1) * pageSize);
+ query.setMaxResults(pageSize);
+ Pagination page = new Pagination();
+ page.setPageNo(pageNo);
+ page.setPageSize(pageSize);
+ List<AtteReport> list=query.getResultList();
+ page.setList(list);
+ int totalCount= getPReportCount(searchBean);
+ page.setTotalCount(totalCount);
+ return page;
+ }
+
+ @Override
+ public List<AtteReport> getNewReportList(AttedtlSearchBean searchBean) {
+ StringBuffer sql=new StringBuffer();
+ sql.append(" with aa as (select v.*,substr(v.attedate,7) as ad from v_atte_info v left join t_card c on v. custid=c.custid left join tb_custtype ct on v.custtypeid=ct.custtypeid left join tb_dept d on v.deptcode=d.deptcode ")
+ .append(" where c.status='normal' and c.transtatus='normal' ");
+ if(!StringUtil.isEmpty(searchBean.getStartdate())&&!StringUtil.isEmpty(searchBean.getEnddate())){
+ sql.append(" and v.attedate between :sdate and :edate ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getCustname())){
+ sql.append(" and v.custname like :cname ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getCusttypeid())){
+ sql.append(" and v.custtypeid = :ctypeid ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getDeptcode())){
+ sql.append(" and v.deptcode = :dcode ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getDtcode())){
+ sql.append(" and v.deptcode = :dtcode ");
+ }
+ if(!StringUtil.isEmpty(searchBean.getCardno())){
+ sql.append(" and c.cardno like :cno ");
+ }
+ sql.append(" ), ");
+ sql.append(" bb as (select count(custid)/2.0 cnts,custid,custname,deptcode,custtypeid from aa group by custid,custname,deptcode,custtypeid ), ")
+ .append("cc as (select custid,sum(case when (apflag=1 and ad = '01') then state else null end ) as a1\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '01' then state else null end ) as p1\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '02' then state else null end ) as a2\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '02' then state else null end ) as p2\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '03' then state else null end ) as a3\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '03' then state else null end ) as p3\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '04' then state else null end ) as a4\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '04' then state else null end ) as p4\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '05' then state else null end) as a5\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '05' then state else null end) as p5\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '06' then state else null end) as a6\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '06' then state else null end) as p6\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '07' then state else null end ) as a7\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '07' then state else null end) as p7\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '08' then state else null end ) as a8\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '08' then state else null end) as p8\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '09' then state else null end) as a9\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '09' then state else null end) as p9\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '10' then state else null end) as a10\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '10' then state else null end) as p10\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '11' then state else null end) as a11\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '11' then state else null end) as p11\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '12' then state else null end) as a12\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '12' then state else null end) as p12\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '13' then state else null end) as a13\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '13' then state else null end) as p13\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '14' then state else null end) as a14\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '14' then state else null end) as p14\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '15' then state else null end) as a15\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '15' then state else null end) as p15\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '16' then state else null end) as a16\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '16' then state else null end) as p16\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '17' then state else null end) as a17\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '17' then state else null end) as p17\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '18' then state else null end) as a18\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '18' then state else null end ) as p18\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '19' then state else null end ) as a19\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '19' then state else null end ) as p19\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '20' then state else null end ) as a20\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '20' then state else null end) as p20\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '21' then state else null end) as a21\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '21' then state else null end) as p21\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '22' then state else null end) as a22\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '22' then state else null end) as p22\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '23' then state else null end) as a23\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '23' then state else null end) as p23\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '24' then state else null end) as a24\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '24' then state else null end) as p24\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '25' then state else null end) as a25\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '25' then state else null end) as p25\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '26' then state else null end) as a26\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '26' then state else null end) as p26\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '27' then state else null end) as a27\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '27' then state else null end) as p27\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '28' then state else null end) as a28\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '28' then state else null end) as p28\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '29' then state else null end) as a29\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '29' then state else null end) as p29\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '30' then state else null end) as a30\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '30' then state else null end) as p30\n" +
+ "\t\t\t\t\t,sum(case when apflag=1 and ad = '31' then state else null end) as a31\n" +
+ "\t\t\t\t\t,sum(case when apflag=2 and ad = '31' then state else null end) as p31 ")
+ .append(" from aa group by aa.custid ),")
+ .append(" dd as (select count(aa.custid)/2.0 cnt,state,custid from aa group by aa.custid,aa.state), ")
+ .append(" ee as (select custid,0 cnt5,\n" +
+ "\t\t\t\t\tsum(case when state=1 then cnt else 0 end) as cnt1\n" +
+ "\t\t\t\t\t,sum(case when state=2 then cnt else 0 end) as cnt2\n" +
+ "\t\t\t\t\t,sum(case when state=3 then cnt else 0 end) as cnt3\n" +
+ "\t\t\t\t\t,sum(case when state=0 then cnt else 0 end) as cnt4\n" +
+ "\t\t\t\t\t,sum(case when state=7 then cnt else 0 end) as cnt7\n" +
+ "\t\t\t\t\t,sum(case when state=8 then cnt else 0 end) as cnt8\n" +
+ "\t\t\t\t\t,sum(case when state=9 then cnt else 0 end) as cnt9\n" +
+ "\t from dd group by dd.custid )")
+ .append(" select bb.custid,bb.custname,c.cardno,ct.custtypeid,d.deptcode,ct.custtypename,d.deptname,bb.cnts,cc.*,ee.*\n" +
+ " from bb left join t_card c on ( bb.custid=c.custid and c.status='normal' and c.transtatus='normal' ) \n" +
+ " left join tb_custtype ct on bb.custtypeid=ct.custtypeid \n" +
+ " left join tb_dept d on bb.deptcode=d.deptcode \n" +
+ "\t\t\t\t left join cc on cc.custid=bb.custid\n" +
+ " left join ee on bb.custid=ee.custid\n" +
+ " order by d.deptcode desc ,ct.custtypeid desc ");
+ Query query=entityManager.createNativeQuery(sql.toString(), AtteReport.class);
+
+ if(!StringUtil.isEmpty(searchBean.getStartdate())&&!StringUtil.isEmpty(searchBean.getEnddate())){
+ query.setParameter("sdate",searchBean.getStartdate());
+ query.setParameter("edate",searchBean.getEnddate());
+ }
+ if(!StringUtil.isEmpty(searchBean.getCustname())){
+ query.setParameter("cname","%"+searchBean.getCustname()+"%");
+ }
+ if(!StringUtil.isEmpty(searchBean.getCusttypeid())){
+ query.setParameter("ctypeid",Integer.parseInt(searchBean.getCusttypeid()));
+ }
+ if(!StringUtil.isEmpty(searchBean.getDeptcode())){
+ query.setParameter("dcode",searchBean.getDeptcode());
+ }
+ if(!StringUtil.isEmpty(searchBean.getCardno())){
+ query.setParameter("cno",searchBean.getCardno());
+ }
+ if(!StringUtil.isEmpty(searchBean.getDtcode())){
+ query.setParameter("dtcode",searchBean.getDtcode());
+ }
+ List<AtteReport> list=query.getResultList();
+ return list;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/atte/service/AtteClassService.java b/src/main/java/com/supwisdom/dlpay/atte/service/AtteClassService.java
index fb39b27..ad63dd1 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/service/AtteClassService.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/service/AtteClassService.java
@@ -101,4 +101,10 @@
public Pagination findSystemTDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String cardno,
String custname, String buildingid, String devname, String streamstatus, int pageNo, int pageSize,String regionid);
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+ public Pagination getNewReportWithPage(AttedtlSearchBean searchBean,int pageNo,int pageSize);
+
+ @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class})
+ public List<AtteReport> getNewReportList(AttedtlSearchBean searchBean);
+
}
diff --git a/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java b/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java
index 33d6443..fae9504 100644
--- a/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/atte/service/impl/AtteClassServiceImpl.java
@@ -576,4 +576,14 @@
public Pagination findSystemTDoordtl(String startTranDate, String endTranDate, String startTranTime, String endTranTime, String cardno, String custname, String buildingid, String devname, String streamstatus, int pageNo, int pageSize, String regionid) {
return atteClassDao.findSystemTDoordtl(startTranDate, endTranDate, startTranTime, endTranTime, cardno, custname, buildingid, devname, streamstatus, pageNo, pageSize, regionid);
}
+
+ @Override
+ public Pagination getNewReportWithPage(AttedtlSearchBean searchBean, int pageNo, int pageSize) {
+ return atteClassDao.getNewReportWithPage(searchBean,pageNo,pageSize);
+ }
+
+ @Override
+ public List<AtteReport> getNewReportList(AttedtlSearchBean searchBean) {
+ return atteClassDao.getNewReportList(searchBean);
+ }
}
diff --git a/src/main/resources/templates/atte/newreport/index.html b/src/main/resources/templates/atte/newreport/index.html
new file mode 100644
index 0000000..2cd476f
--- /dev/null
+++ b/src/main/resources/templates/atte/newreport/index.html
@@ -0,0 +1,839 @@
+<div class="layui-card">
+ <div class="layui-card-header">
+ <h2 class="header-title">考勤报表</h2>
+ <span class="layui-breadcrumb pull-right">
+ <a href="#">人员考勤</a>
+ <a><cite>考勤报表</cite></a>
+ </span>
+ </div>
+ <div class="layui-card-body" >
+ <div id="polreportapp">
+ <el-form :inline="true" ref="preportform" :model="preportform" data-parsley-validate class="form-horizontal form-label-left">
+ <div class="col-md-4">
+ <div class="form-group">
+ <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">开始日期:</span>
+ </label>
+ <div class="col-md-8 col-sm-12 col-xs-12">
+ <el-date-picker style="width: 100%"
+ v-model="preportform.startdate" type="date"
+ placeholder="选择日期" :editable="false" value-format="yyyyMMdd">
+ </el-date-picker>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="form-group">
+ <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">结束日期:</span>
+ </label>
+ <div class="col-md-8 col-sm-12 col-xs-12">
+ <el-date-picker style="width: 100%"
+ v-model="preportform.enddate" type="date"
+ placeholder="选择日期" :editable="false" value-format="yyyyMMdd">
+ </el-date-picker>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="form-group">
+ <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">卡号:</span>
+ </label>
+ <div class="col-md-8 col-sm-12 col-xs-12">
+ <el-input v-model="preportform.cardno" placeholder="输入%模糊查询"></el-input>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-4">
+ <div class="form-group">
+ <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">姓名:</span>
+ </label>
+ <div class="col-md-8 col-sm-12 col-xs-12">
+ <el-input v-model="preportform.custname" ></el-input>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="form-group">
+ <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">人员类别:</span>
+ </label>
+ <div class="col-md-8 col-sm-12 col-xs-12">
+ <el-select v-model="preportform.custtypeid" style="width:100%;" clearable filterable placeholder="请选择">
+ <el-option
+ v-for="custtypeid in typegrplist"
+ :key="custtypeid.value"
+ :label="custtypeid.label"
+ :value="custtypeid.value">
+ </el-option>
+ </el-select>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-4">
+ <div class="form-group">
+ <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;">部门:</span>
+ </label>
+ <div class="col-md-8 col-sm-12 col-xs-12">
+ <el-select v-model="preportform.dtcode" style="width:100%;" clearable filterable placeholder="请选择">
+ <el-option
+ v-for="dtcode in deptlist"
+ :key="dtcode.value"
+ :label="dtcode.label"
+ :value="dtcode.value">
+ </el-option>
+ </el-select>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-4">
+ <div class="form-group">
+ <label class="control-label col-md-4 col-sm-12 col-xs-12" style="font-size: 14px;"></span>
+ </label>
+ <div class="col-md-8 col-sm-12 col-xs-12">
+ <button type="button" class="btn btn-info" @click="query" id="attedtl_qrybtn">查看报表</button>
+ <button type="button" class="btn btn-info" @click="print" id="print_preport">打印</button>
+ </div>
+ </div>
+ </div>
+ </el-form>
+
+ <template>
+ <el-table
+ ref="singleTable"
+ :data="tableData"
+ highlight-current-row
+ @current-change="currRowChange"
+ stripe
+ border
+ max-height="2000"
+ style="width: 100%">
+
+ <el-table-column
+ prop="custname"
+ label="姓名"
+ sortable
+ >
+ </el-table-column>
+ <el-table-column
+ prop="cardno"
+ label="卡号"
+ sortable
+ >
+ </el-table-column>
+ <el-table-column
+ prop="custtypename"
+ label="人员类别"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="deptname"
+ label="部门"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="cnt1"
+ label="正常(天)"
+
+ >
+ </el-table-column>
+ <el-table-column
+ prop="cnt2"
+ label="异常(天)"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="cnt3"
+ label="请假(天)"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="cnt4"
+ label="旷工(天)"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="cnt7"
+ label="补休(天)"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="cnt8"
+ label="外出办公(天)"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="cnt9"
+ label="出差(天)"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="cnts"
+ label="总考勤天数"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a1"
+ label="1(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p1"
+ label="1(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a2"
+ label="2(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p2"
+ label="2(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a3"
+ label="3(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p3"
+ label="3(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a4"
+ label="4(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p4"
+ label="4(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a5"
+ label="5(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p5"
+ label="5(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a6"
+ label="6(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p6"
+ label="6(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a7"
+ label="7(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p7"
+ label="7(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a8"
+ label="8(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p9"
+ label="9(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a10"
+ label="10(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p10"
+ label="10(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a11"
+ label="11(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p11"
+ label="11(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a12"
+ label="12(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p12"
+ label="12(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column><el-table-column
+ prop="a13"
+ label="13(am)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="p13"
+ label="13(pm)"
+ :formatter="stateTypeform"
+ >
+ </el-table-column>
+ <el-table-column
+ prop="a14"
+ label="14(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p14"
+ label="14(pm)"
+ :formatter="stateTypeform" >
+
+ </el-table-column>
+ <el-table-column
+ prop="a15"
+ label="15(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p15"
+ label="15(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a16"
+ label="16(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p16"
+ label="16pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a17"
+ label="17(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p17"
+ label="17(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a18"
+ label="18(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p18"
+ label="18(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a19"
+ label="19(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p19"
+ label="19(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a20"
+ label="20(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p20"
+ label="20(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a21"
+ label="21(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p21"
+ label="21(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a22"
+ label="22(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p22"
+ label="22(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a23"
+ label="23(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p23"
+ label="23(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a24"
+ label="24(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p24"
+ label="24(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a25"
+ label="25(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p25"
+ label="25(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a26"
+ label="26(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p26"
+ label="26(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a27"
+ label="27(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p27"
+ label="27(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a28"
+ label="28(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p28"
+ label="28(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a29"
+ label="29(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p29"
+ label="29(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a30"
+ label="30(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p30"
+ label="30(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="a31"
+ label="31(am)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+ <el-table-column
+ prop="p31"
+ label="31(pm)"
+ :formatter="stateTypeform">
+
+ </el-table-column>
+
+ </el-table>
+ <div class="clearfix"></div>
+ <el-pagination
+ @size-change="handleSizeChange"
+ @current-change="currPageChange"
+ :current-page="currPage"
+ :page-sizes="[10, 20, 50, 100]"
+ :page-size="pageSize"
+ layout="prev, pager, next,sizes, jumper,total"
+ :total="totSize">
+ </el-pagination>
+ </template>
+
+ </div>
+
+
+ </div>
+</div>
+
+<script>
+ var newreport_vue = new Vue({
+ el: '#polreportapp',
+ data:{
+ tableData: [],
+ currPage: 1,
+ pageSize:10,
+ totSize:0,
+ currentRow: null,
+ stategrplist:[{value:0,label:'未打卡'},{value:1,label:'正常'},{value:2,label:'异常'},{value:3,label:'请假'},{value:4,label:'旷工'},],
+ preportform:{
+ startdate:Date.now(),
+ enddate:Date.now(),
+ cardno:'',
+ custname:'',
+ custtypeid:'',
+ deptcode:'',
+ dtcode:''
+ },
+ timegrplist:[],
+ typegrplist:[],
+ deptlist:[],
+ dialogFormVisible: false,
+ dlgAllotDevVisible:false,
+ updatetitle:'修改考勤状态',
+ dtlDiaForm:{
+ atteno:'',
+ custname:'',
+ state:'',
+ remark:''
+ },
+ rules: {
+ season: [
+ { required: true, message: '请输入时令名', trigger: 'blur' },
+ { min: 1, max: 20, message: '长度在 1 到 20 个字符', trigger: 'blur'}
+ ],
+
+
+ },
+
+ },
+ methods: {
+ handleSizeChange:function(val) {
+ this.pageSize=val;
+ report_commonQuery(this,this.currPage,val);
+ },
+ currPageChange:function(val) {
+ this.currPage=val;
+ report_commonQuery(this,this.currPage,this.pageSize);
+ },
+ currRowChange:function(val) {
+ this.currentRow = val;
+ },
+
+
+
+ query:function () {
+ this.pagesize=10;
+ this.currPage=1;
+ report_commonQuery(this,this.currPage,this.pageSize);
+ },
+ print:function () {
+ that=this;
+ print(that);
+ },
+ resetForm:function(formName) {
+ this.$refs[formName].resetFields();
+ this.dialogFormVisible = false
+ },
+ closeDialog:function(formName) {
+ this.$refs[formName].resetFields();
+ this.dialogFormVisible = false
+ },
+ stateTypeform:function(row, column, cellValue){
+ // alert(cellValue)
+ if(cellValue == 0){
+ return '未打卡';
+ }else if(cellValue == 1){
+ return '正常';
+ }else if(cellValue == 2){
+ return '异常';
+ }else if(cellValue == 7){
+ return '补休';
+ }else if(row.cellValue == 8){
+ return '外出办公';
+ }else if(cellValue == 9){
+ return '出差';
+ }else if(cellValue == 11){
+ return '请假';
+ }else {
+ return '';
+ }
+
+ },
+ },
+ created:function(){
+ var _self=this;
+ var token=$("meta[name='_csrf_token']").attr("value");
+ var startdate=class_Formatdate(_self.preportform.startdate);
+ var firstdate=startdate.substring(0,4)+"-"+startdate.substring(4,6)+"-"+'01';
+ _self.preportform.startdate=new Date(firstdate);
+ // var enddate=class_Formatdate(_self.preportform.enddate);
+ $.ajax({
+ type:"post",
+ dataType:"json",
+ url:"[[@{/atte/newreport/prepare}]]",
+ contentType: "application/json",
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ 'X-CSRF-TOKEN':token,
+ },
+ data:JSON.stringify(_self.preportform),
+ success:function(ret){
+ // //console.log(ret);
+ // _self.tableData=ret.PageResult.list;
+ var custtypelist = [];
+ var types=ret.custtypelist;
+ for (var i = 0; i < types.length; i++) {
+ custtypelist.push({
+ value: types[i].custtypeid,
+ label: types[i].custtypename
+ });
+ }
+ var deptlist=[];
+ var depts=ret.deptlist;
+ for (var i = 0; i < depts.length; i++) {
+ deptlist.push({
+ value: depts[i].deptcode,
+ label: depts[i].deptname
+ });
+ }
+ _self.deptlist=deptlist;
+ _self.typegrplist=custtypelist;
+ _self.oper=ret.operator;
+ }
+ })
+ }
+
+ })
+
+
+
+
+
+
+ function class_Formatdate(date){
+ if(date==null||date==''){
+ return '';
+ }
+ var d=new Date(date);
+ var month=d.getMonth() + 1+'';
+ var date=d.getDate()+'';
+ if(month.length==1){
+ month='0'+month;
+ }
+ if(date.length==1){
+ date='0'+date;
+ }
+ var formated=d.getFullYear() + '' + month + '' +date;
+
+ return formated;
+ }
+ function report_commonQuery(_self,pageno,pagesize) {
+ var token=$("meta[name='_csrf_token']").attr("value");
+ var startdate=class_Formatdate(_self.preportform.startdate);
+ var enddate=class_Formatdate(_self.preportform.enddate);
+ if(startdate.substring(0,6) != enddate.substring(0,6)){
+ layer.msg("开始日期和结束日期必须属于同一月份!", {icon: 1, time: 1000});
+ return ;
+ }
+
+ var custtypeid=_self.preportform.custtypeid;
+ var custname=_self.preportform.custname;
+ var cardno=_self.preportform.cardno;
+ var dtcode=_self.preportform.dtcode;
+ if(checkEmpty(custtypeid)&&checkEmpty(custname)&&checkEmpty(cardno)&&checkEmpty(dtcode)){
+ layer.msg("姓名丶卡号丶人员类别丶部门四个查询条件至少选择一个!", {icon: 1, time: 2000});
+ return ;
+ }
+ layer.msg("正在生成报表,请稍等!", {icon: 1, time: 5000});
+ $.ajax({
+ type:"post",
+ dataType:"json",
+ url:"[[@{/atte/newreport/list?startdate=}]]"+startdate+"&enddate="+enddate+"&pageNo="+pageno+"&pageSize="+pagesize,
+ contentType: "application/json",
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ 'X-CSRF-TOKEN':token,
+ },
+ data:JSON.stringify(_self.preportform),
+ success:function(ret){
+ _self.totSize=ret.PageResult.totalCount;
+ _self.tableData=ret.PageResult.list;
+ alert(_self.tableData)
+ if(_self.totSize == 0 ){
+ layer.msg("暂无数据", {icon: 2, time: 1000});
+ }
+
+ }
+ })
+ }
+
+ function dtl_getFillData(_self,row){
+ _self.dtlDiaForm.atteno=row.atteno;
+ _self.dtlDiaForm.custname=row.custname;
+ _self.dtlDiaForm.state=row.state;
+ _self.dtlDiaForm.remark=row.remark;
+ }
+
+ function checkEmpty(str) {
+ if (undefined == str || null == str || "" == str || "" == ("" + str).replace(/ /g, "")) {
+ return true;
+ }
+ return false;
+ }
+ function attedtl_saveData(_that,formName) {
+ var atteno=_that.dtlDiaForm.atteno;
+ var state=_that.dtlDiaForm.state;
+ var remark=_that.dtlDiaForm.remark;
+ if(remark==null){
+ remark='';
+ }
+ var token=$("meta[name='_csrf_token']").attr("value");
+ $.ajax({
+ type: "POST",
+ url: '[[@{/atte/updatetimeDtl?atteno=}]]'+atteno+"&state="+state+"&remark="+remark,
+ dataType: "json",
+ contentType: "application/json",
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json',
+ 'X-CSRF-TOKEN':token,
+ },
+ success: function (data) {
+ if (data.errStr == undefined) {
+ layer.msg('用户认证已过期,请重新登录', {icon: 2, time: 1000});
+ window.location = "login";
+ return;
+ }
+ if (data.errStr != "") {
+ layer.msg(data.errStr, {icon: 2, time: 1000});
+ } else {
+ layer.msg('保存信息成功!', {icon: 1, time: 1000});
+ _that.dialogFormVisible = false;
+ report_refreshThisTable();
+ _that.$refs[formName].resetFields();
+ }
+ }
+ })
+
+ }
+
+ function report_refreshThisTable(){
+ report_commonQuery(newreport_vue,newreport_vue.currPage,newreport_vue.pageSize);
+ };
+ var LODOP;
+ function print(that){
+ layer.msg("正在打印,请稍等!", {icon: 1, time: 1000});
+ var startdate=class_Formatdate(that.preportform.startdate);
+ var enddate=class_Formatdate(that.preportform.enddate);
+ var custtypeid=that.preportform.custtypeid;
+ var custname=that.preportform.custname;
+ var cardno=that.preportform.cardno;
+ var opercode=that.oper.opercode;
+ var dtcode=that.preportform.dtcode;
+ var url = '/atte/print/printnewreport?startdate=' + startdate + '&enddate=' + enddate + '&custtypeid=' + custtypeid + '&custname=' + custname+"&cardno="+cardno+"&opercode="+opercode+"&dtcode="+dtcode;
+
+ LODOP = getLodop();
+ LODOP.PRINT_INIT("考勤报表");
+ LODOP.SET_PRINT_PAGESIZE(2, 0, 0,"A4");
+ LODOP.ADD_PRINT_URL(30, 20, "95%", "90%", encodeURI(url));
+ LODOP.ADD_PRINT_HTM("95%", "48%", 150, 50, "<font style='font-size:12px'><span tdata='pageNO'>##</span>/<span tdata='pageCount'> ##</span></font>");
+ LODOP.SET_PRINT_STYLEA(0, "ItemType", 1);
+ LODOP.SET_PRINT_STYLEA(0, "HOrient", 3);
+ LODOP.SET_PRINT_STYLEA(0, "VOrient", 3);
+ LODOP.SET_SHOW_MODE("NP_NO_RESULT", true);
+ LODOP.SET_PRINT_MODE("FULL_WIDTH_FOR_OVERFLOW",true);
+ LODOP.PREVIEW();
+
+ }
+
+
+
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/atte/report/print/newreportindex.html b/src/main/resources/templates/atte/report/print/newreportindex.html
new file mode 100644
index 0000000..9137fe8
--- /dev/null
+++ b/src/main/resources/templates/atte/report/print/newreportindex.html
@@ -0,0 +1,116 @@
+<!DOCTYPE html>
+<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4">
+<head>
+ <meta charset="UTF-8">
+ <title>考勤统计表</title>
+
+ <link rel="stylesheet" th:href="@{/static/libs/layui/css/layui.css}"/>
+ <link rel="stylesheet" th:href="@{/static/custom/css/custom.css}"/>
+</head>
+<body>
+<div class="layui-card">
+ <div class="layui-card-header" style="text-align: center;">
+ <h1>考勤统计表</h1>
+ </div>
+ <div class="layui-card-body">
+ <div class="layui-form toolbar">
+ <div style="float: left;padding-left: 3px;font-size:16px" th:text="${'部门:'+deptname}"></div>
+ <div style="float: left;padding-left: 10px;font-size:16px" th:text="${'时间:'+startdate +'至'+ enddate}"></div>
+ </div>
+ <table class="layui-table sw-table sw-print">
+ <thead>
+ <tr>
+ <th style="text-align: center;">姓名</th>
+ <th style="text-align: center;">卡号</th>
+ <th style="text-align: center;">人员类别</th>
+ <th style="text-align: center;">部门</th>
+ <th style="text-align: center;">正常(天)</th>
+ <th style="text-align: center;">异常(天)</th>
+ <th style="text-align: center;">请假(天)</th>
+ <th style="text-align: center;">旷工(天)</th>
+ <th style="text-align: center;">补休(天)</th>
+ <th style="text-align: center;">外出办公(天)</th>
+ <th style="text-align: center;">出差(天)</th>
+ <th style="text-align: center;">总考勤天数 </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr th:if="${null==showlist || showlist.size()==0}">
+ <td colspan="13">无数据</td>
+ </tr>
+ <div th:remove="tag" th:if="${null!=showlist && showlist.size()>0}" th:each="data:${showlist}"
+ >
+
+ <tr >
+ <td th:text="${data.custname}"></td>
+ <td th:text="${data.cardno}"></td>
+ <td th:text="${data.custtypename}"></td>
+ <td th:text="${data.deptname}"></td>
+ <td th:text="${data.cnt1}"></td>
+ <td th:text="${data.cnt2}"></td>
+ <td th:text="${data.cnt3}"></td>
+ <td th:text="${data.cnt4}"></td>
+ <td th:text="${data.cnt7}"></td>
+ <td th:text="${data.cnt8}"></td>
+ <td th:text="${data.cnt9}"></td>
+ <td th:text="${data.cnts}"></td>
+ </tr>
+
+ </div>
+ <div th:if="${null!=sum}">
+ <tr>
+ <td colspan="4" >合计:</td>
+ <td th:text="${sum.cnt1}"></td>
+ <td th:text="${sum.cnt2}"></td>
+ <td th:text="${sum.cnt3}"></td>
+ <td th:text="${sum.cnt4}"></td>
+ <td th:text="${sum.cnt7}"></td>
+ <td th:text="${sum.cnt8}"></td>
+ <td th:text="${sum.cnt9}"></td>
+ <td th:text="${sum.cnts}"></td>
+ </tr>
+ </div>
+ </tbody>
+ </table>
+ <!--<div class="layui-form toolbar">-->
+ <!--<div style="float: left;padding-left: 3px;" th:text="${'制表人:'+opername+' '+ printdatetime}"></div>-->
+ <!--</div>-->
+ </div>
+ <div class="layui-card-body" style="margin-top: 25px;">
+ <div class="col-sm-12">
+ <table width="100%">
+ <tr style="height: 25px;">
+ <td width="12%" style="text-align: right;padding-right: 5px;"></td>
+ <td width="18%"
+ style="text-align: left;" ></td>
+ <td width="5%"> </td>
+ <td width="12%" style="text-align: right;padding-right: 5px;">制表人:</td>
+ <td width="18%"
+ style="text-align: left;border-bottom: 1px solid #666;" th:text="${opername}"></td>
+ <td width="5%"> </td>
+ <td width="12%" style="text-align: right;padding-right: 5px;">制表日期:</td>
+ <td width="18%"
+ style="text-align: left;border-bottom: 1px solid #666;" th:text="${printdatetime}">
+ </td>
+ </tr>
+ <tr style="height: 25px;"></tr>
+ <tr style="height: 25px;">
+ <td width="12%" style="text-align: right;padding-right: 5px;"></td>
+ <td width="18%"
+ style="text-align: left;" ></td>
+ <td width="5%"> </td>
+ <td width="12%" style="text-align: right;padding-right: 5px;">审核人签字:</td>
+ <td width="18%"
+ style="text-align: left;border-bottom: 1px solid #666;"></td>
+ <td width="5%"> </td>
+ <td width="12%" style="text-align: right;padding-right: 5px;">盖章:</td>
+ <td width="18%"
+ style="text-align: left;border-bottom: 1px solid #666;">
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+</div>
+</body>
+</html>
\ No newline at end of file