1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054 |
- package com.idea.oa.apply.controller;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.github.pagehelper.PageInfo;
- import com.idea.oa.apply.model.ApplyOffWork;
- import com.idea.oa.apply.model.ApplyOffWorkTime;
- import com.idea.oa.apply.model.ApplyOffWorkTimeExample;
- import com.idea.oa.apply.model.inout.AddConfirmResult;
- import com.idea.oa.apply.model.inout.ApplyOffWorkIn;
- import com.idea.oa.apply.model.inout.UseDays;
- import com.idea.oa.apply.service.ApplyOffWorkService;
- import com.idea.oa.apply.service.ApplyOffWorkTimeService;
- import com.idea.oa.apply.util.constant.ConstantFlowType;
- import com.idea.oa.flow2.model.FlowMain;
- import com.idea.oa.flow2.model.FlowMainPush;
- import com.idea.oa.flow2.model.in.FlowMainCcVo;
- import com.idea.oa.flow2.service.FlowMainCcService;
- import com.idea.oa.flow2.service.FlowMainPushService;
- import com.idea.oa.flow2.service.FlowMainService;
- import com.idea.oa.holidayManagement.model.HolidayManagement;
- import com.idea.oa.holidayManagement.model.HolidayManagementExample;
- import com.idea.oa.holidayManagement.model.out.HolidayTime;
- import com.idea.oa.holidayManagement.service.HolidayManagementService;
- import com.rockstar.common.base.BaseController;
- import com.rockstar.common.domain.AjaxResult;
- import com.rockstar.flow.exception.FlowException;
- import com.rockstar.frame.model.extend.DateTrans;
- import com.rockstar.frame.model.extend.TableSplitResult;
- import com.rockstar.frame.model.extend.Tablepar;
- import com.rockstar.shiro.util.ShiroUtils;
- import io.swagger.annotations.Api;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.StringUtils;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
- import java.math.BigDecimal;
- import java.math.MathContext;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * Created by zt
- */
- @Controller
- @RequestMapping(value = "/ApplyOffWorkController")
- @Api(value = "申请流程/分表_申请请假表")
- public class ApplyOffWorkController extends BaseController {
- //主表
- @Autowired
- private ApplyOffWorkService modelService;
- @Autowired
- private HolidayManagementService holidayManagementService;
- @Autowired
- private FlowMainService flowMainService;
- @Autowired
- private ApplyOffWorkTimeService applyOffWorkTimeService;
- @Autowired
- private FlowMainCcService flowMainCcService;
- @Autowired
- private FlowMainPushService flowMainPushService;
- /**
- * 查询 请假统计详细
- * @param tablepar
- * @param name
- * @param startTime
- * @param endTime
- * @return
- */
- @PostMapping(value = "findApplyOffWorkListByInfo", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public TableSplitResult findOffWorkListByInfo(Tablepar tablepar, String name,String startTime,String endTime) {
- PageInfo<Map> page=modelService.findOffWorkListByInfo(tablepar, name, startTime, endTime);
- TableSplitResult<Map> result=new TableSplitResult<>(page.getPageNum(), page.getTotal(), page.getList());
- return result;
- }
- @PostMapping(value = "findAllApplyOffWorkListByInfo", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public List<Map> findAllApplyOffWorkListByInfo(String name,String startTime,String endTime) {
- List<Map> result=modelService.findAllApplyOffWorkListByInfo(name, startTime, endTime);
- return result;
- }
- /**
- * 申请人撤回申请
- *
- * @param flowMainid
- * @return
- */
- @PostMapping(value = "recallApply", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public AjaxResult recallApply(String flowMainid) {
- AjaxResult ajaxResult = flowMainService.recallApply(flowMainid);
- if (new Integer(200).equals(ajaxResult.get("code"))) {
- FlowMain flowMain = flowMainService.selectByPrimaryKey(flowMainid);
- //添加业务信息(将请假信息中的修改掉,剩余年假,剩余调休,冻结年假,冻结调休都修改掉)
- ApplyOffWorkTimeExample example = new ApplyOffWorkTimeExample();
- example.createCriteria().andOffWorkIdEqualTo(flowMain.getFormId());
- List<ApplyOffWorkTime> applyOffWorkTimes = applyOffWorkTimeService.selectByExample(example);
- BigDecimal totalTiaoXiu = new BigDecimal(0);//所有调休假小时
- BigDecimal totalNianJia = new BigDecimal(0);//所有年假天数
- // BigDecimal totalShiJia = new BigDecimal(0);//所有事假天数(因为不需要修改假期管理,所以不需要单独进行计算)
- {
- // ApplyOffWork applyOffWork = modelService.selectByPrimaryKey(flowMainPush.getFormId());
- for (ApplyOffWorkTime applyOffWorkTime : applyOffWorkTimes) {
- {//修改请假表,将请假表的对应数据添加冻结时间,并减去可用时间
- if (applyOffWorkTime.getOffWorkType().equals("1")) {//1年假
- totalNianJia = totalNianJia.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- } else if (applyOffWorkTime.getOffWorkType().equals("3")) {//3调休
- totalTiaoXiu = totalTiaoXiu.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- } else if (applyOffWorkTime.getOffWorkType().equals("2")) {//2事假
- // totalShiJia=totalShiJia.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- }
- }
- }
- }
- if (true) {
- String createdById = applyOffWorkTimes.get(0).getCreatedBy();
- HolidayManagementExample holidayManagementExample = new HolidayManagementExample();
- holidayManagementExample.createCriteria().andUserIdEqualTo(createdById);
- List<HolidayManagement> holidayManagements = holidayManagementService.selectByExample(holidayManagementExample);
- if (holidayManagements.isEmpty()) {
- return result(0);
- }
- if (false) {//如果是最后 并且同意了,就进行下面的操作,或者不同意就进行另一种操作,
- //如果是同意了
- {
- HolidayManagement holidayManagement = holidayManagements.get(0);
- if (totalNianJia.doubleValue() > 0) {//存在年假修改
- Double freezeHolidayTime = holidayManagement.getFreezeHolidayTime();
- // Double restHolidayTime = holidayManagement.getRestHolidayTime();
- double v = new BigDecimal(freezeHolidayTime).subtract(totalNianJia, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeHolidayTime(v);
- }
- if (totalTiaoXiu.doubleValue() > 0) {//存在调休假修改
- Double freezeExchangeTime = holidayManagement.getFreezeExchangeTime();
- double v = new BigDecimal(freezeExchangeTime).subtract(totalTiaoXiu, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeExchangeTime(v);
- }
- holidayManagement.setUpdatedBy(ShiroUtils.getUser().getId());
- holidayManagement.setUpdatedAt(new Date());
- holidayManagementService.updateByPrimaryKeySelective(holidayManagement);
- }
- } else {
- //如果是不同意
- {
- HolidayManagement holidayManagement = holidayManagements.get(0);
- if (totalNianJia.doubleValue() > 0) {//存在年假修改
- Double freezeHolidayTime = holidayManagement.getFreezeHolidayTime();
- double v = new BigDecimal(freezeHolidayTime).subtract(totalNianJia, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeHolidayTime(v);
- Double restHolidayTime = holidayManagement.getRestHolidayTime();
- double v1 = new BigDecimal(restHolidayTime).add(totalNianJia, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setRestHolidayTime(v1);
- }
- if (totalTiaoXiu.doubleValue() > 0) {//存在调休假修改
- Double freezeExchangeTime = holidayManagement.getFreezeExchangeTime();
- double v = new BigDecimal(freezeExchangeTime).subtract(totalTiaoXiu, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeExchangeTime(v);
- Double restExchangeTime = holidayManagement.getRestExchangeTime();
- double v1 = new BigDecimal(restExchangeTime).add(totalTiaoXiu, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setRestExchangeTime(v1);
- }
- holidayManagement.setUpdatedBy(ShiroUtils.getUser().getId());
- holidayManagement.setUpdatedAt(new Date());
- holidayManagementService.updateByPrimaryKeySelective(holidayManagement);
- }
- }
- }
- }
- return ajaxResult;
- }
- /**
- * 添加审核结果
- * 根据不同的状态值confirmResult判断是 1:审核通过,转下一步;2:退回发起人;3:退回上节点;4:结束流程;
- *
- * @param addConfirmResult
- * @return
- */
- @PostMapping(value = "AddConfirmResultOffWork", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- @Transactional
- public AjaxResult AddConfirmResultOffWork(AddConfirmResult addConfirmResult) throws FlowException, ParseException {
- System.out.println("AddConfirmResultOffWork");
- System.out.println(addConfirmResult);
- if (addConfirmResult.getConfirmResult() == null) {
- return result(-1);
- }
- String deploymentid = ConstantFlowType.OFF_WORK_DEPLOYMENTID;
- String constantFlowType = ConstantFlowType.OFF_WORK;
- FlowMainPush flowMainPush = flowMainPushService.selectByPrimaryKey(addConfirmResult.getFlowMainPushId());
- ApplyOffWorkTimeExample example = new ApplyOffWorkTimeExample();
- example.createCriteria().andOffWorkIdEqualTo(flowMainPush.getFormId());
- List<ApplyOffWorkTime> applyOffWorkTimes = applyOffWorkTimeService.selectByExample(example);
- BigDecimal hour_totalTiaoXiu = new BigDecimal(0);//所有调休假小时
- BigDecimal day_totalNianJia = new BigDecimal(0);//所有年假天数
- BigDecimal hour_totalShiJia = new BigDecimal(0);//所有事假天数
- BigDecimal day_total_BingJia_hunjia_chanjia_peichanjia_sangjia = new BigDecimal(0);//所有,4病假,5婚假,6产假,7陪产假,8丧假 ,最小为0.5天
- String isOkString = null;
- {//进行审核判断
- {
- // ApplyOffWork applyOffWork = modelService.selectByPrimaryKey(flowMainPush.getFormId());
- for (ApplyOffWorkTime applyOffWorkTime : applyOffWorkTimes) {
- {//修改请假表,将请假表的对应数据添加冻结时间,并减去可用时间
- if (applyOffWorkTime.getOffWorkType().equals("1")) {//1年假
- day_totalNianJia = day_totalNianJia.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- } else if (applyOffWorkTime.getOffWorkType().equals("3")) {//3调休
- hour_totalTiaoXiu = hour_totalTiaoXiu.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- } else if (applyOffWorkTime.getOffWorkType().equals("2")) {//2事假
- hour_totalShiJia = hour_totalShiJia.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- } else if (applyOffWorkTime.getOffWorkType().equals("4") || applyOffWorkTime.getOffWorkType().equals("4") || applyOffWorkTime.getOffWorkType().equals("5") || applyOffWorkTime.getOffWorkType().equals("5")
- || applyOffWorkTime.getOffWorkType().equals("6") || applyOffWorkTime.getOffWorkType().equals("6") || applyOffWorkTime.getOffWorkType().equals("7") || applyOffWorkTime.getOffWorkType().equals("7")
- || applyOffWorkTime.getOffWorkType().equals("8") || applyOffWorkTime.getOffWorkType().equals("8")) {//4病假,5婚假,6产假,7陪产假,8丧假 ,最小为0.5天
- day_total_BingJia_hunjia_chanjia_peichanjia_sangjia = day_total_BingJia_hunjia_chanjia_peichanjia_sangjia.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- }
- }
- }
- }
- //添加判断条件
- HashMap<String, Object> feeMoneyTotalMap = new HashMap<>();
- if (hour_totalTiaoXiu.doubleValue() > 0 && day_totalNianJia.doubleValue() <= 0 && hour_totalShiJia.doubleValue() <= 0 && day_total_BingJia_hunjia_chanjia_peichanjia_sangjia.doubleValue() <= 0) {
- //假别仅有调休假
- // String isExchangeOnly = conditionMap.get("isExchangeOnly").toString();
- // Integer applyDay = Integer.valueOf(conditionMap.get("applyDay").toString());
- feeMoneyTotalMap.put("isExchangeOnly", "yes");
- feeMoneyTotalMap.put("applyDay", 0);
- } else {
- BigDecimal addDay = hour_totalTiaoXiu.add(hour_totalShiJia).divide(new BigDecimal(ConstantFlowType.ONE_DAY_TIME), 2, BigDecimal.ROUND_HALF_UP);
- if (addDay.add(day_totalNianJia).add(day_total_BingJia_hunjia_chanjia_peichanjia_sangjia).doubleValue() > 3) {
- // 假期天数合计>3天
- feeMoneyTotalMap.put("isExchangeOnly", "no");
- feeMoneyTotalMap.put("applyDay", 4);
- } else {
- feeMoneyTotalMap.put("isExchangeOnly", "no");
- feeMoneyTotalMap.put("applyDay", 0);
- }
- }
- isOkString = flowMainService.doConfirmResult(addConfirmResult, deploymentid, constantFlowType, flowMainPush, feeMoneyTotalMap);
- if (!"ok_end".equals(isOkString) && !"ok_noEnd".equals(isOkString)) {
- return AjaxResult.error(isOkString);
- }
- }
- Boolean isEnd = false;//是否结束
- Boolean isAgree = false;//是否同意
- if (addConfirmResult.getConfirmResult().equals("4")) {//结束流程
- isEnd = true;
- isAgree = false;
- } else if (addConfirmResult.getConfirmResult().equals("1")) {//1:审核通过,转下一步
- if ("ok_end".equals(isOkString)) {
- isEnd = true;
- isAgree = true;
- }
- }
- //添加业务信息(将请假信息中的修改掉,剩余年假,剩余调休,冻结年假,冻结调休都修改掉)
- if (isEnd) {
- String createdById = applyOffWorkTimes.get(0).getCreatedBy();
- HolidayManagementExample holidayManagementExample = new HolidayManagementExample();
- holidayManagementExample.createCriteria().andUserIdEqualTo(createdById);
- List<HolidayManagement> holidayManagements = holidayManagementService.selectByExample(holidayManagementExample);
- if (holidayManagements.isEmpty()) {
- return result(0);
- }
- if (isAgree) {//如果是最后 并且同意了,就进行下面的操作,或者不同意就进行另一种操作,
- this.booleanIsAgree(holidayManagements,day_totalNianJia,hour_totalTiaoXiu,applyOffWorkTimes,createdById);
- {//移动到booleanIsAgree方法中去了
- // //如果是同意了
- // {
- // HolidayManagement holidayManagement = holidayManagements.get(0);
- // if (day_totalNianJia.doubleValue() > 0) {//存在年假修改
- // Double freezeHolidayTime = holidayManagement.getFreezeHolidayTime();
- //// Double restHolidayTime = holidayManagement.getRestHolidayTime();
- // double v = new BigDecimal(freezeHolidayTime).subtract(day_totalNianJia, MathContext.DECIMAL32).doubleValue();
- // holidayManagement.setFreezeHolidayTime(v);
- // }
- // if (hour_totalTiaoXiu.doubleValue() > 0) {//存在调休假修改
- // Double freezeExchangeTime = holidayManagement.getFreezeExchangeTime();
- // double v = new BigDecimal(freezeExchangeTime).subtract(hour_totalTiaoXiu, MathContext.DECIMAL32).doubleValue();
- // holidayManagement.setFreezeExchangeTime(v);
- // }
- //
- // holidayManagement.setUpdatedBy(ShiroUtils.getUser().getId());
- // holidayManagement.setUpdatedAt(new Date());
- //
- // holidayManagementService.updateByPrimaryKeySelective(holidayManagement);
- // }
- // {//审核通过后 在oa_work_attendance_log表中添加记录
- // for (ApplyOffWorkTime applyOffWorkTime : applyOffWorkTimes) {
- // WorkAttendanceLog workAttendanceLog = new WorkAttendanceLog();
- //
- //
- //// //=========================下面是重要的数据
- //// user_id varchar (64) DEFAULT NULL COMMENT '用户id 姓名/部门/岗位',
- //// `do_day`date DEFAULT NULL COMMENT '发生的日期',
- //// `happen_type` int(4) DEFAULT NULL COMMENT
- //// '1年假,2调休,3事假,4病假,5婚假,6产假,7陪产假,8丧假,9加班,10迟到,11早退,12旷工,13外出,14居家,15出差',
- //// //=========================上面是重要的数据
- //// do_start_time datetime DEFAULT NULL COMMENT '发生开始时间',
- //// do_end_time datetime DEFAULT NULL COMMENT '发生结束时间',
- //// `use_time`decimal(5, 2) DEFAULT NULL COMMENT '消耗时间(比如加班/调休时间小时)',
- //// from_table_id varchar(64) DEFAULT NULL COMMENT '来源表id',
- //// from_table_name varchar(64) DEFAULT NULL COMMENT '来源表名称',
- //
- // workAttendanceLog.setUserId(createdById);
- // workAttendanceLog.setDoDay(applyOffWorkTime.getStartDay());
- // workAttendanceLog.setHappenType(offWorkTypeChangehappenType(applyOffWorkTime.getOffWorkType()));//'1年假,2调休,3事假,4病假,5婚假,6产假,7陪产假,8丧假,9加班,10迟到,11早退,12旷工,13外出,14居家,15出差',
- // workAttendanceLog.setFromTableId(applyOffWorkTime.getId());
- // workAttendanceLog.setFromTableName("apply_off_work_time");
- //
- //
- // workAttendanceLog.setCreatedBy(ShiroUtils.getUser().getId());
- // workAttendanceLog.setCreatedAt(new Date());
- // workAttendanceLog.setStatus(0);
- // workAttendanceLog.setUpdatedAt(workAttendanceLog.getCreatedAt());
- // workAttendanceLog.setUpdatedBy(workAttendanceLog.getCreatedBy());
- //
- //
- // //年假 上午/下午/全天
- // //事假/调休 是时间:24小时如08:00',
- // //如果有跨天的问题需要新建多条数据日志
- //// '请假类型(1年假,2事假,3调休,4病假,5婚假,6产假,7陪产假,8丧假)',
- // if (applyOffWorkTime.getOffWorkType().equals("2") || applyOffWorkTime.getOffWorkType().equals("3")) {
- //
- // workAttendanceLog.setDoStartTime(applyOffWorkTime.getStartDay());
- // workAttendanceLog.setDoEndTime(applyOffWorkTime.getEndDay());
- // //判断事假要把小时要转成天
- // if (applyOffWorkTime.getOffWorkType().equals("2")) {
- //// if ("小时".equals(applyOffWorkTime.getTimeUnit())) {
- // BigDecimal divide = applyOffWorkTime.getUseTime().divide(new BigDecimal(ConstantFlowType.ONE_DAY_TIME), 2, BigDecimal.ROUND_HALF_UP);
- // workAttendanceLog.setUseTime(divide);
- //// }
- // } else {
- // workAttendanceLog.setUseTime(applyOffWorkTime.getUseTime());
- // }
- // int result = workAttendanceLogService.insert(workAttendanceLog);
- //
- //
- // } else {
- // //计算年假调用的多少天,分别消耗的多少天
- // List<UseDays> useDays = this.countDayUseDays(applyOffWorkTime.getStartDay(), applyOffWorkTime.getEndDay(), applyOffWorkTime.getStartTime(), applyOffWorkTime.getEndTime(), applyOffWorkTime.getUseTime());
- // for (UseDays useDay : useDays) {
- // workAttendanceLog.setDoStartTime(useDay.getStartTime());
- // workAttendanceLog.setDoEndTime(useDay.getEndTime());
- // workAttendanceLog.setUseTime(useDay.getUseTime());
- // workAttendanceLog.setDoDay(useDay.getDoDay());
- // int result = workAttendanceLogService.insert(workAttendanceLog);
- // }
- //
- // }
- //
- // }
- //
- // }
- }
- } else {
- //如果是不同意
- {
- HolidayManagement holidayManagement = holidayManagements.get(0);
- if (day_totalNianJia.doubleValue() > 0) {//存在年假修改
- Double freezeHolidayTime = holidayManagement.getFreezeHolidayTime();
- double v = new BigDecimal(freezeHolidayTime).subtract(day_totalNianJia, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeHolidayTime(v);
- Double restHolidayTime = holidayManagement.getRestHolidayTime();
- double v1 = new BigDecimal(restHolidayTime).add(day_totalNianJia, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setRestHolidayTime(v1);
- }
- if (hour_totalTiaoXiu.doubleValue() > 0) {//存在调休假修改
- Double freezeExchangeTime = holidayManagement.getFreezeExchangeTime();
- double v = new BigDecimal(freezeExchangeTime).subtract(hour_totalTiaoXiu, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeExchangeTime(v);
- Double restExchangeTime = holidayManagement.getRestExchangeTime();
- double v1 = new BigDecimal(restExchangeTime).add(hour_totalTiaoXiu, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setRestExchangeTime(v1);
- }
- holidayManagement.setUpdatedBy(ShiroUtils.getUser().getId());
- holidayManagement.setUpdatedAt(new Date());
- holidayManagementService.updateByPrimaryKeySelective(holidayManagement);
- }
- }
- }
- return result(1);
- }
- /**
- * 审核或申请结束且同意的情况下进行的处理
- */
- public void booleanIsAgree(List<HolidayManagement> holidayManagements,BigDecimal day_totalNianJia,BigDecimal hour_totalTiaoXiu,List<ApplyOffWorkTime> applyOffWorkTimes,String createdById) throws ParseException {
- //如果是同意了
- {
- HolidayManagement holidayManagement = holidayManagements.get(0);
- if (day_totalNianJia.doubleValue() > 0) {//存在年假修改
- Double freezeHolidayTime = holidayManagement.getFreezeHolidayTime();
- // Double restHolidayTime = holidayManagement.getRestHolidayTime();
- double v = new BigDecimal(freezeHolidayTime).subtract(day_totalNianJia, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeHolidayTime(v);
- }
- if (hour_totalTiaoXiu.doubleValue() > 0) {//存在调休假修改
- Double freezeExchangeTime = holidayManagement.getFreezeExchangeTime();
- double v = new BigDecimal(freezeExchangeTime).subtract(hour_totalTiaoXiu, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeExchangeTime(v);
- }
- holidayManagement.setUpdatedBy(ShiroUtils.getUser().getId());
- holidayManagement.setUpdatedAt(new Date());
- holidayManagementService.updateByPrimaryKeySelective(holidayManagement);
- }
- /*{//审核通过后 在oa_work_attendance_log表中添加记录
- for (ApplyOffWorkTime applyOffWorkTime : applyOffWorkTimes) {
- WorkAttendanceLog workAttendanceLog = new WorkAttendanceLog();
- // //=========================下面是重要的数据
- // user_id varchar (64) DEFAULT NULL COMMENT '用户id 姓名/部门/岗位',
- // `do_day`date DEFAULT NULL COMMENT '发生的日期',
- // `happen_type` int(4) DEFAULT NULL COMMENT
- // '1年假,2调休,3事假,4病假,5婚假,6产假,7陪产假,8丧假,9加班,10迟到,11早退,12旷工,13外出,14居家,15出差',
- // //=========================上面是重要的数据
- // do_start_time datetime DEFAULT NULL COMMENT '发生开始时间',
- // do_end_time datetime DEFAULT NULL COMMENT '发生结束时间',
- // `use_time`decimal(5, 2) DEFAULT NULL COMMENT '消耗时间(比如加班/调休时间小时)',
- // from_table_id varchar(64) DEFAULT NULL COMMENT '来源表id',
- // from_table_name varchar(64) DEFAULT NULL COMMENT '来源表名称',
- workAttendanceLog.setUserId(createdById);
- workAttendanceLog.setDoDay(applyOffWorkTime.getStartDay());
- workAttendanceLog.setHappenType(offWorkTypeChangehappenType(applyOffWorkTime.getOffWorkType()));//'1年假,2调休,3事假,4病假,5婚假,6产假,7陪产假,8丧假,9加班,10迟到,11早退,12旷工,13外出,14居家,15出差',
- workAttendanceLog.setFromTableId(applyOffWorkTime.getId());
- workAttendanceLog.setFromTableName("apply_off_work_time");
- workAttendanceLog.setCreatedBy(ShiroUtils.getUser().getId());
- workAttendanceLog.setCreatedAt(new Date());
- workAttendanceLog.setStatus(0);
- workAttendanceLog.setUpdatedAt(workAttendanceLog.getCreatedAt());
- workAttendanceLog.setUpdatedBy(workAttendanceLog.getCreatedBy());
- //年假 上午/下午/全天
- //事假/调休 是时间:24小时如08:00',
- //如果有跨天的问题需要新建多条数据日志
- // '请假类型(1年假,2事假,3调休,4病假,5婚假,6产假,7陪产假,8丧假)',
- if (applyOffWorkTime.getOffWorkType().equals("2") || applyOffWorkTime.getOffWorkType().equals("3")) {
- workAttendanceLog.setDoStartTime(applyOffWorkTime.getStartDay());
- workAttendanceLog.setDoEndTime(applyOffWorkTime.getEndDay());
- //判断事假要把小时要转成天
- if (applyOffWorkTime.getOffWorkType().equals("2")) {
- // if ("小时".equals(applyOffWorkTime.getTimeUnit())) {
- BigDecimal divide = applyOffWorkTime.getUseTime().divide(new BigDecimal(ConstantFlowType.ONE_DAY_TIME), 2, BigDecimal.ROUND_HALF_UP);
- workAttendanceLog.setUseTime(divide);
- // }
- } else {
- workAttendanceLog.setUseTime(applyOffWorkTime.getUseTime());
- }
- int result = workAttendanceLogService.insert(workAttendanceLog);
- } else {
- //计算年假调用的多少天,分别消耗的多少天
- List<UseDays> useDays = this.countDayUseDays(applyOffWorkTime.getStartDay(), applyOffWorkTime.getEndDay(), applyOffWorkTime.getStartTime(), applyOffWorkTime.getEndTime(), applyOffWorkTime.getUseTime());
- for (UseDays useDay : useDays) {
- workAttendanceLog.setDoStartTime(useDay.getStartTime());
- workAttendanceLog.setDoEndTime(useDay.getEndTime());
- workAttendanceLog.setUseTime(useDay.getUseTime());
- workAttendanceLog.setDoDay(useDay.getDoDay());
- int result = workAttendanceLogService.insert(workAttendanceLog);
- }
- }
- }
- }*/
- }
- //计算年假/病假/婚假...调用的多少天,分别消耗的多少天
- private List<UseDays> countDayUseDays(Date startDay, Date endDay, String startTime, String endTime, BigDecimal useTime) throws ParseException {
- if (startDay.after(endDay)) {
- return null;
- }
- List<UseDays> useDayList = new ArrayList<>();
- //如果是同一天
- if (startDay.equals(endDay)) {
- UseDays useDays = new UseDays();
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String format = simpleDateFormat.format(startDay);
- if ("上午".equals(startTime)) {
- Date parse = simpleDateFormat1.parse(format + " 09:00:00");
- useDays.setStartTime(parse);
- } else {
- Date parse = simpleDateFormat1.parse(format + " 13:00:00");
- useDays.setStartTime(parse);
- }
- if ("上午".equals(endDay)) {
- Date parse = simpleDateFormat1.parse(format + " 12:00:00");
- useDays.setEndTime(parse);
- } else {
- Date parse = simpleDateFormat1.parse(format + " 17:30:00");
- useDays.setEndTime(parse);
- }
- useDays.setUseTime(useTime);
- useDays.setDoDay(useDays.getStartTime());
- useDayList.add(useDays);
- return useDayList;
- } else {//发现不是同一天
- //先设置第一天
- UseDays useDays = new UseDays();
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
- SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- String format = simpleDateFormat.format(startDay);
- if ("上午".equals(startTime)) {
- Date parse = simpleDateFormat1.parse(format + " 09:00:00");
- useDays.setStartTime(parse);
- useDays.setUseTime(new BigDecimal(1));
- } else {
- Date parse = simpleDateFormat1.parse(format + " 13:00:00");
- useDays.setStartTime(parse);
- useDays.setUseTime(new BigDecimal(0.5));
- }
- Date parse = simpleDateFormat1.parse(format + " 17:30:00");
- useDays.setEndTime(parse);
- useDays.setDoDay(useDays.getStartTime());
- useDayList.add(useDays);
- //下面设置第二天或最后一天
- Calendar cal = Calendar.getInstance();
- //设置月份
- cal.setTime(startDay);
- cal.add(Calendar.DATE, 1);
- Calendar cal2 = Calendar.getInstance();
- //设置月份
- cal2.setTime(endDay);
- Date setstartTime=null;
- while (cal.get(Calendar.DAY_OF_YEAR) < cal2.get(Calendar.DAY_OF_YEAR)) {
- UseDays useDays2 = new UseDays();
- setstartTime = simpleDateFormat1.parse(simpleDateFormat.format(cal.getTime()) + " 09:00:00");
- useDays2.setStartTime(setstartTime);
- parse = simpleDateFormat1.parse(simpleDateFormat.format(cal.getTime()) + " 17:30:00");
- useDays2.setEndTime(parse);
- useDays2.setUseTime(new BigDecimal(1));
- useDays2.setDoDay(useDays2.getStartTime());
- useDayList.add(useDays2);
- cal.add(Calendar.DATE, 1);
- }
- //设置最后一天
- if (cal.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR)) {
- UseDays useDays3 = new UseDays();
- setstartTime = simpleDateFormat1.parse(simpleDateFormat.format(cal.getTime()) + " 09:00:00");
- useDays3.setStartTime(setstartTime);
- if ("上午".equals(endTime)) {
- parse = simpleDateFormat1.parse(simpleDateFormat.format(cal.getTime()) + " 12:00:00");
- useDays3.setEndTime(parse);
- useDays3.setUseTime(new BigDecimal(0.5));
- } else {
- parse = simpleDateFormat1.parse(simpleDateFormat.format(cal.getTime()) + " 17:30:00");
- useDays3.setEndTime(parse);
- useDays3.setUseTime(new BigDecimal(1));
- }
- useDays3.setDoDay(useDays3.getStartTime());
- useDayList.add(useDays3);
- }
- return useDayList;
- }
- }
- /**
- * 请假和考勤标识的转换
- *
- * @param offWorkType
- * @return
- */
- private Integer offWorkTypeChangehappenType(String offWorkType) {
- switch (offWorkType) {
- // '请假类型(1年假,2事假,3调休,4病假,5婚假,6产假,7陪产假,8丧假)',
- // 1年假,2调休,3事假,4病假,5婚假,6产假,7陪产假,8丧假,9加班,10迟到,11早退,12旷工,13外出,14居家,15出差
- case "1":
- return 1;
- case "2":
- return 3;
- case "3":
- return 2;
- case "4":
- return 4;
- case "5":
- return 5;
- case "6":
- return 6;
- case "7":
- return 7;
- case "8":
- return 8;
- default:
- return 0;
- }
- }
- /**
- * 发起付款申请流程
- *
- * @param record
- * @return
- */
- @PostMapping(value = "addApplyOffWork", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- @Transactional
- public AjaxResult addApplyOffWork(ApplyOffWorkIn record) throws FlowException, ParseException {
- System.out.println("addApplyOffWork");
- System.out.println(record);
- if (false) {
- return AjaxResult.error("这是一个错误测试信息");
- }
- return myaddApplyPayment(record, null);
- }
- /**
- * 申请人重新发起申请
- *
- * @param record
- * @return
- */
- @PostMapping(value = "addApplyOffWorkAgain", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- @Transactional
- public AjaxResult addApplyOffWorkAgain(ApplyOffWorkIn record) throws FlowException, ParseException {
- System.out.println("addApplyOffWorkAgain");
- if (StringUtils.isEmpty(record.getFlowMainId())) {
- return AjaxResult.error("没有传入flowMainId的值");
- }
- System.out.println(record);
- // record.setRemark("重新发起申请[" + record.getFlowMainId() + "],");
- {//修改重新发起前的表状态
- FlowMain flowMain1 = new FlowMain();
- flowMain1.setId(record.getFlowMainId());
- flowMain1.setReturnStatus(1);//0/null无状态,1已撤回并且已重新发起
- flowMain1.setUpdatedAt(new Date());
- flowMain1.setUpdatedBy(ShiroUtils.getUser().getId());
- flowMainService.updateByPrimaryKeySelective(flowMain1);
- }
- return myaddApplyPayment(record, "重新发起申请[" + record.getFlowMainId() + "],");
- }
- /**
- * 根据推送表的FlowMainPushId获取信息
- *
- * @param flowMainPushId
- * @return
- */
- @PostMapping(value = "getInfoByFlowMainPushId", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public ApplyOffWorkIn getInfoByFlowMainPushId(String flowMainPushId) {
- ApplyOffWorkIn myApplyOffWorkIn = modelService.getInfoByFlowMainPushId(flowMainPushId);
- if (myApplyOffWorkIn != null) {
- {//获取抄送人
- // FlowMainCcExample example = new FlowMainCcExample();
- // example.createCriteria().andFlowMainIdEqualTo(myApplyUseMoneyIn.getFlowMainId());
- // List<FlowMainCc> flowMainCcList = flowMainCcService.selectByExample(example);
- List<FlowMainCcVo> flowMainCcList = flowMainCcService.selectVoByFlowMainId(myApplyOffWorkIn.getFlowMainId());
- // HashSet<String> set = new HashSet<>();
- // for (FlowMainCc flowMainCc : flowMainCcList) {
- // set.add(flowMainCc.getCcUser());
- // }
- // StringBuilder stringBuilder = new StringBuilder();
- // if (!set.isEmpty()) {
- // for (String s : set) {
- // stringBuilder.append(s + ",");
- // }
- // }
- // myApplyUseMoneyIn.setCcList(stringBuilder.toString());
- myApplyOffWorkIn.setFlowMainCcList(flowMainCcList);
- }
- {//获取apply_use_money_detail数据
- ApplyOffWorkTimeExample example = new ApplyOffWorkTimeExample();
- example.createCriteria().andOffWorkIdEqualTo(myApplyOffWorkIn.getId());
- List<ApplyOffWorkTime> ApplyOffWorkTimes = applyOffWorkTimeService.selectByExample(example);
- myApplyOffWorkIn.setApplyOffWorkTimeList(ApplyOffWorkTimes);
- }
- }
- return myApplyOffWorkIn;
- }
- /**
- * 写一个方法:根据用户id获取该用户的年假剩余时间,调休假剩余时间,冻结时间等
- */
- @PostMapping(value = "getHolidayManagementByUserId", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public HolidayTime getHolidayManagementByUserId(String userId) throws ParseException {
- HolidayManagementExample example = new HolidayManagementExample();
- example.createCriteria().andUserIdEqualTo(userId);
- List<HolidayManagement> holidayManagements = holidayManagementService.selectByExample(example);
- if (holidayManagements.isEmpty()) {
- return new HolidayTime((double) 0, (double) 0, (double) 0, (double) 0);
- }
- HolidayManagement holidayManagement = holidayManagements.get(0);
- if (holidayManagement.getHolidayType() == null) {
- return new HolidayTime((double) 0, (double) 0, (double) 0, (double) 0);
- }
- //写一个方法 计算当前用户还有多少年假和调休假,
- // 查看列表的时候 计算年假剩余天数
- HolidayTime holidayTime = holidayManagementService.getHolidayTimeByEntiy(holidayManagement);
- return holidayTime;
- }
- /**
- * 写一个方法:获取该用户的年假剩余时间,调休假剩余时间,冻结时间等
- */
- @PostMapping(value = "getHolidayManagementByCreater", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public HolidayTime getHolidayManagementByCreater() throws ParseException {
- HolidayManagementExample example = new HolidayManagementExample();
- example.createCriteria().andUserIdEqualTo(ShiroUtils.getUser().getId());
- List<HolidayManagement> holidayManagements = holidayManagementService.selectByExample(example);
- if (holidayManagements.isEmpty()) {
- return new HolidayTime((double) 0, (double) 0, (double) 0, (double) 0);
- }
- HolidayManagement holidayManagement = holidayManagements.get(0);
- if (holidayManagement.getHolidayType() == null) {
- return new HolidayTime((double) 0, (double) 0, (double) 0, (double) 0);
- }
- //写一个方法 计算当前用户还有多少年假和调休假,做一个定时,每天更新计算年假剩余天数
- HolidayTime holidayTime = holidayManagementService.getHolidayTimeByEntiy(holidayManagement);
- return holidayTime;
- }
- /**
- * 根据申请人的id获取年假的信息
- *
- * @return
- * @throws ParseException
- */
- @PostMapping(value = "getHolidayManagementByApplyUserId", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public HolidayTime getHolidayManagementByApplyUserId(String userId) throws ParseException {
- HolidayManagementExample example = new HolidayManagementExample();
- example.createCriteria().andUserIdEqualTo(userId);
- List<HolidayManagement> holidayManagements = holidayManagementService.selectByExample(example);
- if (holidayManagements.isEmpty()) {
- return new HolidayTime((double) 0, (double) 0, (double) 0, (double) 0);
- }
- HolidayManagement holidayManagement = holidayManagements.get(0);
- if (holidayManagement.getHolidayType() == null) {
- return new HolidayTime((double) 0, (double) 0, (double) 0, (double) 0);
- }
- //写一个方法 计算当前用户还有多少年假和调休假,做一个定时,每天更新计算年假剩余天数
- HolidayTime holidayTime = holidayManagementService.getHolidayTimeByEntiy(holidayManagement);
- return holidayTime;
- }
- /**
- * 根据主表的FlowMainId获取信息
- *
- * @param flowMainId
- * @return
- */
- @PostMapping(value = "getInfoByFlowMainId", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public ApplyOffWorkIn getInfoByFlowMainId(String flowMainId) {
- ApplyOffWorkIn myApplyOffWorkIn = modelService.getInfoByFlowMainId(flowMainId);
- if (myApplyOffWorkIn != null) {
- {//获取抄送人
- // FlowMainCcExample example = new FlowMainCcExample();
- // example.createCriteria().andFlowMainIdEqualTo(myApplyUseMoneyIn.getFlowMainId());
- // List<FlowMainCc> flowMainCcList = flowMainCcService.selectByExample(example);
- List<FlowMainCcVo> flowMainCcList = flowMainCcService.selectVoByFlowMainId(myApplyOffWorkIn.getFlowMainId());
- // HashSet<String> set = new HashSet<>();
- // for (FlowMainCc flowMainCc : flowMainCcList) {
- // set.add(flowMainCc.getCcUser());
- // }
- // StringBuilder stringBuilder = new StringBuilder();
- // if (!set.isEmpty()) {
- // for (String s : set) {
- // stringBuilder.append(s + ",");
- // }
- // }
- // myApplyUseMoneyIn.setCcList(stringBuilder.toString());
- myApplyOffWorkIn.setFlowMainCcList(flowMainCcList);
- }
- {//获取apply_use_money_detail数据
- ApplyOffWorkTimeExample example = new ApplyOffWorkTimeExample();
- example.createCriteria().andOffWorkIdEqualTo(myApplyOffWorkIn.getId());
- List<ApplyOffWorkTime> ApplyOffWorkTimes = applyOffWorkTimeService.selectByExample(example);
- myApplyOffWorkIn.setApplyOffWorkTimeList(ApplyOffWorkTimes);
- }
- }
- return myApplyOffWorkIn;
- }
- /**
- * 发起请假申请流程
- * addSystemRemark系统中的备注
- *
- * @param record
- * @return
- */
- public AjaxResult myaddApplyPayment(ApplyOffWorkIn record, String addSystemRemark) throws FlowException, ParseException {
- if (StringUtils.isEmpty(record.getApplyOffWorkTimeString())) {
- return AjaxResult.error("没有获取到请假详细信息,请重新确认");
- }
- BigDecimal hour_totalTiaoXiu = new BigDecimal(0);//所有调休假小时
- BigDecimal day_totalNianJia = new BigDecimal(0);//所有年假天数
- BigDecimal hour_totalShiJia = new BigDecimal(0);//所有事假天数
- BigDecimal day_total_BingJia_hunjia_chanjia_peichanjia_sangjia = new BigDecimal(0);//所有,4病假,5婚假,6产假,7陪产假,8丧假 ,最小为0.5天
- // 记得有2个地方要加,如果还有别的类型的话,还有一个在审核的时候AddConfirmResultOffWork
- {
- record.setUpdatedAt(new Date());
- record.setCreatedAt(record.getUpdatedAt());
- record.setCreatedBy(ShiroUtils.getUser().getId());
- record.setUpdatedBy(record.getCreatedBy());
- record.setStatus(0);
- modelService.insert(record);
- String applyOffWorkTimeString = record.getApplyOffWorkTimeString();
- JSONArray jsonArray = JSONArray.parseArray(applyOffWorkTimeString);
- for (int i = 0; i < jsonArray.size(); i++) {
- JSONObject object = jsonArray.getJSONObject(i);
- ApplyOffWorkTime applyOffWorkTime = JSONObject.parseObject(object.toJSONString(), ApplyOffWorkTime.class);// 将string类型直接封装成对象
- if (applyOffWorkTime.getUseTime().doubleValue()<=0) {
- throw new RuntimeException("请假时间不能小于0小时");
- }
- applyOffWorkTime.setOffWorkId(record.getId());
- // 用到 `off_work_type` varchar(100) DEFAULT NULL COMMENT '请假类型(1年假,2事假,3调休)',
- // 用到 `time_unit` varchar(100) DEFAULT NULL COMMENT '请假消耗时间单位(天/小时)',
- // 用到 `use_time` decimal(10,2) DEFAULT NULL COMMENT '请假消耗时间',
- // `start_day` date DEFAULT NULL COMMENT '开始天',
- // `start_time` varchar(100) DEFAULT NULL COMMENT '开始上午/下午/全天/24小时如08:00',
- // `end_day` date DEFAULT NULL COMMENT '开始天',
- // `end_time` varchar(100) DEFAULT NULL COMMENT '开始上午/下午/全天/24小时如08:00',
- applyOffWorkTime.setUpdatedAt(new Date());
- applyOffWorkTime.setCreatedAt(applyOffWorkTime.getUpdatedAt());
- applyOffWorkTime.setCreatedBy(ShiroUtils.getUser().getId());
- applyOffWorkTime.setUpdatedBy(applyOffWorkTime.getCreatedBy());
- applyOffWorkTime.setStatus(0);
- applyOffWorkTimeService.insert(applyOffWorkTime);
- {//修改请假表,将请假表的对应数据添加冻结时间,并减去可用时间
- if (applyOffWorkTime.getOffWorkType().equals(1) || applyOffWorkTime.getOffWorkType().equals("1")) {//1年假
- day_totalNianJia = day_totalNianJia.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- } else if (applyOffWorkTime.getOffWorkType().equals(3) || applyOffWorkTime.getOffWorkType().equals("3")) {//3调休
- hour_totalTiaoXiu = hour_totalTiaoXiu.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- } else if (applyOffWorkTime.getOffWorkType().equals(2) || applyOffWorkTime.getOffWorkType().equals("2")) {//2事假
- hour_totalShiJia = hour_totalShiJia.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- } else if (applyOffWorkTime.getOffWorkType().equals(4) || applyOffWorkTime.getOffWorkType().equals("4") || applyOffWorkTime.getOffWorkType().equals(5) || applyOffWorkTime.getOffWorkType().equals("5")
- || applyOffWorkTime.getOffWorkType().equals(6) || applyOffWorkTime.getOffWorkType().equals("6") || applyOffWorkTime.getOffWorkType().equals(7) || applyOffWorkTime.getOffWorkType().equals("7")
- || applyOffWorkTime.getOffWorkType().equals(8) || applyOffWorkTime.getOffWorkType().equals("8")) {//4病假,5婚假,6产假,7陪产假,8丧假 ,最小为0.5天
- day_total_BingJia_hunjia_chanjia_peichanjia_sangjia = day_total_BingJia_hunjia_chanjia_peichanjia_sangjia.add(new BigDecimal(applyOffWorkTime.getUseTime().toString()), MathContext.DECIMAL32);
- }
- }
- }
- if (day_totalNianJia.doubleValue() > 0 || hour_totalTiaoXiu.doubleValue() > 0) {
- /**
- * 做一个方法,修改年假表的数据
- */
- holidayManagementService.updateTime(day_totalNianJia.doubleValue(), hour_totalTiaoXiu.doubleValue(), record.getCreatedBy());
- }
- }
- HashMap<String, Object> feeMoneyTotalMap = new HashMap<>();
- if (hour_totalTiaoXiu.doubleValue() > 0 && day_totalNianJia.doubleValue() <= 0 && hour_totalShiJia.doubleValue() <= 0 && day_total_BingJia_hunjia_chanjia_peichanjia_sangjia.doubleValue() <= 0) {
- //假别仅有调休假
- // String isExchangeOnly = conditionMap.get("isExchangeOnly").toString();
- // Integer applyDay = Integer.valueOf(conditionMap.get("applyDay").toString());
- feeMoneyTotalMap.put("isExchangeOnly", "yes");
- feeMoneyTotalMap.put("applyDay", 0);
- } else {
- BigDecimal addDay = hour_totalTiaoXiu.add(hour_totalShiJia).divide(new BigDecimal(ConstantFlowType.ONE_DAY_TIME), 2, BigDecimal.ROUND_HALF_UP);
- if (addDay.add(day_totalNianJia).add(day_total_BingJia_hunjia_chanjia_peichanjia_sangjia).doubleValue() > 3) {
- // 假期天数合计>3天
- feeMoneyTotalMap.put("isExchangeOnly", "no");
- feeMoneyTotalMap.put("applyDay", 4);
- } else {
- feeMoneyTotalMap.put("isExchangeOnly", "no");
- feeMoneyTotalMap.put("applyDay", 0);
- }
- }
- // feeMoneyTotalMap.put("billMoney", feeMoneyTotalDouble);
- String applyTheme = "" + ShiroUtils.getUser().getTruename() + "的请假申请单";
- AjaxResult ajaxResult = flowMainService.doFlowMain(applyTheme, record.getId(), addSystemRemark, record.getCcList(),
- ConstantFlowType.OFF_WORK_PROCESSDEFINE, ConstantFlowType.OFF_WORK_DEPLOYMENTID,
- feeMoneyTotalMap, ConstantFlowType.OFF_WORK_NAME, ConstantFlowType.OFF_WORK,ShiroUtils.getUser());
- if (ajaxResult.get("code").equals(1688)) {
- //表成功了 且已经审核完成
- // 需要进行后续的处理
- Boolean isEnd = true;//是否结束
- Boolean isAgree = true;//是否同意
- //添加业务信息(将请假信息中的修改掉,剩余年假,剩余调休,冻结年假,冻结调休都修改掉)
- if (isEnd) {
- String createdById = record.getCreatedBy();
- HolidayManagementExample holidayManagementExample = new HolidayManagementExample();
- holidayManagementExample.createCriteria().andUserIdEqualTo(createdById);
- List<HolidayManagement> holidayManagements = holidayManagementService.selectByExample(holidayManagementExample);
- if (holidayManagements.isEmpty()) {
- return result(0);
- }
- if (isAgree) {//如果是最后 并且同意了,就进行下面的操作,或者不同意就进行另一种操作,
- ApplyOffWorkTimeExample example = new ApplyOffWorkTimeExample();
- example.createCriteria().andOffWorkIdEqualTo(record.getId());
- List<ApplyOffWorkTime> applyOffWorkTimes = applyOffWorkTimeService.selectByExample(example);
- this.booleanIsAgree(holidayManagements,day_totalNianJia,hour_totalTiaoXiu,applyOffWorkTimes,createdById);
- } else {
- //如果是不同意
- {
- HolidayManagement holidayManagement = holidayManagements.get(0);
- if (day_totalNianJia.doubleValue() > 0) {//存在年假修改
- Double freezeHolidayTime = holidayManagement.getFreezeHolidayTime();
- double v = new BigDecimal(freezeHolidayTime).subtract(day_totalNianJia, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeHolidayTime(v);
- Double restHolidayTime = holidayManagement.getRestHolidayTime();
- double v1 = new BigDecimal(restHolidayTime).add(day_totalNianJia, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setRestHolidayTime(v1);
- }
- if (hour_totalTiaoXiu.doubleValue() > 0) {//存在调休假修改
- Double freezeExchangeTime = holidayManagement.getFreezeExchangeTime();
- double v = new BigDecimal(freezeExchangeTime).subtract(hour_totalTiaoXiu, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setFreezeExchangeTime(v);
- Double restExchangeTime = holidayManagement.getRestExchangeTime();
- double v1 = new BigDecimal(restExchangeTime).add(hour_totalTiaoXiu, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setRestExchangeTime(v1);
- }
- holidayManagement.setUpdatedBy(ShiroUtils.getUser().getId());
- holidayManagement.setUpdatedAt(new Date());
- holidayManagementService.updateByPrimaryKeySelective(holidayManagement);
- }
- }
- }
- return AjaxResult.success();
- }
- return ajaxResult;
- }
- @PostMapping(value = "list", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public Object list(Tablepar tablepar, ApplyOffWork model, DateTrans dt) {
- PageInfo<ApplyOffWork> page = modelService.list(tablepar, model, dt);
- TableSplitResult<ApplyOffWork> result = new TableSplitResult<ApplyOffWork>(page.getPageNum(), page.getTotal(), page.getList());
- return result;
- }
- @PostMapping(value = "listAll", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public Object listAll(ApplyOffWork model, DateTrans dt) {
- return modelService.listAll(model, dt);
- }
- @PostMapping(value = "add", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public AjaxResult add(ApplyOffWork record) {
- record.setCreatedAt(new Date());
- int result = modelService.insert(record);
- return result(result);
- }
- @PostMapping(value = "remove/{id}", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public AjaxResult remove(@PathVariable("id") String id) {
- int result = modelService.deleteByPrimaryKey(id);
- return result(result);
- }
- @PostMapping(value = "edit", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public AjaxResult editSave(ApplyOffWork model) {
- int result = modelService.updateByPrimaryKeySelective(model);
- return result(result);
- }
- @PostMapping(value = "getById", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public ApplyOffWork getById(String id) {
- return modelService.selectByPrimaryKey(id);
- }
- }
|