ysh 3 jaren geleden
bovenliggende
commit
927059fa83
22 gewijzigde bestanden met toevoegingen van 622 en 46 verwijderingen
  1. 9 0
      jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendance/entity/Attendance.java
  2. 167 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/controller/BdErrorInfoController.java
  3. 46 5
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/controller/bdClockinMonthController.java
  4. 95 26
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/controller/viewClockInController.java
  5. 10 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/entity/BdClose.java
  6. 61 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/entity/BdErrorInfo.java
  7. 7 8
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/entity/ViewClockIn.java
  8. 17 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/BdErrorInfoMapper.java
  9. 20 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/bdClockinMonthMapper.java
  10. 3 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/viewClockInMapper.java
  11. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/xml/BdErrorInfoMapper.xml
  12. 11 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/xml/bdClockinMonthMapper.xml
  13. 6 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/xml/viewClockInMapper.xml
  14. 14 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/IBdErrorInfoService.java
  15. 28 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/IbdClockinMonthService.java
  16. 2 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/IviewClockInService.java
  17. 19 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/impl/BdErrorInfoServiceImpl.java
  18. 75 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/impl/bdClockinMonthServiceImpl.java
  19. 6 2
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/impl/viewClockInServiceImpl.java
  20. 16 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/controller/workOvertimeController.java
  21. 0 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/mapper/workOvertimeMapper.java
  22. 5 0
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/service/impl/workOvertimeServiceImpl.java

+ 9 - 0
jeecg-boot-module-demo/src/main/java/org/jeecg/modules/geke/attendance/entity/Attendance.java

