LAPTOP-FO2T5SIU\35838 5 months ago
parent
commit
38554a2f6b

+ 297 - 0
pro-base/src/main/java/com/idea/oa/apply/controller/ApplyFinanceController.java

@@ -0,0 +1,297 @@
+package com.idea.oa.apply.controller;
+
+import com.idea.oa.apply.model.ApplyFinance;
+import com.idea.oa.apply.model.inout.AddConfirmResult;
+import com.idea.oa.apply.model.inout.ApplyFinanceDto;
+import com.idea.oa.apply.model.inout.ApplyFinanceDto;
+import com.idea.oa.apply.service.ApplyFinanceService;
+import com.idea.oa.apply.service.ApplyPaymentSettleService;
+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.workPanel.enume.HandleTypeEnum;
+import com.idea.workPanel.service.ParkWaitHandleService;
+import com.rockstar.common.base.BaseController;
+import com.rockstar.common.domain.AjaxResult;
+import com.rockstar.flow.exception.FlowException;
+import com.rockstar.frame.service.FrameUserService;
+import com.rockstar.shiro.util.ShiroUtils;
+import com.rockstar.util.UUIDUtils;
+import io.swagger.annotations.Api;
+import lombok.extern.slf4j.Slf4j;
+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;
+import java.util.Map;
+
+/**
+ * Created by zt on 2023
+ */
+@Slf4j
+@Controller
+@RequestMapping(value = "/ApplyPaymentSettleController")
+@Api(value = "分表_上交财政流程申请")
+public class ApplyFinanceController extends BaseController {
+
+    //主表
+    @Autowired
+    private ApplyFinanceService modelService;
+
+    @Autowired
+    private FlowMainCcService flowMainCcService;
+    @Autowired
+    private FlowMainPushService flowMainPushService;
+    @Autowired
+    private FlowMainService flowMainService;
+    @Autowired
+    private FrameUserService frameUserService;
+    @Autowired
+    private ParkWaitHandleService parkWaitHandleService;
+
+
+
+    /**
+     * 付款记录编号 : 付款领用单20240401-002
+     *
+     * @return
+     */
+    @PostMapping(value = "getMaxNum", produces = {"application/json;charset=UTF-8"})
+    @ResponseBody
+    public String getMaxNum() {
+
+        return modelService.getMaxNum();
+    }
+
+    /**
+     * 添加审核结果
+     * 根据不同的状态值confirmResult判断是 1:审核通过,转下一步;2:退回发起人;3:退回上节点;4:结束流程;
+     *
+     * @param addConfirmResult
+     * @return
+     */
+    @PostMapping(value = "AddConfirmResult", produces = {"application/json;charset=UTF-8"})
+    @ResponseBody
+    @Transactional
+    public AjaxResult AddConfirmResult(AddConfirmResult addConfirmResult) throws FlowException {
+        System.out.println("AddConfirmResult");
+        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<>();
+
+            isOkString = flowMainService.doConfirmResult(addConfirmResult, ConstantFlowType.FINANCE_DEPLOYMENTID, ConstantFlowType.FINANCE, flowMainPush, feeMoneyTotalMap);
+            if (!"ok_end".equals(isOkString) && !"ok_noEnd".equals(isOkString)) {
+                return AjaxResult.error(isOkString);
+            }
+        }
+
+        String waitUrl = modelService.getWaitUrl();
+        FlowMain flowMain = flowMainService.selectByPrimaryKey(flowMainPush.getFlowMainId());
+        String flowId = flowMain.getId();
+        // 进行审核操作后 就要处理待办 清除数据
+        String param = "id=" + flowId + "&flowMainPushId=" + flowMainPush.getId() + "&applyUser=" + flowMain.getApplyUser();
+        parkWaitHandleService.userHandle(HandleTypeEnum.SJCZ, param, ShiroUtils.getUserId());
+
+        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;
+            } else {
+                modelService.pushOaAndHandle(flowMainPush, flowMain, waitUrl);
+            }
+        } else if (addConfirmResult.getConfirmResult().equals("2")) { // 退回发起人
+            modelService.pushOaAndHandle(flowMainPush, flowMain, waitUrl);
+        } else if (addConfirmResult.getConfirmResult().equals("3")) { // 退回上一节点
+            modelService.pushOaAndHandle(flowMainPush, flowMain, waitUrl);
+        }
+        //添加业务信息(将请假信息中的修改掉,剩余年假,剩余调休,冻结年假,冻结调休都修改掉)
+        if (isEnd) {
+
+        }
+
+        return result(1);
+    }
+
+
+    /**
+     * 发起付款申请流程
+     *
+     * @param record
+     * @return
+     */
+    @PostMapping(value = "addApplyFinance", produces = {"application/json;charset=UTF-8"})
+    @ResponseBody
+    @Transactional
+    public AjaxResult addApplyFinance(ApplyFinanceDto record, String deptId, String tagerUserId) throws FlowException {
+        System.out.println("addApplyFinance");
+        System.out.println(record);
+        if (false) {
+            return AjaxResult.error("这是一个错误测试信息");
+        }
+        return myaddApplyFinance(record, null, deptId,  tagerUserId);
+    }
+
+    /**
+     * 申请人重新发起申请
+     *
+     * @param record
+     * @return
+     */
+    @PostMapping(value = "addApplyFinanceAgain", produces = {"application/json;charset=UTF-8"})
+    @ResponseBody
+    @Transactional
+    public AjaxResult addApplyFinanceAgain(ApplyFinanceDto record,String deptId, String tagerUserId) throws FlowException {
+        System.out.println("addApplyFinanceAgain");
+        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 myaddApplyFinance(record, "重新发起申请[" + record.getFlowMainId() + "],", deptId,  tagerUserId);
+    }
+
+    /**
+     * 发起请假申请流程
+     *
+     * @param record
+     * @return
+     */
+    public AjaxResult myaddApplyFinance(ApplyFinanceDto record, String addSystemRemark,String deptId, String tagerUserId) throws FlowException {
+
+
+        String id = UUIDUtils.middleUUID();
+        {
+            record.setUpdatedAt(new Date());
+            record.setCreatedAt(record.getUpdatedAt());
+            record.setCreatedBy(ShiroUtils.getUser().getId());
+            record.setUpdatedBy(record.getCreatedBy());
+            record.setCreatedByDept(ShiroUtils.getUser().getDepartment());
+            record.setFlowNum(UUIDUtils.middleUUID());
+            record.setStatus(0);
+            record.setId(id);
+            modelService.insertWithoutId(record);
+        }
+
+        HashMap<String, Object> feeMoneyTotalMap = null;//new HashMap<>();
+        String applyTheme = "" + ShiroUtils.getUser().getTruename() + "的付款申请单";
+        AjaxResult ajaxResult = flowMainService.doFlowMain(applyTheme, record.getId(), addSystemRemark, record.getCcList(), ConstantFlowType.FINANCE_PROCESSDEFINE, ConstantFlowType.FINANCE_DEPLOYMENTID, feeMoneyTotalMap, ConstantFlowType.FINANCE_NAME, ConstantFlowType.FINANCE, ShiroUtils.getUser(), deptId, tagerUserId);
+
+        modelService.startOaAndHandle(record.getId(), applyTheme);
+        if (ajaxResult.get("code").equals(1688)) {
+
+            return AjaxResult.success();
+        } else {
+
+            return ajaxResult;
+        }
+
+    }
+
+
+    /**
+     * 根据推送表的FlowMainPushId获取信息
+     *
+     * @param flowMainPushId
+     * @return
+     */
+    @PostMapping(value = "getInfoByFlowMainPushId", produces = {"application/json;charset=UTF-8"})
+    @ResponseBody
+    public ApplyFinanceDto getInfoByFlowMainPushId(String flowMainPushId) {
+        ApplyFinanceDto myApplyFinanceDto = modelService.getInfoByFlowMainPushId(flowMainPushId);
+        if (myApplyFinanceDto != null) {
+            {//获取抄送人
+
+                List<FlowMainCcVo> flowMainCcList = flowMainCcService.selectVoByFlowMainId(myApplyFinanceDto.getFlowMainId());
+
+                myApplyFinanceDto.setFlowMainCcList(flowMainCcList);
+
+            }
+
+        }
+        return myApplyFinanceDto;
+    }
+
+
+    /**
+     * 根据主表的FlowMainId获取信息
+     *
+     * @param flowMainId
+     * @return
+     */
+    @PostMapping(value = "getInfoByFlowMainId", produces = {"application/json;charset=UTF-8"})
+    @ResponseBody
+    public ApplyFinanceDto getInfoByFlowMainId(String flowMainId) {
+        ApplyFinanceDto myApplyFinanceDto = modelService.getInfoByFlowMainId(flowMainId);
+        if (myApplyFinanceDto != null) {
+            {//获取抄送人
+
+                List<FlowMainCcVo> flowMainCcList = flowMainCcService.selectVoByFlowMainId(myApplyFinanceDto.getFlowMainId());
+
+                myApplyFinanceDto.setFlowMainCcList(flowMainCcList);
+
+            }
+
+
+        }
+        return myApplyFinanceDto;
+    }
+
+    /**
+     * 根据用户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);
+    }
+
+
+
+
+
+
+
+
+}
+

+ 401 - 0
pro-base/src/main/java/com/idea/oa/apply/service/ApplyFinanceService.java

@@ -0,0 +1,401 @@
+package com.idea.oa.apply.service;
+
+import cn.hutool.core.codec.Base64;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.symmetric.AES;
+import com.idea.oa.apply.mapper.ApplyFinanceExtendMapper;
+import com.idea.oa.apply.mapper.ApplyFinanceMapper;
+import com.idea.oa.apply.model.ApplyFinance;
+import com.idea.oa.apply.model.ApplyFinanceExample;
+import com.idea.oa.apply.model.inout.ApplyFinanceDto;
+import com.idea.oa.apply.util.constant.ConstantFlowType;
+import com.idea.oa.flow2.model.FlowMain;
+import com.idea.oa.flow2.model.FlowMainExample;
+import com.idea.oa.flow2.model.FlowMainPush;
+import com.idea.oa.flow2.model.FlowMainPushExample;
+import com.idea.oa.flow2.service.FlowMainPushService;
+import com.idea.oa.flow2.service.FlowMainService;
+import com.idea.util.DateUtils;
+import com.idea.util.OAUtil;
+import com.idea.workPanel.enume.HandleTypeEnum;
+import com.idea.workPanel.service.ParkWaitHandleService;
+import com.rockstar.common.base.BaseService;
+import com.rockstar.frame.model.FramePermission;
+import com.rockstar.frame.model.FramePermissionExample;
+import com.rockstar.frame.model.FrameUser;
+import com.rockstar.frame.service.FramePermissionService;
+import com.rockstar.frame.service.FrameUserService;
+import com.rockstar.shiro.util.ShiroUtils;
+import com.rockstar.util.StringUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@Service
+public class ApplyFinanceService implements BaseService<ApplyFinance, ApplyFinanceExample> {
+
+    @Autowired
+    private ApplyFinanceMapper modelMapper;
+    @Autowired
+    private ApplyFinanceExtendMapper applyFinanceExtendMapper;
+    @Autowired
+    private FlowMainPushService flowMainPushService;
+    @Autowired
+    private FlowMainService flowMainService;
+    @Autowired
+    private ParkWaitHandleService parkWaitHandleService;
+    @Autowired
+    private FramePermissionService framePermissionService;
+    @Autowired
+    private FrameUserService frameUserService;
+    @Value("${serverUrl}")
+    private String serverUrl;
+    @Value("${ssoKey}")
+    private String ssoKey;
+
+
+
+    @Override
+    public int deleteByPrimaryKey(String s) {
+        return modelMapper.deleteByPrimaryKey(s);
+    }
+
+    @Override
+    public int insertSelective(ApplyFinance applyFinance) {
+        applyFinance.setId(IdUtil.simpleUUID());
+        return modelMapper.insertSelective(applyFinance);
+    }
+
+    public int insertWithoutId(ApplyFinance applyFinance) {
+        return modelMapper.insertSelective(applyFinance);
+    }
+
+
+    @Override
+    public ApplyFinance selectByPrimaryKey(String s) {
+        return modelMapper.selectByPrimaryKey(s);
+    }
+
+    @Override
+    public int updateByPrimaryKeySelective(ApplyFinance applyFinance) {
+        return modelMapper.updateByPrimaryKeySelective(applyFinance);
+    }
+
+    @Override
+    public int updateByExampleSelective(ApplyFinance applyFinance, ApplyFinanceExample applyFinanceExample) {
+        return modelMapper.updateByExampleSelective(applyFinance, applyFinanceExample);
+    }
+
+    @Override
+    public int updateByExample(ApplyFinance applyFinance, ApplyFinanceExample applyFinanceExample) {
+        return modelMapper.updateByExample(applyFinance, applyFinanceExample);
+    }
+
+    @Override
+    public List<ApplyFinance> selectByExample(ApplyFinanceExample applyFinanceExample) {
+        return modelMapper.selectByExample(applyFinanceExample);
+    }
+
+    @Override
+    public long countByExample(ApplyFinanceExample applyFinanceExample) {
+        return modelMapper.countByExample(applyFinanceExample);
+    }
+
+    @Override
+    public int deleteByExample(ApplyFinanceExample applyFinanceExample) {
+        return modelMapper.deleteByExample(applyFinanceExample);
+    }
+
+
+    public ApplyFinanceDto getInfoByFlowMainId(String flowMainId) {
+        return applyFinanceExtendMapper.getInfoByFlowMainId(flowMainId);
+    }
+
+    public ApplyFinanceDto getInfoByFlowMainPushId(String flowMainPushId) {
+        return applyFinanceExtendMapper.getInfoByFlowMainPushId(flowMainPushId);
+    }
+
+
+    public Map<String, Object> getUserInfoByUserId(String userId) {
+        Map<String, Object> userInfoByUserId = applyFinanceExtendMapper.getUserInfoByUserId(userId);
+        return userInfoByUserId;
+    }
+
+
+
+    /**
+     * 付款记录编号 : 付款领用单20240401-002
+     *
+     * @return
+     */
+    public String getMaxNum() {
+
+        // RZ202412110001
+
+        String flowNum = "";
+        String maxNum = applyFinanceExtendMapper.selectMaxNum();
+        if(StringUtils.isNotEmpty(maxNum)){
+            maxNum = "0001";
+        }else {
+            maxNum.substring(10);
+        }
+        String yyyyMMdd = DateUtils.parseDateToStr("yyyyMMdd", new Date());
+        flowNum = "RZ" + yyyyMMdd + maxNum;
+
+        return flowNum;
+    }
+
+    /**
+     * 发起流程 推送泛微和工作台待办
+     * @param id
+     * @param applyTheme
+     */
+    public void startOaAndHandle(String id,String applyTheme) {
+
+        try {
+
+            String flowId = "";
+            String nodeName = "";
+
+            FlowMainExample flowMainExample = new FlowMainExample();
+            flowMainExample.createCriteria().andFormIdEqualTo(id).andFlowTypeEqualTo(ConstantFlowType.FINANCE);
+            List<FlowMain> flowMains = flowMainService.selectByExample(flowMainExample);
+            if (CollectionUtils.isNotEmpty(flowMains)) {
+                FlowMain flowMain = flowMains.get(0);
+                flowId = flowMain.getId();
+
+                FlowMainPushExample flowMainPushExample = new FlowMainPushExample();
+                flowMainPushExample.createCriteria().andFlowMainIdEqualTo(flowId).andStatusEqualTo(0);
+                List<FlowMainPush> flowMainPushes = flowMainPushService.selectByExample(flowMainPushExample);
+                if (CollectionUtils.isNotEmpty(flowMainPushes)) {
+                    FlowMainPush flowMainPush = flowMainPushes.get(0);
+                    nodeName = flowMainPush.getNodeName();
+
+                    // 给本系统下一个节点的人推送待办
+                    /**
+                     * 添加待办
+                     * @param title 显示标题
+                     * @param typeEnum 处理类型枚举
+                     * @param srcUserType 来源用户类型 0管理,1企业
+                     * @param srcUserId 来源用户id
+                     * @param srcUserName 来源用户名称
+                     * @param receiveUserId 接收用户id or 0=全部  or 角色id
+                     * @param routeParam 跳转携带参数,例: id=***&type=**
+                     */
+
+                    String waitUrl = "";
+                    // 查询待办页面的 菜单id
+                    FramePermissionExample framePermissionExample = new FramePermissionExample();
+                    framePermissionExample.createCriteria().andNameEqualTo("流程审批");
+                    List<FramePermission> framePermissions = framePermissionService.selectByExample(framePermissionExample);
+                    if (CollectionUtils.isNotEmpty(framePermissions)) {
+                        String menuIndex = framePermissions.get(0).getId();
+                        FramePermissionExample permissionExample = new FramePermissionExample();
+                        permissionExample.createCriteria().andNameEqualTo("付款审批流程");
+                        List<FramePermission> permissions = framePermissionService.selectByExample(framePermissionExample);
+                        if (CollectionUtils.isNotEmpty(permissions)) {
+                            String subMenu = permissions.get(0).getId();
+                            waitUrl = "/backstage?menuIndex=" + menuIndex + "&subMenu=" + subMenu;
+                        }
+
+                    }
+
+                    String title = applyTheme;
+                    HandleTypeEnum typeEnum = HandleTypeEnum.YSKTZ;
+                    Integer srcUserType = 0;//来源用户类型 0管理,1企业
+                    String srcUserId = ShiroUtils.getUserId();
+                    String srcUserName = ShiroUtils.getUser().getTruename();
+                    String receiveUserId = flowMainPush.getPushUser();
+                    String routeParam = "id=" + flowId + "&flowMainPushId=" + flowMainPush.getId() + "&applyUser=" + flowMain.getApplyUser();
+                    HandleTypeEnum.YSKTZ.setUrl(waitUrl);
+                    parkWaitHandleService.addHandle(title, typeEnum, srcUserType, srcUserId, srcUserName, receiveUserId, routeParam);
+
+                    // TODO: 2024/11/21   和泛OA对接 推送待办
+                    FrameUser receiveUser = frameUserService.selectByPrimaryKey(receiveUserId);
+                    String username = encryptUsername(receiveUser.getUsername());
+                    String syscode = "AJ";
+                    String requestname = applyTheme;
+                    String workflowname = ConstantFlowType.FINANCE_NAME;
+                    String pcurl = serverUrl + "&loginid=" + username;
+                    String appurl = "";
+                    String isremark = "0";
+                    String viewtype = "0";
+                    // TODO: 2024/11/15 创建者和接收者需求oa协商
+                    String creator = "ceshi";
+                    String receiver = "ceshi";
+                    String date = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date());
+                    String receivets = System.currentTimeMillis() + "";
+                    Map map = new HashMap<String, Object>();
+                    map.put("syscode", syscode);
+                    map.put("flowid", flowId);
+                    map.put("requestname", requestname);
+                    map.put("workflowname", workflowname);
+                    map.put("nodeName", nodeName);
+                    map.put("pcurl", pcurl);
+                    map.put("appurl", appurl);
+                    map.put("creator", creator);
+                    map.put("createdatetime", date);
+                    map.put("receiver", receiver);
+                    map.put("receivedatetime", date);
+                    map.put("isremark", isremark);
+                    map.put("viewtype", viewtype);
+                    map.put("receivets", receivets);
+
+                    log.info("泛微推送详情:{}", map);
+                    String result = OAUtil.receiveRequestInfoByJson(map);
+                    log.info("泛微推送结果:{}", result);
+
+                }
+
+            }
+
+        } catch (Exception e) {
+            log.error("推送异常", e);
+        }
+    }
+
+
+    /**
+     * 推送泛微和工作台待办
+     *
+     * @param flowMainPush
+     * @param flowMain
+     * @param waitUrl
+     */
+    public void pushOaAndHandle(FlowMainPush flowMainPush, FlowMain flowMain, String waitUrl) {
+
+        try {
+            String flowId = flowMain.getId();
+            FlowMainPushExample flowMainPushExample = new FlowMainPushExample();
+            flowMainPushExample.createCriteria().andFlowMainIdEqualTo(flowId).andStatusEqualTo(0);
+            List<FlowMainPush> flowMainPushes = flowMainPushService.selectByExample(flowMainPushExample);
+            if (CollectionUtils.isNotEmpty(flowMainPushes)) {
+                FlowMainPush push = flowMainPushes.get(0);
+
+                // 给本系统下一个节点的人推送待办
+                /**
+                 * 添加待办
+                 * @param title 显示标题
+                 * @param typeEnum 处理类型枚举
+                 * @param srcUserType 来源用户类型 0管理,1企业
+                 * @param srcUserId 来源用户id
+                 * @param srcUserName 来源用户名称
+                 * @param receiveUserId 接收用户id or 0=全部  or 角色id
+                 * @param routeParam 跳转携带参数,例: id=***&type=**
+                 */
+                String title = flowMain.getApplyTheme();
+                HandleTypeEnum typeEnum = HandleTypeEnum.YSKTZ;
+                Integer srcUserType = 0;//来源用户类型 0管理,1企业
+                String srcUserId = ShiroUtils.getUserId();
+                String srcUserName = ShiroUtils.getUser().getTruename();
+                String receiveUserId = push.getPushUser();
+                String routeParam = "id=" + flowId + "&flowMainPushId=" + push.getId() + "&applyUser=" + flowMain.getApplyUser();
+                HandleTypeEnum.YSKTZ.setUrl(waitUrl);
+                parkWaitHandleService.addHandle(title, typeEnum, srcUserType, srcUserId, srcUserName, receiveUserId, routeParam);
+
+                // TODO: 2024/11/21 和泛微对接 推送信息
+                FrameUser receiveUser = frameUserService.selectByPrimaryKey(receiveUserId);
+                String username = encryptUsername(receiveUser.getUsername());
+                String syscode = "AJ";
+                String requestname = flowMain.getApplyTheme();
+                String workflowname = ConstantFlowType.FINANCE_NAME;
+                String nodeName = flowMainPush.getNodeName();
+                String pcurl = serverUrl + "&loginid=" + username;
+                String appurl = "";
+                String isremark = "0";
+                String viewtype = "0";
+                // TODO: 2024/11/15 创建者和接收者需求oa协商
+                String creator = "ceshi";
+                String receiver = "ceshi";
+                String date = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, new Date());
+                String receivets = System.currentTimeMillis() + "";
+
+                Map map = new HashMap<String, Object>();
+                map.put("syscode", syscode);
+                map.put("flowid", flowId);
+                map.put("requestname", requestname);
+                map.put("workflowname", workflowname);
+                map.put("nodeName", nodeName);
+                map.put("pcurl", pcurl);
+                map.put("appurl", appurl);
+                map.put("creator", creator);
+                map.put("createdatetime", date);
+                map.put("receiver", receiver);
+                map.put("receivedatetime", date);
+                map.put("isremark", isremark);
+                map.put("viewtype", viewtype);
+                map.put("receivets", receivets);
+
+                log.info("泛微推送详情:{}", map);
+                String result = OAUtil.receiveRequestInfoByJson(map);
+                log.info("泛微推送结果:{}", result);
+
+            }
+        } catch (Exception e) {
+            log.error("推送异常", e);
+        }
+
+    }
+
+
+    /**
+     * 获取待办页面的url
+     *
+     * @return
+     */
+    public String getWaitUrl() {
+
+        String waitUrl = "";
+        // 查询待办页面的 菜单id
+        FramePermissionExample framePermissionExample = new FramePermissionExample();
+        framePermissionExample.createCriteria().andNameEqualTo("流程审批");
+        List<FramePermission> framePermissions = framePermissionService.selectByExample(framePermissionExample);
+        if (CollectionUtils.isNotEmpty(framePermissions)) {
+            String menuIndex = framePermissions.get(0).getId();
+            FramePermissionExample permissionExample = new FramePermissionExample();
+            permissionExample.createCriteria().andNameEqualTo("付款审批流程");
+            List<FramePermission> permissions = framePermissionService.selectByExample(framePermissionExample);
+            if (CollectionUtils.isNotEmpty(permissions)) {
+                String subMenu = permissions.get(0).getId();
+                waitUrl = "/backstage?menuIndex=" + menuIndex + "&subMenu=" + subMenu;
+            }
+
+        }
+        return waitUrl;
+    }
+
+
+    /**
+     * 加密用户名
+     *
+     * @param username
+     * @return
+     */
+    public String encryptUsername(String username) {
+
+        byte[] key = Base64.decode(ssoKey);
+        // 构建
+        AES aes = SecureUtil.aes(key);
+        return aes.encryptHex(username);
+    }
+
+
+
+
+
+
+
+
+
+
+
+}

