123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313 |
- 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 com.fuzamei.constant.BattleResult;
- import com.fuzamei.constant.OperationTypeId;
- import com.fuzamei.constant.Role;
- import com.fuzamei.dao.AttachmentDao;
- import com.fuzamei.dao.ProjectFileDao;
- import com.fuzamei.dao.UserAuthoricationDao;
- import com.fuzamei.dao.ValuationAccountingDao;
- import com.fuzamei.entity.UserDetail;
- import com.fuzamei.entity.ValuationAccount;
- import com.fuzamei.utils.PageDTO;
- @Service
- public class ValuationAccountingService {
-
- @Autowired
- private ValuationAccountingDao valuationAccountingDao;
-
- @Autowired
- private ProjectFileDao projectFileDao;
- /**
- *
- * @Title: queryValuationAccountingInformation
- * @Description: TODO(查看估值核算表的信息,只有管理人和省托管分中心估值核算岗才有权限查看)
- * @param @param map
- * @param @return 设定文件
- * @return PageDTO 返回类型
- * @author ylx
- * @date 2017年12月28日 上午11:38:35
- * @throws
- */
- public PageDTO queryValuationAccountingInformation(Map<String, Object> map) {
- PageDTO pageDTO=new PageDTO();
- List<ValuationAccount> informationList=valuationAccountingDao.queryValuationAccountingInformation(map); //从service层中获取分页的对象信息
- int count=valuationAccountingDao.findAllInformations(); //获取总的信息数量
- pageDTO.setTotal(count);
- pageDTO.setRows(informationList);
- return pageDTO;
- }
- /**
- *
- * @Title: insertInformationIntoTable
- * @Description: TODO(以管理员身份首次将估值核算等数据插入数据库中------>首次创建基金id号要生成,基金名,托管资产都要从用户这里获取)
- * @param @param map 设定文件
- * @return void 返回类型
- * @author ylx
- * @date 2017年12月18日 下午5:49:33
- * @throws
- */
- @Transactional(rollbackFor=Exception.class)
- public void insertInformationIntoTableByAdminForTheFirstTime(Map<String, Object> map) {
- long currentTime = System.currentTimeMillis();
- int attachmentId = (Integer) map.get("attachmentId");
- UserDetail userDetail = (UserDetail) map.get("userDetail");
- //将数据插入到估值核算表的数据封装到mapToDaoForValuationAccounting
- Map<String, Object> mapToDaoForValuationAccounting = new LinkedHashMap<String,Object>();
- mapToDaoForValuationAccounting.put("fundId", map.get("fundId"));
- mapToDaoForValuationAccounting.put("fundName", map.get("fundName"));
- mapToDaoForValuationAccounting.put("assets", map.get("assets"));
- //管理员估值报表的id,而银行估值报表的id这个时候是没有添加的,也就是表中插入数据的时候,银行估值报表的id先空着
- mapToDaoForValuationAccounting.put("attachmentId", attachmentId); //附件id已经写活♥
- mapToDaoForValuationAccounting.put("updateTime", currentTime); //上传文件的更新时间为当前时间
- mapToDaoForValuationAccounting.put("battleResult", BattleResult.TO_BE_MATCHED); //对账结果为待对账,这里就是一个常量信息♥
- valuationAccountingDao.insertInformationIntoTableByAdmin(mapToDaoForValuationAccounting); //将以上的数据直接添加到数据库中【估值核算表】去
- //将附件信息放入到mapToDaoForAttachment并传递到数据库插入
- Map<String, Object> mapToDaoForAttachment = new LinkedHashMap<String,Object>();
- mapToDaoForAttachment.put("attachmentId", attachmentId); //附件id已经写活♥
- mapToDaoForAttachment.put("attachmentName", map.get("attachmentName")); //附件名称需要录入
- mapToDaoForAttachment.put("url", map.get("url")); //下载文件需要用到的url地址需要录入
- mapToDaoForAttachment.put("userId", map.get("userId")); //用户id♥
- mapToDaoForAttachment.put("addTime", currentTime); //这里添加的文件上传时间,和估值核算添加的时间一致
- valuationAccountingDao.insertInformationToAttachment(mapToDaoForAttachment);
-
- //此外,还要将业务申报的这个操作信息插入到操作记录表中【操作记录表】
- Map<String, Object> mapToOperationHistory = new LinkedHashMap<String,Object>();
- mapToOperationHistory.put("operatorTypeId", OperationTypeId.UPLOAD_VALUATION_CHECK); //上传估值核算表为1010
- mapToOperationHistory.put("operatorAccount", userDetail.getAccount()); //操作账号通过userDetail中获取
- mapToOperationHistory.put("operatorRole", Role.ADMIN); //创建这个操作的角色只能是管理人
- mapToOperationHistory.put("operatorPerson", userDetail.getPerson_name()); //操作人通过userDetail中获取
- mapToOperationHistory.put("operatorTime", currentTime); //操作时间为当前操作时间
- mapToOperationHistory.put("hash", "来自前端token计算"); //如何计算操作的hash值?(按照上传的项目文件的hash值算)=====>>待定TODO
- projectFileDao.insertOperationHistoryInformationToDao(mapToOperationHistory); //将操作记录信息插入到操作记录表中
- }
-
-
-
-
- /**
- *
- * @Title: updateInformationByAdmin
- * @Description: TODO(以管理员的身份进行估值核算文件重新上传的操作)
- * @param @param mapToService 设定文件
- * @return void 返回类型
- * @author ylx
- * @date 2017年12月29日 上午10:08:47
- * @throws
- */
- @Transactional(rollbackFor=Exception.class)
- public void updateInformationByAdmin(Map<String, Object> map) {
- long currentTime=System.currentTimeMillis(); //获取当前时间
- UserDetail userDetail = (UserDetail) map.get("userDetail"); //获取用户详细信息
- Map<String, Object> mapToDaoForValuationAccounting = new LinkedHashMap<String,Object>();
- mapToDaoForValuationAccounting.put("fundId", map.get("fundId"));
- //管理员估值报表这个时候重新上传文件只需要把总表中的对账结果和更新时间改一下就可以了,附件id不用换
- mapToDaoForValuationAccounting.put("updateTime", currentTime); //上传文件的更新时间为当前时间
- mapToDaoForValuationAccounting.put("battleResult", map.get("battleResult")); //总表中需要改变的对账结果
- valuationAccountingDao.updateInformationByAdmin(mapToDaoForValuationAccounting); //将以上的数据更新到之前估值核算表
-
-
- //将附件信息封装到mapToDaoForAttachment并传入数据库中
- Map<String, Object> mapToDaoForAttachment = new LinkedHashMap<String,Object>();
- mapToDaoForAttachment.put("attachmentId", map.get("attachmentId")); //直接从前面的map中获取
- mapToDaoForAttachment.put("url", map.get("url")); //下载文件需要用到的url地址需要录入到附件表中
- mapToDaoForAttachment.put("attachmentName", map.get("attachmentName")); //附件名称要重新修改
- mapToDaoForAttachment.put("userId", userDetail.getUser_id()); //用户id写活了,这个用户id也要改下♥
- mapToDaoForAttachment.put("addTime", currentTime); //这里添加的文件重新上传的时间,和项目文档更新时间一样
- valuationAccountingDao.updateAttachmentInformationByAdmin(mapToDaoForAttachment); //将以上的数据更新到附件表
-
- //此外,还要将上传估值核算表的这个操作信息插入到操作记录表中【】
- Map<String, Object> mapToOperationHistory = new LinkedHashMap<String,Object>();
- mapToOperationHistory.put("operatorTypeId", OperationTypeId.UPLOAD_VALUATION_CHECK); //操作类型为【上传估值核算表】---1010
- mapToOperationHistory.put("operatorAccount", userDetail.getAccount()); //操作账号写活了♥
- mapToOperationHistory.put("operatorRole", Role.ADMIN); //创建这个操作的角色只能是---管理人
- mapToOperationHistory.put("operatorPerson", userDetail.getPerson_name()); //操作人写活了♥
- mapToOperationHistory.put("operatorTime", currentTime); //操作时间为当前操作时间
- mapToOperationHistory.put("hash", "to be calculated from operation"); //如何计算操作的hash值????======================================>>待定TODO
- valuationAccountingDao.insertOperationHistoryInformationToDao(mapToOperationHistory);//将操作记录信息插入到操作记录表中
-
- }
-
-
- /**
- *
- * @Title: updateInformationByBank
- * @Description: TODO(以银行的身份将银行的估值核算等数据更新到已经存在的表中,同时将上传估值核算的操作记录插入到操作记录表中去)
- * @param @param map 设定文件
- * @return void 返回类型
- * @author ylx
- * @date 2017年12月18日 下午8:21:51
- * @throws
- */
- @Transactional(rollbackFor=Exception.class)
- public void updateInformationByBank(Map<String, Object> map) {
- long currentTime=System.currentTimeMillis();
- UserDetail userDetail = (UserDetail) map.get("userDetail"); //获取用户详细信息
- Integer attachmentId = (Integer) map.get("attachmentId");
- String battleResult = (String) map.get("battleResult"); //获取比对结果
-
- //更新估值核算表中的信息
- Map<String, Object> mapToDaoForValuationAccounting = new LinkedHashMap<String,Object>();
- mapToDaoForValuationAccounting.put("fundId", map.get("fundId"));
- mapToDaoForValuationAccounting.put("attachmentId", attachmentId); //附件id已经写活♥===========>>id号生成机制到时候再改TODO
- mapToDaoForValuationAccounting.put("updateTime", currentTime); //上传文件的更新时间为当前时间
- mapToDaoForValuationAccounting.put("battleResult", battleResult); //总表中需要改变的对账结果
- valuationAccountingDao.updateInformationByBank(mapToDaoForValuationAccounting); //将以上的数据更新到之前估值核算表
-
-
- //待对账银行是插入一个新数据
- if(BattleResult.TO_BE_MATCHED.equals(battleResult)){
- //将附件信息封装到mapToDaoForAttachment并传入数据库中
- Map<String, Object> mapToDaoForAttachment = new LinkedHashMap<String,Object>();
- mapToDaoForAttachment.put("attachmentId", attachmentId);
- mapToDaoForAttachment.put("url", map.get("url")); //下载文件需要用到的url地址需要录入到附件表中
- mapToDaoForAttachment.put("attachmentName", map.get("attachmentName")); //附件名称需要录入
- //用户id已经写活♥
- mapToDaoForAttachment.put("userId", userDetail.getUser_id()); //用户id写活了♥
- mapToDaoForAttachment.put("addTime", currentTime); //这里添加的文件上传时间,和项目文档更新时间一样
- valuationAccountingDao.insertInformationToAttachment(mapToDaoForAttachment); //将以上的数据插入到附件表中
- }
-
- //不一致说明银行要修改附件中的信息
- if(BattleResult.INCONSISTENT.equals(battleResult)){
- //将附件信息封装到mapToDaoForAttachment并传入数据库中
- Map<String, Object> mapToDaoForAttachment = new LinkedHashMap<String,Object>();
- mapToDaoForAttachment.put("attachmentId", attachmentId);
- mapToDaoForAttachment.put("url", map.get("url")); //下载文件需要用到的url地址需要录入到附件表中
- mapToDaoForAttachment.put("attachmentName", map.get("attachmentName")); //附件名称需要录入
- //用户id已经写活♥
- mapToDaoForAttachment.put("userId", userDetail.getUser_id()); //用户id写活了♥
- mapToDaoForAttachment.put("addTime", currentTime); //这里添加的文件上传时间,和项目文档更新时间一样
- valuationAccountingDao.updateAttachmentInformationByBank(mapToDaoForAttachment); //将以上的数据插入到附件表中
- }
-
-
-
- //此外,还要将业务申报的这个操作信息插入到操作记录表中【】
- Map<String, Object> mapToOperationHistory = new LinkedHashMap<String,Object>();
- mapToOperationHistory.put("operatorTypeId", OperationTypeId.UPLOAD_VALUATION_CHECK); //操作类型为【上传估值核算表】---1010
- mapToOperationHistory.put("operatorAccount", userDetail.getAccount()); //操作账号写活了♥
- mapToOperationHistory.put("operatorRole", Role.ACCOUNTING_POS_OF_TBC); //创建这个操作的角色只能是---省分行托管分中心估值核算岗
- mapToOperationHistory.put("operatorPerson", userDetail.getPerson_name()); //操作人写活了♥
- mapToOperationHistory.put("operatorTime", currentTime); //操作时间为当前操作时间
- mapToOperationHistory.put("hash", "to be calculated from operation"); //如何计算操作的hash值????=========================>>TODO
- valuationAccountingDao.insertOperationHistoryInformationToDao(mapToOperationHistory);//将操作记录信息插入到操作记录表中
- }
-
- /**
- *
- * @Title: checkoutDownloadInformation
- * @Description: TODO(去数据库调取下载提示框的信息)
- * @param @param fundId
- * @param @return 设定文件
- * @return Map<String,Object> 返回类型
- * @author ylx
- * @date 2017年12月28日 下午1:59:58
- * @throws
- */
- public List<ValuationAccount> checkoutDownloadInformation(int fundId) {
- List<ValuationAccount> listToClient = valuationAccountingDao.checkoutDownloadInformation(fundId);
- if(listToClient==null||listToClient.isEmpty()){
- throw new RuntimeException("查无此信息");
- }
- return listToClient;
- }
- /**
- *
- * @Title: generateFundId
- * @Description: TODO(用于给前端返回一个fundId号,而且还不能和数据库中已有的id号重复)
- * @param @return 设定文件
- * @return Map<String,Object> 返回类型
- * @author ylx
- * @date 2017年12月28日 下午3:45:12
- * @throws
- */
- public Map<String, Object> generateFundId() {
- int same = 0;
- Integer fundId = null;
- //如果有重复的继续查,直到查不出重复的fundId号为止
- while(same > 0){
- fundId=(int)(Math.random()*1000000000); //=========================>>>产生基金id号的机制要改的TODO
- same = valuationAccountingDao.queryIfHasTheSameFundId(fundId);
- }
- Map<String, Object> mapToClient = new LinkedHashMap<String, Object>();
- mapToClient.put("fundId", fundId);
- return mapToClient;
- }
-
- /**
- *
- * @Title: checkIfHasTheSameFundId
- * @Description: TODO(验证基金id号是不是已经存在,如果已经存在直接报错)
- * @param @param fundId 设定文件
- * @return void 返回类型
- * @author ylx
- * @date 2017年12月28日 下午5:18:55
- * @throws
- */
- public void checkIfHasTheSameFundId(int fundId){
- int same = valuationAccountingDao.queryIfHasTheSameFundId(fundId);
- if(same >0){
- throw new RuntimeException("该信息已经存在");
- }
- }
- /**
- *
- * @Title: checkIfFundExists
- * @Description: TODO(验证该基金是否存在,并返回这个基金的对账结果)
- * @param @param fundId
- * @param @param fundName
- * @param @param 设定文件
- * @return void 返回类型
- * @author ylx
- * @date 2017年12月28日 下午6:22:16
- * @throws
- */
- public ValuationAccount checkIfFundExists(Integer fundId, String fundName) {
- ValuationAccount valuationAccount = valuationAccountingDao.checkIfFundExists(fundId,fundName);
- if(valuationAccount == null){
- throw new RuntimeException("该信息不存在");
- }
- return valuationAccount;
- }
- /**
- *
- * @Title: checkIfHasTheSameFundId
- * @Description: TODO(验证基金名是不是已经存在,如果已经存在直接报错)
- * @param @param fundId 设定文件
- * @return void 返回类型
- * @author ylx
- * @date 2017年12月28日 下午5:18:55
- * @throws
- */
- public void checkIfHasTheSameFundName(String fundName) {
- int same = valuationAccountingDao.queryIfHasTheSameFundName(fundName);
- if(same >0){
- throw new RuntimeException("该信息已经存在");
- }
- }
-
-
-
-
-
-
- }
|