package com.idea.oa.apply.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.idea.oa.apply.model.ApplyLxWork; 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.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.service.FlowMainPushService; import com.idea.oa.flow2.service.FlowMainService; 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.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.util.Date; import java.util.HashMap; import java.util.List; /** * Created by py on 2023 */ @Controller @RequestMapping(value = "/ApplyLxSjWorkController") @Api(value = "分表_立项申请_数据运营") public class ApplyLxSjWorkController 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()); ApplyLxWork applyLxWork = modelService.selectByPrimaryKey(flowMainPush.getFormId()); ProMain proMain = proMainService.selectByPrimaryKey(applyLxWork.getProId()); String isOkString = null; {//进行审核判断 //添加判断条件 HashMap feeMoneyTotalMap = new HashMap<>(); if (proMain.getPresales()==null||proMain.getPresales() < 2000000) { // 销售额小于2000000 feeMoneyTotalMap.put("isProSales", "yes"); feeMoneyTotalMap.put("preSales", proMain.getPresales()); } else { feeMoneyTotalMap.put("isProSales", "no"); feeMoneyTotalMap.put("preSales", proMain.getPresales()); } isOkString = flowMainService.doConfirmResult(addConfirmResult, ConstantFlowType.LX_SJ_WORK_DEPLOYMENTID, ConstantFlowType.LX_SJ_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("addApplyLxShjWork"); System.out.println(record); if (false) { return AjaxResult.error("这是一个错误测试信息"); } return myaddApplyPayment(record,null); } /** * 申请人重新发起申请 * * @param record * @return */ @PostMapping(value = "addApplyLxSjWorkAgain", produces = {"application/json;charset=UTF-8"}) @ResponseBody @Transactional public AjaxResult addApplyLxSjWorkAgain(ApplyAddLxWorkIn record) throws com.rockstar.flow.exception.FlowException { System.out.println("addApplyLxSjWorkAgain"); 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 feeMoneyTotalMap = null; String applyTheme = "" + record.getProName() + "立项申请"; AjaxResult ajaxResult = flowMainService.doFlowMain(applyTheme, id, addSystemRemark, record.getCcList(), ConstantFlowType.LX_SJ_WORK_PROCESSDEFINE, ConstantFlowType.LX_SJ_WORK_DEPLOYMENTID, feeMoneyTotalMap, ConstantFlowType.LX_SJ_WORK_NAME, ConstantFlowType.LX_SJ_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 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 applyAddWorkTimes = applyAddWorkTimeService.selectByExample(example); this.booleanIsAgree(totalAddTime,holidayManagements,applyAddWorkTimes,createdById); } else { //如果是不同意 { // 不需要做什么 } }*/ } return AjaxResult.success(); } else { return ajaxResult; } } /** * 根据推送表的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 applyWorkReceivables = applyWorkReceivableService.selectByExample(example); myApplyLxWorkIn.setApplyWorkReceivables(applyWorkReceivables); } return myApplyLxWorkIn; } }