@@ -50,6 +50,15 @@ public class Attendance {
 	@ApiModelProperty(value = "标准时间")
 	private java.util.Date crUserDate;
 
+	/**校准创建时间*/
+	@Excel(name = "标准时间", width = 20, format = "HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "HH:mm:ss")
+	@DateTimeFormat(pattern="HH:mm:ss")
+	@ApiModelProperty(value = "创建时间")
+	private java.util.Date createTime;
+
+	private  String createBy;//校准人
+
 	private  String checkinType;//打卡类型
 
 	private  String exceptionType;//打卡异常类型

+ 167 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/controller/BdErrorInfoController.java

@@ -0,0 +1,167 @@
+package org.jeecg.modules.viewClockIn.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.viewClockIn.entity.BdErrorInfo;
+import org.jeecg.modules.viewClockIn.service.IBdErrorInfoService;
+import java.util.Date;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecgframework.poi.excel.ExcelImportUtil;
+import org.jeecgframework.poi.excel.def.NormalExcelConstants;
+import org.jeecgframework.poi.excel.entity.ExportParams;
+import org.jeecgframework.poi.excel.entity.ImportParams;
+import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartHttpServletRequest;
+import org.springframework.web.servlet.ModelAndView;
+import com.alibaba.fastjson.JSON;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+ /**
+ * @Description: 用作关联考勤异常数据,记录忽略状态
+ * @Author: jeecg-boot
+ * @Date:   2022-02-28
+ * @Version: V1.0
+ */
+@Slf4j
+@Api(tags="用作关联考勤异常数据,记录忽略状态")
+@RestController
+@RequestMapping("/viewClockIn/bdErrorInfo")
+public class BdErrorInfoController extends JeecgController<BdErrorInfo, IBdErrorInfoService> {
+	@Autowired
+	private IBdErrorInfoService bdErrorInfoService;
+	
+	/**
+	 * 分页列表查询
+	 *
+	 * @param bdErrorInfo
+	 * @param pageNo
+	 * @param pageSize
+	 * @param req
+	 * @return
+	 */
+	@AutoLog(value = "用作关联考勤异常数据,记录忽略状态-分页列表查询")
+	@ApiOperation(value="用作关联考勤异常数据,记录忽略状态-分页列表查询", notes="用作关联考勤异常数据,记录忽略状态-分页列表查询")
+	@GetMapping(value = "/list")
+	public Result<?> queryPageList(BdErrorInfo bdErrorInfo,
+								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
+								   HttpServletRequest req) {
+		QueryWrapper<BdErrorInfo> queryWrapper = QueryGenerator.initQueryWrapper(bdErrorInfo, req.getParameterMap());
+		Page<BdErrorInfo> page = new Page<BdErrorInfo>(pageNo, pageSize);
+		IPage<BdErrorInfo> pageList = bdErrorInfoService.page(page, queryWrapper);
+		return Result.OK(pageList);
+	}
+	
+	/**
+	 * 添加
+	 *
+	 * @param bdErrorInfo
+	 * @return
+	 */
+	@AutoLog(value = "用作关联考勤异常数据,记录忽略状态-添加")
+	@ApiOperation(value="用作关联考勤异常数据,记录忽略状态-添加", notes="用作关联考勤异常数据,记录忽略状态-添加")
+	@PostMapping(value = "/add")
+	public Result<?> add(@RequestBody BdErrorInfo bdErrorInfo) {
+		bdErrorInfoService.save(bdErrorInfo);
+		return Result.OK("添加成功!");
+	}
+	
+	/**
+	 * 编辑
+	 *
+	 * @param bdErrorInfo
+	 * @return
+	 */
+	@AutoLog(value = "用作关联考勤异常数据,记录忽略状态-编辑")
+	@ApiOperation(value="用作关联考勤异常数据,记录忽略状态-编辑", notes="用作关联考勤异常数据,记录忽略状态-编辑")
+	@PutMapping(value = "/edit")
+	public Result<?> edit(@RequestBody BdErrorInfo bdErrorInfo) {
+		bdErrorInfoService.updateById(bdErrorInfo);
+		return Result.OK("编辑成功!");
+	}
+	
+	/**
+	 * 通过id删除
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "用作关联考勤异常数据,记录忽略状态-通过id删除")
+	@ApiOperation(value="用作关联考勤异常数据,记录忽略状态-通过id删除", notes="用作关联考勤异常数据,记录忽略状态-通过id删除")
+	@DeleteMapping(value = "/delete")
+	public Result<?> delete(@RequestParam(name="id",required=true) String id) {
+		bdErrorInfoService.removeById(id);
+		return Result.OK("删除成功!");
+	}
+	
+	/**
+	 * 批量删除
+	 *
+	 * @param ids
+	 * @return
+	 */
+	@AutoLog(value = "用作关联考勤异常数据,记录忽略状态-批量删除")
+	@ApiOperation(value="用作关联考勤异常数据,记录忽略状态-批量删除", notes="用作关联考勤异常数据,记录忽略状态-批量删除")
+	@DeleteMapping(value = "/deleteBatch")
+	public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
+		this.bdErrorInfoService.removeByIds(Arrays.asList(ids.split(",")));
+		return Result.OK("批量删除成功!");
+	}
+	
+	/**
+	 * 通过id查询
+	 *
+	 * @param id
+	 * @return
+	 */
+	@AutoLog(value = "用作关联考勤异常数据,记录忽略状态-通过id查询")
+	@ApiOperation(value="用作关联考勤异常数据,记录忽略状态-通过id查询", notes="用作关联考勤异常数据,记录忽略状态-通过id查询")
+	@GetMapping(value = "/queryById")
+	public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
+		BdErrorInfo bdErrorInfo = bdErrorInfoService.getById(id);
+		return Result.OK(bdErrorInfo);
+	}
+
+  /**
+   * 导出excel
+   *
+   * @param request
+   * @param bdErrorInfo
+   */
+  @RequestMapping(value = "/exportXls")
+  public ModelAndView exportXls(HttpServletRequest request, BdErrorInfo bdErrorInfo) {
+      return super.exportXls(request, bdErrorInfo, BdErrorInfo.class, "用作关联考勤异常数据,记录忽略状态");
+  }
+
+  /**
+   * 通过excel导入数据
+   *
+   * @param request
+   * @param response
+   * @return
+   */
+  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
+  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
+      return super.importExcel(request, response, BdErrorInfo.class);
+  }
+
+}

+ 46 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/controller/bdClockinMonthController.java

@@ -1,20 +1,25 @@
 package org.jeecg.modules.viewClockIn.controller;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.oConvertUtils;
