123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471 |
- package com.idea.oa.apply.controller;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.idea.oa.apply.model.ApplyAddWorkTime;
- import com.idea.oa.apply.model.ApplyAddWorkTimeExample;
- import com.idea.oa.apply.model.ApplyWorkReceivable;
- import com.idea.oa.apply.model.ApplyWorkReceivableExample;
- import com.idea.oa.apply.model.inout.AddConfirmResult;
- import com.idea.oa.apply.model.inout.ApplyAddLxWorkIn;
- import com.idea.oa.apply.model.inout.ApplyAddWorkIn;
- import com.idea.oa.apply.service.ApplyAddWorkService;
- import com.idea.oa.apply.service.ApplyAddWorkTimeService;
- import com.idea.oa.apply.service.ApplyLxWorkService;
- import com.idea.oa.apply.service.ApplyWorkReceivableService;
- 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.outsource.model.OutOrderPay;
- import com.idea.oa.project.model.ProApproval;
- import com.idea.oa.project.model.ProMain;
- import com.idea.oa.project.service.ProApprovalService;
- import com.idea.oa.project.service.ProMainService;
- import com.rockstar.common.base.BaseController;
- import com.rockstar.common.domain.AjaxResult;
- import com.rockstar.frame.service.FrameUserService;
- import com.rockstar.shiro.util.ShiroUtils;
- import com.rockstar.util.UUIDUtils;
- import io.swagger.annotations.Api;
- import org.activiti.engine.impl.util.Activiti5Util;
- import org.springframework.beans.BeanUtils;
- 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.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.util.Date;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * Created by py on 2023
- */
- @Controller
- @RequestMapping(value = "/ApplyLxWorkController")
- @Api(value = "分表_立项申请_灵锡")
- public class ApplyLxWorkController extends BaseController {
- // @Autowired
- // private WorkAttendanceLogService workAttendanceLogService;
- // @Autowired
- // private HolidayManagementService holidayManagementService;
- //主表
- @Autowired
- private ApplyLxWorkService modelService;
- @Autowired
- private ApplyWorkReceivableService applyWorkReceivableService;
- @Autowired
- private ProApprovalService proApprovalService;
- @Autowired
- private FlowMainPushService flowMainPushService;
- @Autowired
- private FlowMainService flowMainService;
- @Autowired
- private ProMainService proMainService;
- @Autowired
- private FrameUserService frameUserService;
- /**
- * 添加审核结果
- * 根据不同的状态值confirmResult判断是 1:审核通过,转下一步;2:退回发起人;3:退回上节点;4:结束流程;
- *
- * @param addConfirmResult
- * @return
- */
- @PostMapping(value = "AddConfirmResultAddWork", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- @Transactional
- public AjaxResult AddConfirmResultAddWork(AddConfirmResult addConfirmResult) throws com.rockstar.flow.exception.FlowException {
- System.out.println("AddConfirmResultAddWork");
- System.out.println(addConfirmResult);
- if (addConfirmResult.getConfirmResult() == null) {
- return result(-1);
- }
- // String deploymentid = ConstantFlowType.USE_MONEY_DEPLOYMENTID;
- // String constantFlowType = ConstantFlowType.USE_MONEY;
- FlowMainPush flowMainPush = flowMainPushService.selectByPrimaryKey(addConfirmResult.getFlowMainPushId());
- String isOkString = null;
- {//进行审核判断
- //添加判断条件
- HashMap<String, Object> feeMoneyTotalMap = null;//new HashMap<>();
- // if (totalTiaoXiu.doubleValue() > 0 && totalNianJia.doubleValue() <= 0 && totalShiJia.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 if (totalTiaoXiu.add(totalNianJia).add(totalShiJia).doubleValue() > 3) {
- //// 假期天数合计>3天
- // feeMoneyTotalMap.put("isExchangeOnly", "no");
- // feeMoneyTotalMap.put("applyDay", 4);
- // } else {
- // feeMoneyTotalMap.put("isExchangeOnly", "no");
- // feeMoneyTotalMap.put("applyDay", 0);
- // }
- isOkString = flowMainService.doConfirmResult(addConfirmResult, ConstantFlowType.LX_WORK_DEPLOYMENTID, ConstantFlowType.LX_WORK, 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&&isAgree) {
- // 修改项目立项状态
- modelService.updateInfo(flowMainPush.getFormId());
- }
- return result(1);
- }
- /**
- * 发起立项申请流程
- *
- * @param record
- * @return
- */
- @PostMapping(value = "addApplyLxWork", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- @Transactional
- public AjaxResult addApplyLxWork(ApplyAddLxWorkIn record) throws com.rockstar.flow.exception.FlowException {
- System.out.println("addApplyLxWork");
- System.out.println(record);
- if (false) {
- return AjaxResult.error("这是一个错误测试信息");
- }
- return myaddApplyPayment(record,null);
- }
- /**
- * 申请人重新发起申请
- *
- * @param record
- * @return
- */
- @PostMapping(value = "addApplyLxWorkAgain", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- @Transactional
- public AjaxResult addApplyLxWorkAgain(ApplyAddLxWorkIn record) throws com.rockstar.flow.exception.FlowException {
- System.out.println("addApplyLxWorkAgain");
- 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() + "],");
- }
- /**
- * 发起请假申请流程
- *
- * @param record
- * @return
- */
- public AjaxResult myaddApplyPayment(ApplyAddLxWorkIn record,String addSystemRemark) throws com.rockstar.flow.exception.FlowException {
- String id = UUIDUtils.middleUUID();
- record.setId(id);
- ProApproval approvalJsonObject = null;
- JSONArray receivableList = new JSONArray();
- Date currentDate =new Date();
- String approveId = UUIDUtils.middleUUID();
- //立项内容
- if(com.rockstar.util.StringUtils.isNotEmpty(record.getApprovalForm())){
- approvalJsonObject = JSONObject.parseObject(record.getApprovalForm(), ProApproval.class);
- if(StringUtils.isEmpty(approvalJsonObject.getId())){ //add
- approvalJsonObject.setId(approveId);
- approvalJsonObject.setCreatedAt(currentDate);
- proApprovalService.insert(approvalJsonObject);
- }else{ //edit
- approveId = approvalJsonObject.getId();
- proApprovalService.updateByPrimaryKeySelective(approvalJsonObject);
- }
- }
- //回款计划
- if(com.rockstar.util.StringUtils.isNotEmpty(record.getWorkReceivableForm())){
- receivableList = JSONArray.parseArray(record.getWorkReceivableForm());
- ApplyWorkReceivableExample applyWorkReceivableExample = new ApplyWorkReceivableExample();
- applyWorkReceivableExample.createCriteria().andProidEqualTo(record.getProId());
- applyWorkReceivableService.deleteByExample(applyWorkReceivableExample);
- }
- record.setApprovalId(approveId);
- record.setUpdatedAt(new Date());
- record.setCreatedAt(record.getUpdatedAt());
- record.setCreatedBy(ShiroUtils.getUser().getId());
- record.setUpdatedBy(record.getCreatedBy());
- record.setStatus(0);
- modelService.insert(record);
- for (int i = 0; i < receivableList.size(); i++) {
- JSONObject object = receivableList.getJSONObject(i);
- ApplyWorkReceivable applyWorkReceivable = JSONObject.parseObject(object.toJSONString(), ApplyWorkReceivable.class);// 将string类型直接封装成对象
- applyWorkReceivable.setProid(record.getProId());
- applyWorkReceivable.setCreatedat(new Date());
- applyWorkReceivableService.insert(applyWorkReceivable);
- }
- ProMain proMain = proMainService.selectVoByPrimaryKey(record.getProId());
- proMain.setRealValidStatus("1"); //立项待审核
- proMainService.updateByPrimaryKey(proMain);
- HashMap<String, Object> feeMoneyTotalMap = null;//new HashMap<>();
- String applyTheme = "" + record.getProName() + "立项申请";
- AjaxResult ajaxResult = flowMainService.doFlowMain(applyTheme, id, addSystemRemark, record.getCcList(),
- ConstantFlowType.LX_WORK_PROCESSDEFINE, ConstantFlowType.LX_WORK_DEPLOYMENTID,
- feeMoneyTotalMap, ConstantFlowType.LX_WORK_NAME, ConstantFlowType.LX_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()) {
- // 添加holidayManagements信息
- FrameUser frameUser = frameUserService.selectByPrimaryKey(createdById);
- HolidayManagement entity = new HolidayManagement();
- entity.setId(UUIDUtils.middleUUID());
- entity.setUserId(createdById);
- entity.setJoinDay(frameUser.getCreatedat());
- entity.setStatus(0);//状态0正常,1删除,2禁用
- entity.setIsFirst(1);//是否是第一次录入管理1是,0不是
- entity.setCreatedAt(new Date());
- entity.setUpdatedAt(entity.getCreatedAt());
- entity.setCreatedBy(ShiroUtils.getUser().getId());
- entity.setUpdatedBy(entity.getCreatedBy());
- int insert = holidayManagementService.insertWithoutId(entity);
- holidayManagements.add(entity);
- }
- if (isAgree) {//如果是最后 并且同意了,就进行下面的操作,或者不同意就进行另一种操作,
- ApplyAddWorkTimeExample example = new ApplyAddWorkTimeExample();
- example.createCriteria().andAddWorkIdEqualTo(record.getId());
- List<ApplyAddWorkTime> applyAddWorkTimes = applyAddWorkTimeService.selectByExample(example);
- this.booleanIsAgree(totalAddTime,holidayManagements,applyAddWorkTimes,createdById);
- } else {
- //如果是不同意
- {
- // 不需要做什么
- }
- }*/
- }
- return AjaxResult.success();
- } else {
- return ajaxResult;
- }
- }
- /**
- * 审核或申请结束且同意的情况下进行的处理
- */
- /* public void booleanIsAgree(BigDecimal totalAddTime,List<HolidayManagement> holidayManagements,List<ApplyAddWorkTime> applyAddWorkTimes,String createdById){
- //如果是同意了
- {
- HolidayManagement holidayManagement = holidayManagements.get(0);
- if (totalAddTime.doubleValue() > 0) {//存在加班修改
- Double restExchangeTime = holidayManagement.getRestExchangeTime();
- // Double restHolidayTime = holidayManagement.getRestHolidayTime();
- double v = new BigDecimal(restExchangeTime).add(totalAddTime, MathContext.DECIMAL32).doubleValue();
- holidayManagement.setRestExchangeTime(v);
- }
- holidayManagement.setUpdatedBy(ShiroUtils.getUser().getId());
- holidayManagement.setUpdatedAt(new Date());
- holidayManagementService.updateByPrimaryKeySelective(holidayManagement);
- }
- {//审核通过后 在oa_work_attendance_log表中添加记录
- for (ApplyAddWorkTime applyAddWorkTime : applyAddWorkTimes) {
- 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(applyAddWorkTime.getStartDay());
- workAttendanceLog.setHappenType(9);//'1年假,2调休,3事假,4病假,5婚假,6产假,7陪产假,8丧假,9加班,10迟到,11早退,12旷工,13外出,14居家,15出差',
- workAttendanceLog.setDoStartTime(applyAddWorkTime.getStartTime());
- workAttendanceLog.setDoEndTime(applyAddWorkTime.getEndTime());
- workAttendanceLog.setUseTime(applyAddWorkTime.getUseTime());
- workAttendanceLog.setFromTableId(applyAddWorkTime.getId());
- workAttendanceLog.setFromTableName("apply_add_work_time");
- workAttendanceLog.setCreatedBy(ShiroUtils.getUser().getId());
- workAttendanceLog.setCreatedAt(new Date());
- workAttendanceLog.setStatus(0);
- workAttendanceLog.setUpdatedAt(workAttendanceLog.getCreatedAt());
- workAttendanceLog.setUpdatedBy(workAttendanceLog.getCreatedBy());
- int result = workAttendanceLogService.insert(workAttendanceLog);
- }
- }
- }*/
- /**
- * 根据推送表的FlowMainPushId获取信息
- *
- * @param flowMainPushId
- * @return
- */
- @PostMapping(value = "getInfoByFlowMainPushId", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public ApplyAddLxWorkIn getInfoByFlowMainPushId(String flowMainPushId) {
- ApplyAddLxWorkIn myApplyLxWorkIn = modelService.getInfoByFlowMainPushId(flowMainPushId);
- return myApplyLxWorkIn;
- }
- /**
- * 根据主表的FlowMainId获取信息
- *
- * @param flowMainId
- * @return
- */
- @PostMapping(value = "getInfoByFlowMainId", produces = {"application/json;charset=UTF-8"})
- @ResponseBody
- public ApplyAddLxWorkIn getInfoByFlowMainId(String flowMainId) {
- ApplyAddLxWorkIn myApplyLxWorkIn = modelService.getInfoByFlowMainId(flowMainId);
- if (myApplyLxWorkIn != null) {
- ProApproval proApproval = proApprovalService.selectByPrimaryKey(myApplyLxWorkIn.getApprovalId());
- myApplyLxWorkIn.setApproval(proApproval);
- ApplyWorkReceivableExample example = new ApplyWorkReceivableExample();
- example.createCriteria().andProidEqualTo(myApplyLxWorkIn.getProId());
- List<ApplyWorkReceivable> applyWorkReceivables = applyWorkReceivableService.selectByExample(example);
- myApplyLxWorkIn.setApplyWorkReceivables(applyWorkReceivables);
- }
- return myApplyLxWorkIn;
- }
- /**
- * 根据用户id获取用户姓名和部门名称,岗位信息
- *
- * @param userId
- * @return
- */
- // @PostMapping(value = "getUserInfoByUserId", produces = {"application/json;charset=UTF-8"})
- // @ResponseBody
- // public Map<String, Object> getUserInfoByUserId(String userId) {
- // if (StringUtils.isEmpty(userId)) {
- // userId = ShiroUtils.getUser().getId();
- // }
- // return modelService.getUserInfoByUserId(userId);
- // }
- //=====下面原生的=============================================================================================================
- // @PostMapping(value = "list",produces = {"application/json;charset=UTF-8"})
- // @ResponseBody
- // public Object list(Tablepar tablepar, ApplyAddWork model, DateTrans dt){
- // PageInfo<ApplyAddWork> page= modelService.list(tablepar,model,dt);
- // TableSplitResult<ApplyAddWork> result=new TableSplitResult<ApplyAddWork>(page.getPageNum(), page.getTotal(), page.getList());
- // return result;
- // }
- //
- // @PostMapping(value = "listAll",produces = {"application/json;charset=UTF-8"})
- // @ResponseBody
- // public Object listAll(ApplyAddWork model, DateTrans dt){
- // return modelService.listAll(model,dt);
- // }
- //
- // @PostMapping(value = "add",produces = {"application/json;charset=UTF-8"})
- // @ResponseBody
- // public AjaxResult add(ApplyAddWork 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 = -1;//modelService.deleteByPrimaryKey(id);
- // return result(result);
- // }
- //
- // @PostMapping(value = "edit",produces = {"application/json;charset=UTF-8"})
- // @ResponseBody
- // public AjaxResult editSave(ApplyAddWork model){
- // int result = modelService.updateByPrimaryKeySelective(model);
- // return result(result);
- // }
- //
- // @PostMapping(value = "getById",produces = {"application/json;charset=UTF-8"})
- // @ResponseBody
- // public ApplyAddWork getById(String id) {
- // return modelService.selectByPrimaryKey(id);
- // }
- }
|