123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 |
- package com.fuzamei.service;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.util.StringUtils;
- import com.fuzamei.constant.OperationTypeId;
- import com.fuzamei.constant.Role;
- import com.fuzamei.constant.StatusId;
- import com.fuzamei.dao.CapitalTransferDao;
- import com.fuzamei.entity.BusinessCheck;
- import com.fuzamei.entity.BusinessDeclare;
- import com.fuzamei.entity.CapitalTransfer;
- import com.fuzamei.entity.CapitalTransferCheck;
- import com.fuzamei.entity.UserDetail;
- import com.fuzamei.utils.PageDTO;
- @Service
- public class CapitalTransferService {
- @Autowired
- private CapitalTransferDao capitalTransferDao;
- private static final int ROW_NUM = 10; // 分页每页显示数据的数量
- /**
- * 查询资金划转列表 省分行托管中心指令业务岗
- * @param
- * @param
- * @throws Exception
- */
- /*public PageDTO selectCapitalTransferTable(Map<String, Object> map){//查询资金划转列表
- int page = 1; // 默认页是第一页
- String fund_name="";//基金名称
- String status_name="";//状态名称
- long startTime = 0L; // 开始时间默认0
- long endTime = Long.MAX_VALUE; // 结束时间默认Long最大值
-
- if (!"".equals(map.get("page")) && map.get("page") != null) { // 等于空就直接取第一页
- try {
- page = Integer.parseInt((String) map.get("page"));
- if (page < 1) {
- page = 1;
- }
- } catch (NumberFormatException e) {
- page = 1; // 数据解析异常page还是1
- }
- }
- if (!"".equals(map.get("fund_name")) && map.get("fund_name") != null) { // 等于空就直接取空值
- fund_name = (String) map.get("fund_name");
- }
- if (!"".equals(map.get("status_name")) && map.get("status_name") != null) { // 等于空就直接取空值
- status_name = (String) map.get("status_name");
- }
-
- if (!"".equals(map.get("startTime")) && map.get("startTime") != null) { // 等于空就直接取空值
- try {
- startTime = Long.parseLong((String) map.get("startTime"));
- } catch (NumberFormatException e) {
- startTime = 0L; // 数据解析异常startTime还是0
- }
- }
- if (!"".equals(map.get("endTime")) && map.get("endTime") != null) { // 等于空就直接取空值
- try{
- endTime = Long.parseLong((String) map.get("endTime"));
- }catch (NumberFormatException e) {
- endTime = Long.MAX_VALUE; // 数据要是解析异常endTime还是9223372036854775807L
- }
- }
- PageDTO pageDto = new PageDTO(); // 创建分页对象
- Map<String, Object> mapToDao = new LinkedHashMap<String, Object>();
- mapToDao.put("startPage", (page - 1) * ROW_NUM);
- mapToDao.put("fund_name", fund_name);
- mapToDao.put("status_name", status_name);
- if(startTime <= endTime) {
- mapToDao.put("startTime", startTime);
- mapToDao.put("endTime", endTime);
- }else{
- mapToDao.put("startTime", startTime);
- mapToDao.put("endTime", Long.MAX_VALUE);
- }
- mapToDao.put("rowNum", ROW_NUM);// 默认每页显示数据是10条,可根据需求修改分页数量
- int countPage=capitalTransferDao.selectCapitalTransferPage(mapToDao);//资金划转表 总得信息数量页数
- List<CapitalTransfer> CapitalTransferList=capitalTransferDao.selectCapitalTransferTable(mapToDao);
- pageDto.setTotal(countPage);
- pageDto.setRows(CapitalTransferList);
- return pageDto;
-
- }*/
- public PageDTO selectCapitalTransferTableAll(Map<String, Object> map){//查询资金划转列表
- PageDTO pageDto = new PageDTO(); // 创建分页对象
- UserDetail userDetail = (UserDetail) map.get("userDetail");
- List<String> roleList = userDetail.getRole_name();
- List<CapitalTransfer> informationList=null;//定义全局
- int count=0;
-
- if(roleList.contains(Role.BUSINESS_CHECK_POS_OF_PBBTBC)){//核算业务岗
- //指令业务岗通过后 核算业务岗才能看到 未通过状态的都不会显示
- //而且分页的话查询所有信息的条数也是按照之前的条件进行查询的
- informationList=capitalTransferDao.selectCapitalTransferTable2(map);
- count=capitalTransferDao.selectCapitalTransferPage2(map);
- }
- else if(roleList.contains(Role.BUSINESS_CHIEF_POS_OF_PBBTBC)){//核算主管岗
- //指令业务岗和核算业务岗通过后 核算主管岗才能看到 未通过都不会显示
- //而且分页的话查询所有信息的条数也是按照之前的条件进行查询的
- informationList=capitalTransferDao.selectCapitalTransferTable3(map);
- count=capitalTransferDao.selectCapitalTransferPage3(map);
- }
- else {
- //由管理人发起指令后 指令业务岗才能看到 状态为(待指令业务岗审核),————>所有人都能看到
- informationList=capitalTransferDao.selectCapitalTransferTable(map);
- count=capitalTransferDao.selectCapitalTransferPage(map);
- }
- pageDto.setRows(informationList);
- pageDto.setTotal(count);
- return pageDto;
-
- }
- /**
- * 资金划转审核记录的查询,当用户点击查看按钮后,不仅显示了资金划转的信息,还显示了资金划转审核记录的信息,这里资金划转的信息直接从前端获取,审核记录根据前端提供的id号>fund_id来进行查询
- */
- public List<CapitalTransferCheck> queryCapitalTransferCheckInformation(Map<String, Object> map) {
- UserDetail userDetail = (UserDetail) map.get("userDetail");
- List<String> roleList = userDetail.getRole_name();//角色名称
- Integer fund_id = (Integer) map.get("fund_id");
- Integer statusId = capitalTransferDao.getStatusIdByCapitalId(fund_id);//根据资金id 查询状态id值
- if(roleList.contains(Role.BUSINESS_TRAN_POS_OF_PBBTBC)){//指令业务岗
- if(statusId==12) {//如果管理人发起划转资金后 状态不是(待指令业务岗审核 ) 直接返回空
- return null;
- }
- return capitalTransferDao.selectCapitalTransferRecord(map);
- }
- if(roleList.contains(Role.BUSINESS_CHECK_POS_OF_PBBTBC)){//如果是 省分行托管分中心(核算业务岗)
- if(statusId==12||statusId==13){//对于核算主管岗 如果状态是指令业务岗不通过或者是在待审核时 直接返回空
- return null;
- }
- return capitalTransferDao.selectCapitalTransferRecord(map);
- }
- else if(roleList.contains(Role.BUSINESS_CHIEF_POS_OF_PBBTBC)) {//省分行托管分中心(核算主管岗)
- if(statusId==12||statusId==13 ||statusId==14||statusId==15){//如果状态是指令业务岗不通过或者是在业务岗待审核时 再或者核算岗是在待审核或者核算岗审核不通过时 直接返回空
- return null;
- }
- return capitalTransferDao.selectCapitalTransferRecord(map);
- }else {
- return capitalTransferDao.selectCapitalTransferRecord(map);//所有人都能查看
- }
- //throw new RuntimeException("无权操作");
- }
- /**
- * 资金划转 点击查看资金划转 详情 //暂时不用了 上面代替
- *
- * @param map
- * @return
- */
- /* public Map<String, Object> selectChaKanZiJinHuaZhuan(Map<String, Object> map){
- int fund_id=0;
- if (!"".equals(map.get("fund_id")) && map.get("fund_id") != null) {
- fund_id = Integer.parseInt((String)map.get("fund_id"));
- }
- Map<String, Object> mapToDao = new LinkedHashMap<String, Object>();
- mapToDao.put("fund_id", fund_id);
- List<CapitalTransfer> list=capitalTransferDao.selectChaKanZiJinHuaZhuan(mapToDao);
- List<CapitalTransferCheck> lis= capitalTransferDao.selectCapitalTransferRecord(mapToDao);
- Map<String, Object> map1=new LinkedHashMap<String, Object>();
- map1.put("CapitalTransfer", list);
- map1.put("CapitalTransferCheck", lis);
- return map1;
- }
- */
- /**
- * 审核划转资金
- * 审批流程审批意见
- * 将审核意见插入到审核表
- * @param map
- */
- @Transactional(rollbackFor=Exception.class)
- public void insertCheckTransfer(Map<String, Object> map) {
- long currentTime = System.currentTimeMillis();//获取系统时间
- UserDetail userDetail = (UserDetail) map.get("userDetail");//userDetail从controller层获取到
- List<String> roleList = userDetail.getRole_name();////在get角色名称
- String check_department=userDetail.getOrganization_name(); //机构名称————————————>//审核部门 check_department审核部门的名称
- String check_person=userDetail.getPerson_name(); //审核人
- Integer check_result=(Integer) map.get("check_result"); //审核结果(5表示同意,6表示不同意)
- String check_opinion=(String) map.get("check_opinion"); //审核意见
- Integer fund_id=(Integer) map.get("fund_id"); //资金划转的id号,要根据这个更新资金划转表的状态的
- //Integer relation=(Integer) map.get("relation");
- Integer statusId=capitalTransferDao.getStatusIdByCapitalId(fund_id); //根据业务id号获取当前的状态id值
- Integer operatorTypeId=null; //操作类型id号------>放到操作记录表中去的
-
- if(roleList.contains(Role.ADMIN)) {//角色是(管理人)发起划款资金
- statusId=StatusId.INSTRUCT_BUSINESS_ACCOUNTING;//发起后状态 设置为(待指令业务岗审核)
- operatorTypeId=OperationTypeId.ADMIN_LAUNCHING;//管理人发起后操作类型必须是1027 为 发起划款指令(10)
- }
- else if(roleList.contains(Role.BUSINESS_TRAN_POS_OF_PBBTBC)&&statusId==StatusId.INSTRUCT_BUSINESS_ACCOUNTING){//省分行托管中心/状态待指令业务岗审核
- if(check_result==StatusId.AGREE) {//如果审核结果是通过
- statusId=StatusId.CHECK_BUSINESS_ACCOUNTING; //通过后 状态显示为待核算业务岗审核
- operatorTypeId=OperationTypeId.INSTRUCT_BUSINESS_ACCOUNTING_YES;//操作类型为指令业务岗通过 改动了
- }else if(check_result==StatusId.REJECTED) {//如果审核结 果是不通过
- statusId=StatusId.INSTRUCT_BUSINESS_ACCOUNTING_NO;//显示>为指令业务岗审核不通过
- operatorTypeId=OperationTypeId.CHECK_BUSINESS_ACCOUNTING_REJECT_MAIN;//指令业务岗拒绝
- }else {
- throw new RuntimeException("审核结果参数非法1");
- }
- }
- else if(roleList.contains(Role.BUSINESS_CHECK_POS_OF_PBBTBC)&&statusId==StatusId.CHECK_BUSINESS_ACCOUNTING){ //如果是待核算业务岗操作,且当前状态id必须是14
- if(check_result==StatusId.AGREE){//审核结果时通过
- statusId=StatusId.CHARGE_BUSINESS_ACCOUNTING; //如果通过 状态显示为待核算主管岗审核
- operatorTypeId=OperationTypeId.CHECK_BUSINESS_ACCOUNTING_PASS; //操作类型核算业务岗通过
- }else if(check_result==StatusId.REJECTED){//不通过
- statusId=StatusId.CHECK_BUSINESS_ACCOUNTING_NO; //显示核算业务岗不通过
- operatorTypeId=OperationTypeId.CHECK_BUSINESS_ACCOUNTING_REJECT;//核算业务岗拒绝
- }else{
- throw new RuntimeException("审核结果参数非法2");
- }
- }else if(roleList.contains(Role.BUSINESS_CHIEF_POS_OF_PBBTBC)&&statusId==StatusId.CHARGE_BUSINESS_ACCOUNTING){//如果是待核算主管岗,且当前状态id必须是16
- if(check_result==StatusId.AGREE){//如果审核结果通过
- statusId=StatusId.CHARGE_BUSINESS_ACCOUNTING_YES;
- operatorTypeId=OperationTypeId.CHARGE_BUSINESS_ACCOUNTING_YES;//核算主管岗通过
- }else if(check_result==StatusId.REJECTED){//如果审核结果不通过
- statusId=StatusId.CHARGE_BUSINESS_ACCOUNTING_NO;//核算主管岗审核不通过
- operatorTypeId=OperationTypeId.CAPITAL_TRANSFER_REEXAMINE_REJECTED_NO;// //(划转资金)核算主管岗终审拒绝
- }else{
- throw new RuntimeException("审核结果参数非法3");
- }
- }
- else{
- throw new RuntimeException("无权操作222");
- }
- //将审核已将数据封装到map中
- Map<String, Object> mapToDaoOfCapitalTransfer=new LinkedHashMap<String, Object>();
- mapToDaoOfCapitalTransfer.put("check_department", check_department);
- mapToDaoOfCapitalTransfer.put("check_person", check_person);
- mapToDaoOfCapitalTransfer.put("check_result", check_result);
- mapToDaoOfCapitalTransfer.put("check_opinion", check_opinion);
- mapToDaoOfCapitalTransfer.put("fund_id", fund_id);
- mapToDaoOfCapitalTransfer.put("check_time", currentTime);
- mapToDaoOfCapitalTransfer.put("relation", StatusId.CHECKING); //这里不能写死—管理人划转资金就是发起————第1.2.3级任务类型就是审核了————————》待改
- //将封装到map的审核意见数据传入dao层中将结果导入【资金划转审核记录表】中-------->插入操作
- capitalTransferDao.insertCheckTransfer(mapToDaoOfCapitalTransfer);
-
- //将审核的结果封装到map中
- Map<String, Object> mapToDaoOfBusinessDeclare=new LinkedHashMap<String, Object>();
- mapToDaoOfBusinessDeclare.put("fund_id", fund_id);
- mapToDaoOfBusinessDeclare.put("statusId", statusId);
- //将审核结果更新到【资金划转】这个fund_id的【资金划转结果字段】中去-------->修改操作
- capitalTransferDao.updateCapitaltransferStatus(mapToDaoOfBusinessDeclare);
-
- //还要将审核的这个操作信息插入到操作记录表中
- Map<String, Object> mapToOperationHistory = new LinkedHashMap<String,Object>();
- mapToOperationHistory.put("operator_type_id", operatorTypeId); //operatorTypeId根据前面的判断决定
- mapToOperationHistory.put("operator_role", check_department); //创建这个操作的角色根据前面的organizationName决定
- mapToOperationHistory.put("operator_account", userDetail.getAccount()); //操作账号写活
- mapToOperationHistory.put("operator_person", userDetail.getPerson_name()); //操作人先写活
- mapToOperationHistory.put("operator_time", currentTime); //操作时间为当前操作时间
- mapToOperationHistory.put("hash", "5555555555"); //如何计算操作的hash值????目前写死的这里
- capitalTransferDao.insertOperationHistory(mapToOperationHistory);// 将操作记录信息插入到操作记录表中
-
-
- }
- ///////////////////////////////////////以下////////////////////////////////////////////////////////////////////____
- /**
- * 由管理人来发起划款 资金
- * @param map
- * @return
- *
- */
- @Transactional
- public void insertCapitalTransfer(Map<String, Object> map){
- long currentTime = System.currentTimeMillis();//获取系统时间
- UserDetail userDetail = (UserDetail) map.get("userDetail");//userDetail从controller层获取到
- //List<String> roleList = userDetail.getRole_name();//角色名称
- String check_department=userDetail.getOrganization_name();//机构名称
- String check_person=userDetail.getPerson_name();//处理人员
-
- int user_id=(int) map.get("userId");//???
- int accoun_id=(int) map.get("accoun_id");//????????????????
- String custodian=(String) map.get("custodian");//???
- String fund_name=(String) map.get("fund_name");
- double sum_of_money=(double) map.get("sum_of_money");
- String attachment_name=(String) map.get("attachment_name");//附件名称拿上传文件的名称
-
- double account_balance=userDetail.getAccount_balance();//管理人的账户余额 ????
- // double money=userDetail.getMoney();//??????????????
- double money=1000;
- double minusResult=account_balance-sum_of_money;//账户余额减去划款金额后的结果???
- double sumMoney=sum_of_money+money;//划款金额+钱??
-
- //插入资金划转表
- Map<String, Object> mapToCapitalTransfer=new LinkedHashMap<String, Object>();
- mapToCapitalTransfer.put("custodian", custodian);//管理人????还是userDetail.getUser_id()
- mapToCapitalTransfer.put("fund_name", fund_name);//基金名称
- mapToCapitalTransfer.put("sum_of_money",sum_of_money);//划款金额
- mapToCapitalTransfer.put("basis_of_payment",attachment_name);//划款依据-->文件名称?????是个路径?
- mapToCapitalTransfer.put("apply_time",currentTime);//申请时间
- mapToCapitalTransfer.put("handle_time",currentTime);//处理时间
- mapToCapitalTransfer.put("status_id",StatusId.INSTRUCT_BUSINESS_ACCOUNTING);//管理人发起后 状态改为 待指令业务岗审核 发起后由后面3级来审批
- capitalTransferDao.insertCapitalTransfer(mapToCapitalTransfer);//插入到划转资金表
-
- //资金划转完要产生一条记录 (往资金审核记录表插入信息)
- Map<String, Object> mapToDaoOfCapitalTransfer=new LinkedHashMap<String, Object>();
- mapToDaoOfCapitalTransfer.put("check_department", check_department);//审核部门or机构名称
- mapToDaoOfCapitalTransfer.put("check_person",check_person);//处理人员
- mapToDaoOfCapitalTransfer.put("check_result",StatusId.AGREE);//这里一旦点击提交状态必须是通过???
- mapToDaoOfCapitalTransfer.put("check_opinion", "--");//刚发起是没有审核意见的
- mapToDaoOfCapitalTransfer.put("check_time", currentTime);
- mapToDaoOfCapitalTransfer.put("relation", StatusId.LAUNCHING);//任务类型为 发起
- capitalTransferDao.insertCheckTransfer(mapToDaoOfCapitalTransfer);//管理人发起划款资金后也会产生一条划款记录到划转审核记录表里 且任务状态为发起
-
- //修改user表账户余额(减)
- Map<String, Object> mapToUpdateUserAccountBalance=new LinkedHashMap<String, Object>();
- mapToUpdateUserAccountBalance.put("user_id",user_id );
- mapToUpdateUserAccountBalance.put("account_balance", minusResult);//待改
- capitalTransferDao.updateTUserAccountBalance(mapToUpdateUserAccountBalance);//去用户表去修改减掉(账户余额)的钱
-
- //修改账户信息表的钱(加)
- Map<String, Object> mapToUpdateAccountMoney=new LinkedHashMap<String, Object>();
- mapToUpdateAccountMoney.put("accoun_id", accoun_id);//账户表id
- mapToUpdateAccountMoney.put("money", sumMoney);//账户表 钱
- capitalTransferDao.updateAccountMoney(mapToUpdateAccountMoney);//去账户信息表去修改钱 计算加起来
-
-
- //同时往附件表也插入信息
- Map<String, Object> mapToAttachment=new LinkedHashMap<String, Object>();
- mapToAttachment.put("attachment_id", map.get("attachmentId")); //写的是随机数Action已经去数据库校验过了
- mapToAttachment.put("attachment_name", attachment_name); //附件名称 写上传文件后的名称
- mapToAttachment.put("url","暂"); //附件url ?????
- mapToAttachment.put("upload_person_id",userDetail.getUser_id());//附件上传人id //写的是管理人id??
- mapToAttachment.put("create_time", currentTime); //附件添加时间
- capitalTransferDao.insertAttachmentInfo(mapToAttachment);//插入到附件表
-
- //往操作记录表也插入一条信息
- Map<String, Object> mapToOperationHistory = new LinkedHashMap<String,Object>();
- mapToOperationHistory.put("operator_type_id",OperationTypeId.ADMIN_LAUNCHING); //操作类型id 是管理人发起划款指令?
- mapToOperationHistory.put("operator_role", check_department); //创建这个操作的角色根据前面的organizationName决定
- mapToOperationHistory.put("operator_account", userDetail.getAccount()); //操作账号
- mapToOperationHistory.put("operator_person", userDetail.getPerson_name()); //操作人
- mapToOperationHistory.put("operator_time", currentTime); //操作时间为当前操作时间
- mapToOperationHistory.put("hash", "777777777"); //如何计算操作的hash值????暂时写死的
- capitalTransferDao.insertOperationHistory(mapToOperationHistory); //将操作记录信息插入到操作记录表中
-
- }
-
-
-
- }
|