+import org.jeecg.modules.viewClockIn.entity.BdClose;
 import org.jeecg.modules.viewClockIn.entity.bdClockinMonth;
 import org.jeecg.modules.viewClockIn.service.IbdClockinMonthService;
-import java.util.Date;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -48,7 +53,43 @@ import io.swagger.annotations.ApiOperation;
 public class bdClockinMonthController extends JeecgController<bdClockinMonth, IbdClockinMonthService> {
 	@Autowired
 	private IbdClockinMonthService bdClockinMonthService;
-	
+
+	 /**
+	  * 系统关账功能
+	  * @param jsonObject
+	  * @return
+	  * @throws ParseException
+	  */
+	 @RequestMapping(value = "/closeDate", method = RequestMethod.PUT)
+	 public Result<?> closeDate(@RequestBody JSONObject jsonObject) throws ParseException {
+		 LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+	 	 String closeDate = jsonObject.getString("closeDate");
+		 DateFormat sdf = new SimpleDateFormat("yyyy-MM");
+		 BdClose entity = new BdClose();
+		 entity.setCloseDate(closeDate);
+		 entity.setCreateBy(user.getUsername());
+	 	 //查询所有数据
+		 List<BdClose> list = bdClockinMonthService.selectClose();
+
+		 //判断数据库中数据 是否存在
+		 if(list.size() == 0){
+			 //不存在 插入此条数据
+			 bdClockinMonthService.insertClose(entity);
+			 return Result.OK("true");
+		 }
+
+		 //存在 判断数据库中数据 是否晚于 参数日期
+		 String closeDateOld = list.get(0).getCloseDate();
+		 Date dateCloseDateOld = sdf.parse(closeDateOld);
+		 Date dateCloseDateNew = sdf.parse(closeDate);
+		 //晚于 修改数据库 改为当前参数值
+		 if(dateCloseDateOld.before(dateCloseDateNew)){
+			 bdClockinMonthService.updateClose(entity);
+			 return Result.OK("true");
+		 }
+		 //早于或等于 操作失败 返回提示
+		 return Result.error(closeDateOld+"及之前日期已关账,请勿多次操作");
+	 }
 	/**
 	 * 分页列表查询
 	 *

+ 95 - 26
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/controller/viewClockInController.java

@@ -25,8 +25,11 @@ import org.jeecg.modules.geke.shift.service.IShiftService;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.util.DateUtils2;
+import org.jeecg.modules.viewClockIn.entity.BdClose;
+import org.jeecg.modules.viewClockIn.entity.BdErrorInfo;
 import org.jeecg.modules.viewClockIn.entity.ViewClockIn;
 import org.jeecg.modules.viewClockIn.entity.bdClockinMonth;
+import org.jeecg.modules.viewClockIn.service.IBdErrorInfoService;
 import org.jeecg.modules.viewClockIn.service.IbdClockinMonthService;
 import org.jeecg.modules.viewClockIn.service.IviewClockInService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -63,32 +66,88 @@ public class viewClockInController extends JeecgController<ViewClockIn, IviewClo
 	 private IShiftService shiftService;
 	 @Autowired
 	 private workOvertimeMapper overtimeMapper;
-
-//	 public List<Map> getMap(){
-//		 LambdaQueryWrapper<Shift> query = new LambdaQueryWrapper<Shift>();
-//		 shiftService.getMap(query);
-//	 }
+	 @Autowired
+	 private IBdErrorInfoService bdErrorInfoService;
 
 
-	 ////人员考勤页面,1付薪,2累计调休,3忽略
+	 /**
+	  * 人员考勤页面,1付薪,2累计调休,3忽略
+	  * @param jsonObject
+	  * @return
+	  * @throws ParseException
+	  */
 	 @RequestMapping(value = "/fuXinInfo", method = RequestMethod.PUT)
-	 public String fuXinInfo(@RequestBody JSONObject jsonObject) throws ParseException {
-		 String viewDate = jsonObject.get("viewDate").toString();
+	 public Result<?> fuXinInfo(@RequestBody JSONObject jsonObject) throws ParseException {
+		 LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 		 String st = jsonObject.get("st").toString();
-		 String userId = jsonObject.get("userId").toString();
-			if(st.equals("1")){
-				st = "付薪";
-			}else if(st.equals("2")){
-				st = "累计调休";
-			}else{
-				st = "忽略";
-			}
+		 if(st.equals("1")){
+			 st = "付薪";
+		 }else if(st.equals("2")){
+			 st = "累计调休";
+		 }else{
+			 st = "忽略";
+		 }
+		 String w = jsonObject.get("w").toString();
+		 if(w.equals("1")){
+
+			 String viewDate1 = jsonObject.get("viewDate1").toString();
+			 String pkId = jsonObject.get("pkId").toString();
+			 //校验是否关账
+			 if(!bdClockinMonthService.ifClose(viewDate1)){
+				 return Result.error("当前月份已关账,无法此操作");
+			 }
+			 viewClockInService.updateOvertime(st,pkId,user.getUsername());
+		 }else{
+
+			 String viewDate = jsonObject.get("viewDate").toString();
+			 String userId = jsonObject.get("userId").toString();
+			 //校验是否关账
+			 if(!bdClockinMonthService.ifClose(viewDate)){
+				 return Result.error("当前月份已关账,无法此操作");
+			 }
+			 viewClockInService.fuXinInfo(st,userId,viewDate,user.getUsername());
+		 }
+
+		 return Result.OK("true");
+	 }
+
+	 /**
+	  * 异常信息校准 忽略考勤异常
+	  * @param jsonObject
+	  * @return
+	  * @throws ParseException
+	  */
+	 @RequestMapping(value = "/errorInfo", method = RequestMethod.PUT)
+	 public Result<?> errorInfo(@RequestBody JSONObject jsonObject) throws ParseException {
+		 LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+		 String viewDate = jsonObject.get("viewDate").toString();//时间
+		 //校验是否关账
+		 if(!bdClockinMonthService.ifClose(viewDate)){
+			 return Result.error(viewDate+"当前月份已关账,无法此操作");
+		 }
 
-		 viewClockInService.fuXinInfo(st,userId,viewDate);
+		 String userId = jsonObject.get("userId").toString();//用户
+		 BdErrorInfo bdErrorInfo = new BdErrorInfo();
+		 if(jsonObject.get("errorText")!= null){
+			 String errorText = jsonObject.get("errorText").toString();//忽略原因
+			 bdErrorInfo.setErrorText(errorText);
+		 }
 
-		 return "设置成功";
+		 bdErrorInfo.setUserId(userId);
+		 bdErrorInfo.setViewDate(viewDate);
+		 bdErrorInfo.setHandler(user.getUsername());
+		 bdErrorInfo.setHandlTime(new Date());
+		 bdErrorInfo.setErrorState("0");
+		 bdErrorInfoService.save(bdErrorInfo);
+		 return Result.OK("true");
 	 }
 
+	 /**
+	  * 异常信息校准(暂不使用)
+	  * @param jsonObject
+	  * @return
+	  * @throws ParseException
+	  */
 	 @RequestMapping(value = "/jiaozhun", method = RequestMethod.PUT)
 	 public Result<?> jiaozhun(@RequestBody JSONObject jsonObject) throws ParseException {
 
@@ -180,15 +239,19 @@ public class viewClockInController extends JeecgController<ViewClockIn, IviewClo
 		 if(!StringUtil.isNullOrEmpty(ids)){
 			 userId = ids.split(",");
 		 }
-//		 List<bdClockinMonth> list = bdClockinMonthService.selectAllByMonth(viewDate,userId);
-		 	try {
-				String err = bdClockinMonthService.reportIntoU8Job(viewDate,userId);
-				if(!StringUtil.isNullOrEmpty(err)){
-					return Result.error(err);
-				}
-			}catch (Exception e){
-				return Result.error(e.getMessage());
+		 //校验是否关账
+		if(!bdClockinMonthService.ifClose(viewDate)){
+			return Result.error("当前月份已关账,无法此操作");
+		}
+
+		try {
+			String err = bdClockinMonthService.reportIntoU8Job(viewDate,userId);
+			if(!StringUtil.isNullOrEmpty(err)){
+				return Result.error(err);
 			}
+		}catch (Exception e){
+			return Result.error(e.getMessage());
+		}
 
 		 return Result.OK("true");
 	 }
@@ -204,6 +267,12 @@ public class viewClockInController extends JeecgController<ViewClockIn, IviewClo
 		 try {
 		 	 Map<String,String> map = new HashMap<>();
 			 String nowDate = jsonObject.getString("nowDate");
+
+			 //校验是否关账
+			 if(!bdClockinMonthService.ifClose(nowDate)){
+				 return Result.error("当前月份已关账,无法此操作");
+			 }
+
 			 String[] date = nowDate.split("-");
 			 String userIds = jsonObject.getString("userIds");
 			 List<String> userList = new ArrayList<>();

+ 10 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/entity/BdClose.java

@@ -0,0 +1,10 @@
+package org.jeecg.modules.viewClockIn.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+@Data
+public class BdClose {
+    private String closeDate;
+    private String createBy;
+}

+ 61 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/entity/BdErrorInfo.java

@@ -0,0 +1,61 @@
+package org.jeecg.modules.viewClockIn.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+
+/**
+ * @Description: 用作关联考勤异常数据,记录忽略状态
+ * @Author: jeecg-boot
+ * @Date:   2022-02-28
+ * @Version: V1.0
+ */
+@Data
+@TableName("bd_error_info")
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@ApiModel(value="bd_error_info对象", description="用作关联考勤异常数据,记录忽略状态")
+public class BdErrorInfo {
+    
+	/**主键id-考勤信息关联处理表*/
+	@TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "主键id-考勤信息关联处理表")
+	private String id;
+	/**考勤日期*/
+	@Excel(name = "考勤日期", width = 15)
+    @ApiModelProperty(value = "考勤日期")
+	private String viewDate;
+	/**忽略原因*/
+	@Excel(name = "忽略原因", width = 15)
+    @ApiModelProperty(value = "忽略原因")
+	private String errorText;
+	/**人员编码*/
+	@Excel(name = "人员编码", width = 15)
+    @ApiModelProperty(value = "人员编码")
+	private String userId;
+	/**异常处理状态(忽略,null代表还未处理)*/
+	@Excel(name = "异常处理状态(忽略,null代表还未处理)", width = 15)
+    @ApiModelProperty(value = "异常处理状态(忽略,null代表还未处理)")
+	private String errorState;
+	/**问题处理人(忽略人)*/
+	@Excel(name = "问题处理人(忽略人)", width = 15)
+    @ApiModelProperty(value = "问题处理人(忽略人)")
+	private String handler;
+	/**问题处理时间(忽略时间)*/
+	@Excel(name = "问题处理时间(忽略时间)", width = 20, format = "yyyy-MM-dd HH:mm:ss")
+	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "问题处理时间(忽略时间)")
+	private Date handlTime;
+}

+ 7 - 8
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/entity/ViewClockIn.java

@@ -33,6 +33,7 @@ public class ViewClockIn {
 	private String jzTime;//最后校准时间
 	private String jzBy;//最后校准人
 
+
 	private String pkId;//临时主键 (例:100131&2021-12-01)
 	/**真实姓名*/
 	@Excel(name = "真实姓名", width = 15)
@@ -113,14 +114,7 @@ public class ViewClockIn {
 	@Excel(name = "closingDate", width = 15)
     @ApiModelProperty(value = "closingState")
 	private String closingState;
-	/**加班事由*/
-	@Excel(name = "加班事由", width = 15)
-    @ApiModelProperty(value = "加班事由")
-	private String demo;
-	/**
-	 * 加班申请时间
-	 */
-	private String commitDate;
+
 	/**加班时长*/
 	@Excel(name = "加班时长", width = 15)
     @ApiModelProperty(value = "加班时长")
@@ -167,5 +161,10 @@ public class ViewClockIn {
 	 * 当日打卡次数
 	 */
 	private String attendanceCount;
+	/**
+	 * 是否忽略本次异常
+	 */
+	private String errorState;
 
+	private String errorText;//忽略原因
 }

+ 17 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/BdErrorInfoMapper.java

@@ -0,0 +1,17 @@
+package org.jeecg.modules.viewClockIn.mapper;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.viewClockIn.entity.BdErrorInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * @Description: 用作关联考勤异常数据,记录忽略状态
+ * @Author: jeecg-boot
+ * @Date:   2022-02-28
+ * @Version: V1.0
+ */
+public interface BdErrorInfoMapper extends BaseMapper<BdErrorInfo> {
+
+}

+ 20 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/bdClockinMonthMapper.java

@@ -5,6 +5,7 @@ import java.util.Map;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import org.apache.ibatis.annotations.Param;
+import org.jeecg.modules.viewClockIn.entity.BdClose;
 import org.jeecg.modules.viewClockIn.entity.bdClockinMonth;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -71,4 +72,23 @@ public interface bdClockinMonthMapper extends BaseMapper<bdClockinMonth> {
 
     int updateSy(@Param("list") List<bdClockinMonth> list);
 
+    /**
+     * 插入关账日期
+     * @param bdClose
+     * @return
+     */
+    int insertClose(BdClose bdClose);
+
+    /**
+     * 修改关账日期
+     * @param bdClose
+     * @return
+     */
+    int updateClose(BdClose bdClose);
+
+    /**
+     * 查询所有关账数据
+     * @return
+     */
+    List<BdClose> selectClose();
 }

+ 3 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/viewClockInMapper.java

@@ -16,7 +16,9 @@ import java.util.Map;
  */
 public interface viewClockInMapper extends BaseMapper<ViewClockIn> {
 
-    int fuXinInfo(String st,String userId,String viewDate);
+    int fuXinInfo(String st,String userId,String viewDate,String username);
+
+    int updateOvertime(String st,String id,String username);
 
     List<Map<String,Object>> selectErrorNum(String viewDate);
 

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/xml/BdErrorInfoMapper.xml

@@ -0,0 +1,5 @@
+<?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="org.jeecg.modules.viewClockIn.mapper.BdErrorInfoMapper">
+
+</mapper>

+ 11 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/xml/bdClockinMonthMapper.xml

@@ -231,6 +231,17 @@
         </foreach>
     </update>
 
+    <insert id="insertClose">
+        insert into bd_close (close_date,create_time,create_by)
+        values (#{closeDate},now(),#{createBy})
+    </insert>
+
+    <update id="updateClose">
+        update bd_close set close_date = #{closeDate} ,create_time = now() ,create_by = #{createBy}
+    </update>
 
+    <select id="selectClose"  resultType="org.jeecg.modules.viewClockIn.entity.BdClose">
+        select * from bd_close
+    </select>
 
 </mapper>

+ 6 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/mapper/xml/viewClockInMapper.xml

@@ -34,10 +34,15 @@
        <!-- update geke_attendance set set_info = #{st}
         where user_id =#{userId} and date_format( user_date, '%Y-%m-%d' ) = #{viewDate} -->
 
-        update bd_work_overtime set set_info = #{st}
+        update bd_work_overtime set set_info = #{st},update_name = #{username},update_date = NOW()
         where person =#{userId} and date_format( begin_date, '%Y-%m-%d' ) = #{viewDate}
     </update>
 
+    <update id="updateOvertime">
+        update bd_work_overtime set set_info = #{st},update_name = #{username},update_date = NOW()
+        where id =#{id}
+    </update>
+
     <select id="selectErrorNum"  resultType="Map">
 
         select a.depart_name departname,a.usernum,c.errornum from view_user_num A

+ 14 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/IBdErrorInfoService.java

@@ -0,0 +1,14 @@
+package org.jeecg.modules.viewClockIn.service;
+
+import org.jeecg.modules.viewClockIn.entity.BdErrorInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * @Description: 用作关联考勤异常数据,记录忽略状态
+ * @Author: jeecg-boot
+ * @Date:   2022-02-28
+ * @Version: V1.0
+ */
+public interface IBdErrorInfoService extends IService<BdErrorInfo> {
+
+}

+ 28 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/IbdClockinMonthService.java

@@ -1,6 +1,7 @@
 package org.jeecg.modules.viewClockIn.service;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import org.jeecg.modules.viewClockIn.entity.BdClose;
 import org.jeecg.modules.viewClockIn.entity.ViewClockIn;
 import org.jeecg.modules.viewClockIn.entity.bdClockinMonth;
 import com.baomidou.mybatisplus.extension.service.IService;
@@ -30,4 +31,31 @@ public interface IbdClockinMonthService extends IService<bdClockinMonth> {
     int updateSy(List<bdClockinMonth> list);
 
     String reportIntoU8Job(String nowDate,String[] ids);
+
+    /**
+     * 插入关账日期
+     * @param bdClose
+     * @return
+     */
+    public int insertClose(BdClose bdClose);
+
+    /**
+     * 修改关账日期
+     * @param bdClose
+     * @return
+     */
+    public int updateClose(BdClose bdClose);
+
+    /**
+     * 查询所有关账数据
+     * @return
+     */
+    public List<BdClose> selectClose();
+
+    /**
+     * 是否已关账
+     * @param viewDate
+     * @return
+     */
+    public boolean ifClose(String viewDate);
 }

+ 2 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/IviewClockInService.java

@@ -12,7 +12,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IviewClockInService extends IService<ViewClockIn> {
 
-    public int fuXinInfo(String st, String userId, String viewDate);
-
+    public int fuXinInfo(String st, String userId, String viewDate,String username);
+    public int updateOvertime(String st,String id,String username);
     public Page<ViewClockIn> selectPage(Page<ViewClockIn> page);
 }

+ 19 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/impl/BdErrorInfoServiceImpl.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.viewClockIn.service.impl;
+
+import org.jeecg.modules.viewClockIn.entity.BdErrorInfo;
+import org.jeecg.modules.viewClockIn.mapper.BdErrorInfoMapper;
+import org.jeecg.modules.viewClockIn.service.IBdErrorInfoService;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * @Description: 用作关联考勤异常数据,记录忽略状态
+ * @Author: jeecg-boot
+ * @Date:   2022-02-28
+ * @Version: V1.0
+ */
+@Service
+public class BdErrorInfoServiceImpl extends ServiceImpl<BdErrorInfoMapper, BdErrorInfo> implements IBdErrorInfoService {
+
+}

+ 75 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/impl/bdClockinMonthServiceImpl.java

@@ -1,6 +1,9 @@
 package org.jeecg.modules.viewClockIn.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import io.netty.util.internal.StringUtil;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.viewClockIn.entity.BdClose;
 import org.jeecg.modules.viewClockIn.entity.ViewClockIn;
 import org.jeecg.modules.viewClockIn.entity.bdClockinMonth;
 import org.jeecg.modules.viewClockIn.mapper.bdClockinMonthMapper;
@@ -11,6 +14,10 @@ import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -48,10 +55,36 @@ public class bdClockinMonthServiceImpl extends ServiceImpl<bdClockinMonthMapper,
     public int insertU8WaGZData(List<bdClockinMonth> list){
         return clockinMonthMapper.insertU8WaGZData(list);
     }
+
     public int updateSy(List<bdClockinMonth> list){
         return clockinMonthMapper.updateSy(list);
     }
 
+    /**
+     * 插入关账日期
+     * @param bdClose
+     * @return
+     */
+    public int insertClose(BdClose bdClose) {
+        return clockinMonthMapper.insertClose(bdClose);
+    }
+
+    /**
+     * 修改关账日期
+     * @param bdClose
+     * @return
+     */
+    public int updateClose(BdClose bdClose){
+        return clockinMonthMapper.updateClose(bdClose);
+    }
+
+    /**
+     * 查询所有关账数据
+     * @return
+     */
+    public List<BdClose> selectClose(){
+        return clockinMonthMapper.selectClose();
+    }
 
     /**
      * 定时任务,同步月报至u8
@@ -86,4 +119,46 @@ public class bdClockinMonthServiceImpl extends ServiceImpl<bdClockinMonthMapper,
         return "";
     }
 
+    /**
+     * 根据传入日期,判断是否已关账
+     * @param viewDate
+     * @return
+     */
+    public boolean ifClose(String viewDate){
+
+        if(StringUtil.isNullOrEmpty(viewDate)){
+            return false;
+        }
+        //查询所有数据
+        List<BdClose> list = clockinMonthMapper.selectClose();
+        if(list.size() == 0){
+            return true;
+        }
+
+        try {
+            DateFormat sdf = new SimpleDateFormat("yyyy-MM");
+            String closeDateOld = list.get(0).getCloseDate();
+            Date dateCloseDateOld = sdf.parse(closeDateOld);
+            Date dateCloseDateNew = sdf.parse(viewDate);
+            //如果传入时间早于等于关账时间
+            if(dateCloseDateOld.before(dateCloseDateNew)){
+                return true;
+            }else{
+                return false;
+            }
+        }catch (Exception e){
+            return false;
+        }
+
+    }
+
+    public static void main(String[] args) throws ParseException {
+
+
+//        DateFormat sdf = new SimpleDateFormat("yyyy-MM");
+//        System.out.println(sdf.parse("2022-01-11"));
+//        System.out.println(sdf.parse("2022-01-21"));
+//        System.out.println(sdf.parse("2022-02-21"));
+    }
+
 }

+ 6 - 2
jeecg-boot-module-system/src/main/java/org/jeecg/modules/viewClockIn/service/impl/viewClockInServiceImpl.java

@@ -21,8 +21,12 @@ public class viewClockInServiceImpl extends ServiceImpl<viewClockInMapper, ViewC
     @Autowired
     private viewClockInMapper viewClockInMapper1;
 
-    public int fuXinInfo(String st,String userId,String viewDate) {
-        return viewClockInMapper1.fuXinInfo(st,userId,viewDate);
+    public int fuXinInfo(String st,String userId,String viewDate,String username) {
+        return viewClockInMapper1.fuXinInfo(st,userId,viewDate,username);
+    }
+
+    public int updateOvertime(String st,String id,String username) {
+        return viewClockInMapper1.updateOvertime(st,id,username);
     }
 
 //    @Override

+ 16 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/controller/workOvertimeController.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.workOvertime.controller;
 
+import java.text.ParseException;
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
@@ -9,6 +10,7 @@ import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import com.alibaba.fastjson.JSONObject;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
@@ -212,4 +214,18 @@ public class workOvertimeController extends JeecgController<workOvertime, IworkO
       return super.importExcel(request, response, workOvertime.class);
   }
 
+	 /**
+	  * 获取加班信息
+	  * @param jsonObject
+	  * @return
+	  * @throws ParseException
+	  */
+	 @RequestMapping(value = "/getJiaBan", method = RequestMethod.PUT)
+	 public List<workOvertime> getJiaBan(@RequestBody JSONObject jsonObject) throws ParseException {
+		 String viewDate = jsonObject.get("viewDate").toString();
+		 String username = jsonObject.get("username").toString();
+		 List<workOvertime> list = workOvertimeService.getJiaBan(username,viewDate);
+		 return list;
+	 }
+
 }

+ 0 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/mapper/workOvertimeMapper.java

@@ -23,7 +23,6 @@ public interface workOvertimeMapper extends BaseMapper<workOvertime> {
     /**
      * 根据时间和人员编码获取加班信息
      * @param person
-     * @param getJiaBan
      * @return
      */
     List<workOvertime>getJiaBan(@Param("person")String person,@Param("viewDate")String viewDate);

+ 5 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/workOvertime/service/impl/workOvertimeServiceImpl.java

@@ -2,6 +2,7 @@ package org.jeecg.modules.workOvertime.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.ibatis.annotations.Param;
 import org.jeecg.common.util.DateUtils;
 import org.jeecg.modules.system.entity.SysDepart;
 import org.jeecg.modules.system.service.ISysDepartService;
@@ -30,6 +31,10 @@ public class workOvertimeServiceImpl extends ServiceImpl<workOvertimeMapper, wor
     @Autowired
     private ISysDepartService sysDepartService;
 
+    public List<workOvertime> getJiaBan(String person, String viewDate) {
+        return works.getJiaBan(person,viewDate);
+    }
+
     @Override
     public Boolean workSave(workOvertime work) {
 //        Boolean b=true;