+ 16 - 14
pro-base/src/main/java/com/idea/oa/flow2/controller/FlowMainController.java

@@ -4,9 +4,7 @@ import com.github.pagehelper.PageInfo;
 import com.idea.oa.activiti.service.ProActiService;
 import com.idea.oa.apply.model.*;
 
-import com.idea.oa.apply.service.ApplyCheckInService;
-import com.idea.oa.apply.service.ApplyContractService;
-import com.idea.oa.apply.service.ApplyPaymentSettleService;
+import com.idea.oa.apply.service.*;
 import com.idea.oa.apply.util.constant.ConstantFlowType;
 import com.idea.oa.apply.util.service.RunerLoadOneService;
 import com.idea.oa.flow2.model.FlowMain;
@@ -114,6 +112,16 @@ public class FlowMainController extends BaseController {
     private ApplyPaymentSettleService applyPaymentSettleService;
     @Autowired
     private ApplyContractService applyContractService;
+    @Autowired
+    private ApplyReceivablesAdjustService applyReceivablesAdjustService;
+    @Autowired
+    private ApplyInvoiceRedService applyInvoiceRedService;
+    @Autowired
+    private ApplyBuyingMoreService applyBuyingMoreService;
+    @Autowired
+    private ApplyFinanceService applyFinanceService;
+
+
 
 
     /**
@@ -572,40 +580,34 @@ public class FlowMainController extends BaseController {
                     String param = "id=" + flowMain.getId() + "&flowMainPushId=" + entity.getFlowMainPushId() + "&applyUser=" + flowMain.getApplyUser();
                     parkWaitHandleService.userHandle(HandleTypeEnum.FK, param, ShiroUtils.getUserId());
 
+                    String waitUrl = parkWaitHandleService.getUrl("流程审批", "付款流程审批");
                     // 付款申请
                     if(flowMain.getFlowType().equals(ConstantFlowType.PAYMENT)){
-                        String waitUrl = parkWaitHandleService.getUrl("流程审批", "付款流程审批");
                         applyPaymentSettleService.pushOaAndHandle(newflowMainPush,flowMain,waitUrl);
                     }
                     // 入驻申请
                     if(flowMain.getFlowType().equals(ConstantFlowType.CHECK_IN)){
-                        String waitUrl = parkWaitHandleService.getUrl("流程审批", "入驻流程审批");
                         applyCheckInService.pushOaAndHandle(newflowMainPush,flowMain,waitUrl);
                     }
                     // 合同用章申请
                     if(flowMain.getFlowType().equals(ConstantFlowType.CONTRACT)){
-                        String waitUrl = parkWaitHandleService.getUrl("流程审批", "合同用章流程审批");
                         applyContractService.pushOaAndHandle(newflowMainPush,flowMain,waitUrl);
                     }
                     // 应收款调整申请
                     if(flowMain.getFlowType().equals(ConstantFlowType.RECEIVABLES_ADJUST)){
-                        String waitUrl = parkWaitHandleService.getUrl("流程审批", "应收款调整流程审批");
-
+                        applyReceivablesAdjustService.pushOaAndHandle(newflowMainPush,flowMain,waitUrl);
                     }
                     // 发票红冲申请
                     if(flowMain.getFlowType().equals(ConstantFlowType.INVOICE_RED)){
-                        String waitUrl = parkWaitHandleService.getUrl("流程审批", "发票红冲流程审批");
-
+                        applyInvoiceRedService.pushOaAndHandle(newflowMainPush,flowMain,waitUrl);
                     }
                     // 回购申请
                     if(flowMain.getFlowType().equals(ConstantFlowType.BUYING_MORE)){
-                        String waitUrl = parkWaitHandleService.getUrl("流程审批", "回购流程审批");
-
+                        applyBuyingMoreService.pushOaAndHandle(newflowMainPush,flowMain,waitUrl);
                     }
                     // 上交财政申请
                     if(flowMain.getFlowType().equals(ConstantFlowType.FINANCE)){
-                        String waitUrl = parkWaitHandleService.getUrl("流程审批", "上交财政流程审批");
-
+                        applyFinanceService.pushOaAndHandle(newflowMainPush,flowMain,waitUrl);
                     }
                 }catch (Exception e){
                     log.error("推送异常", e);

+ 24 - 0
pro-base/src/main/java/com/idea/oa/flow2/service/FlowMainService.java

@@ -1219,6 +1219,30 @@ public class FlowMainService implements BaseService<FlowMain, FlowMainExample> {
                 if(flowMain.getFlowType().equals(ConstantFlowType.PAYMENT)){
                     parkWaitHandleService.userHandle(HandleTypeEnum.FK, param, ShiroUtils.getUserId());
                 }
+                // 入驻流程申请
+                if(flowMain.getFlowType().equals(ConstantFlowType.CHECK_IN)){
+                    parkWaitHandleService.userHandle(HandleTypeEnum.RZ, param, ShiroUtils.getUserId());
+                }
+                // 合同用章申请
+                if(flowMain.getFlowType().equals(ConstantFlowType.CONTRACT)){
+                    parkWaitHandleService.userHandle(HandleTypeEnum.HTYZ, param, ShiroUtils.getUserId());
+                }
+                // 应收款调整申请
+                if(flowMain.getFlowType().equals(ConstantFlowType.RECEIVABLES_ADJUST)){
+                    parkWaitHandleService.userHandle(HandleTypeEnum.YSKTZ, param, ShiroUtils.getUserId());
+                }
+                // 发票红冲申请
+                if(flowMain.getFlowType().equals(ConstantFlowType.INVOICE_RED)){
+                    parkWaitHandleService.userHandle(HandleTypeEnum.FPHC, param, ShiroUtils.getUserId());
+                }
+                // 回购申请
+                if(flowMain.getFlowType().equals(ConstantFlowType.BUYING_MORE)){
+                    parkWaitHandleService.userHandle(HandleTypeEnum.HG, param, ShiroUtils.getUserId());
+                }
+                // 上交财政申请
+                if(flowMain.getFlowType().equals(ConstantFlowType.FINANCE)){
+                    parkWaitHandleService.userHandle(HandleTypeEnum.SJCZ, param, ShiroUtils.getUserId());
+                }
 
             }