liupeng 5 anos atrás
pai
commit
7198d4386e

+ 8 - 6
code/sapparent/sapcms/src/main/java/org/fouram/controller/ReportController.java

@@ -44,14 +44,14 @@ public class ReportController extends BaseController {
 	@ResponseBody
 	public Object initReport() {
 		try {
-			Date startDate = DateUtil.sdfTime.parse("2020-05-11 00:00:00");
-			Date endDate = DateUtil.sdfTime.parse("2020-05-15 23:59:59");
+			String startDay = "2020-05-11";
+			String endDay = "2020-05-15";
 			wxDepartService.saveDeparts(); // ok
 			wxUserService.saveUsers(); // ok
-			sapCheckService.saveAllUserCheckData(startDate, endDate);
+			sapCheckService.saveCheckInOffOuts(startDay, endDay);
 			employeeTimeService.saveEmployeeTimes(); // ok
 			sapCheckOptionService.saveOptions(); // ok
-			sapApprovalInfoService.saveApprovalInfos(DateUtil.sdfYear_MMonth.format(endDate)); // ok
+			sapApprovalInfoService.saveApprovalInfos(endDay); // ok
 			return AppUtil.success();
 		} catch (Exception e) {
 			LoggerUtil.error(e);
@@ -68,8 +68,10 @@ public class ReportController extends BaseController {
 	@ResponseBody
 	public Object saveReport() {
 		try {
-			sapCheckService.updateReportBaseData();
-			sapCheckService.saveReportResultData();
+			String startDay = "2020-05-11";
+			String endDay = "2020-05-15";
+			sapCheckService.updateReportBaseData(startDay, endDay);
+			sapCheckService.saveReportResultData(startDay, endDay);
 			return AppUtil.success();
 		} catch (Exception e) {
 			LoggerUtil.error(e);

+ 6 - 6
code/sapparent/sapservice/src/main/java/org/fouram/mapper/SapCheckMapper.xml

@@ -1,8 +1,8 @@
 <?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="SapCheckMapper">
-	<update id="truncateCheckin">
-		truncate table sap_checkin
+	<update id="deleteCheckin">
+		delete from sap_checkin where checkinDay >= #{startDay} and checkinDay &lt;= #{endDay}
 	</update>
 	<insert id="saveCheckin">
 		insert into sap_checkin(userId,groupName,checkinType,checkinDate,checkinDay,exceptionType,
@@ -10,8 +10,8 @@
 		values (#{userId},#{groupName},#{checkinType},#{checkinDate},#{checkinDay},#{exceptionType},
 			#{checkinTime},#{locationTitle},#{locationDetail},#{wifiName},#{wifiMac})
 	</insert>
-	<update id="truncateCheckoff">
-		truncate table sap_checkoff
+	<update id="deleteCheckoff">
+		delete from sap_checkoff where checkinDay >= #{startDay} and checkinDay &lt;= #{endDay}
 	</update>
 	<insert id="saveCheckoff">
 		insert into sap_checkoff(userId,groupName,checkinType,checkinDate,checkinDay,exceptionType,
@@ -19,8 +19,8 @@
 		values (#{userId},#{groupName},#{checkinType},#{checkinDate},#{checkinDay},#{exceptionType},
 			#{checkinTime},#{locationTitle},#{locationDetail},#{wifiName},#{wifiMac})
 	</insert>
-	<update id="truncateCheckout">
-		truncate table sap_checkout
+	<update id="deleteCheckout">
+		delete from sap_checkout where checkinDay >= #{startDay} and checkinDay &lt;= #{endDay}
 	</update>
 	<insert id="saveCheckout">
 		insert into sap_checkout(userId,groupName,checkinType,checkinDate,checkinDay,exceptionType,

+ 20 - 14
code/sapparent/sapservice/src/main/java/org/fouram/service/SapCheckService.java

@@ -24,16 +24,23 @@ import me.chanjar.weixin.cp.bean.oa.WxCpCheckinData;
 
 @Service
 public class SapCheckService extends BaseService {
-	
+
 	@Autowired
 	private WxUserService wxUserService;
 
-	public void saveAllUserCheckData(Date startDate, Date endDate) throws Exception {
+	public void saveCheckInOffOuts(String startDay, String endDay) throws Exception {
 		LoggerUtil.info("执行微信打卡开始" + DateUtil.getTime());
-		// 清空表记录
-		update("SapCheckMapper.truncateCheckin", null);
-		update("SapCheckMapper.truncateCheckoff", null);
-		update("SapCheckMapper.truncateCheckout", null);
+		Map<String, String> param = Maps.newHashMap();
+		param.put("startDay", startDay);
+		param.put("endDay", endDay);
+
+		// 重新生成制定日期范围内的打卡数据
+		update("SapCheckMapper.deleteCheckin", param);
+		update("SapCheckMapper.deleteCheckoff", param);
+		update("SapCheckMapper.deleteCheckout", param);
+
+		Date startDate = DateUtil.sdfTime.parse(startDay + " 00:00:00");
+		Date endDate = DateUtil.sdfTime.parse(endDay + " 23:59:59");
 
 		List<String> userIds = wxUserService.selectAllUserIds();
 		Map<String, List<String>> map = groupList(userIds);
@@ -55,16 +62,14 @@ public class SapCheckService extends BaseService {
 				}
 			}
 		}
-		
-		Map<String, String> param = Maps.newHashMap();
-		param.put("startDay", DateUtil.getDay(startDate));
-		param.put("endDay", DateUtil.getDay(endDate));
+
+		// 生成制定日期每天外出打开开始和结束时间
 		update("SapCheckMapper.deleteCheckoutStart", param);
 		update("SapCheckMapper.deleteCheckoutEnd", param);
 		update("SapCheckMapper.saveCheckoutStart1", param);
 		update("SapCheckMapper.saveCheckoutStart2", param);
 		update("SapCheckMapper.saveCheckoutEnd", param);
-		
+
 		LoggerUtil.info("执行微信打卡结束" + DateUtil.getTime());
 	}
 
@@ -81,7 +86,7 @@ public class SapCheckService extends BaseService {
 	}
 
 	@SuppressWarnings("unchecked")
-	public void updateReportBaseData() throws Exception {
+	public void updateReportBaseData(String startDay, String endDay) throws Exception {
 		// 处理重复数据
 		List<SapCheck> sapChecks = (List<SapCheck>) findList("SapCheckMapper.selectRepeatCheckin", null);
 		Set<String> checkinDays = Sets.newHashSet();
@@ -125,7 +130,7 @@ public class SapCheckService extends BaseService {
 	}
 
 	@SuppressWarnings("unchecked")
-	public void saveReportResultData() throws Exception {
+	public void saveReportResultData(String startDay, String endDay) throws Exception {
 		// 生成报表数据
 		update("SapCheckMapper.truncateCheckReport", null);
 		update("SapCheckMapper.saveCheckReport", null);
@@ -153,7 +158,8 @@ public class SapCheckService extends BaseService {
 		checkReports = (List<SapCheckReport>) findList("SapCheckMapper.selectExceptionList", null);
 		for (SapCheckReport checkReport : checkReports) {
 			// TODO 由于刚开始使用微信打开,所以特殊处理下,上下班只要一个正常就算正常或者有补卡
-			if (isOkWorkTime(checkReport) || isOkOffWorkTime(checkReport) || StringUtils.isNotBlank(checkReport.getBukaDay())) {
+			if (isOkWorkTime(checkReport) || isOkOffWorkTime(checkReport)
+					|| StringUtils.isNotBlank(checkReport.getBukaDay())) {
 				update("SapCheckMapper.updateResultOk", checkReport.getId());
 			}
 		}