123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- package com.jeeplus.modules.sg.overheadline.service;
- import com.jeeplus.common.utils.excel.ImportExcel;
- import com.jeeplus.common.utils.sg.ExcelUtil;
- import com.jeeplus.modules.sg.overheadline.entity.Settlement;
- import com.jeeplus.modules.sg.overheadline.mapper.SettlementMapper;
- import com.jeeplus.modules.sg.overheadline.util.BashInfo;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import org.springframework.web.multipart.MultipartFile;
- import java.util.*;
- @Service
- public class SettlementService {
- @Autowired
- private SettlementMapper settlementMapper;
- /*
- 添加结算工程表
- */
- @Transactional
- public void save(MultipartFile file,String id){
- try {
- List<Settlement> settlementList = getSettlement(file,id);
- for (Settlement settlement:settlementList){
- settlementMapper.sava(settlement);
- }
- }catch (Exception c){
- c.printStackTrace();
- }
- }
- /*
- 查找结算工程表
- */
- public List<Settlement> selectSettlementService(String id){
- return settlementMapper.selectSettlement(id);
- }
- /*
- 获取结算数据
- */
- public List<Settlement> getSettlement(MultipartFile file, String id) throws Exception{
- ImportExcel completion = new ImportExcel(file,1, BashInfo.SHEET_HZB);//工程项目竣工结算汇总表
- ImportExcel built = new ImportExcel(file,1,BashInfo.SHEET_GCHZ);//架空线路工程汇总表
- ImportExcel division = new ImportExcel(file,1,BashInfo.SHEET_FBFXJJ);//分部分项工程量清单计价表
- ImportExcel wordFirst = new ImportExcel(file,1,BashInfo.SHEET_CSB);//措施项目清单计价表(一)
- ImportExcel otherProject = new ImportExcel(file,1,BashInfo.SHEET_QTFY);//其他项目清单计价表
- ImportExcel feesProject = new ImportExcel(file,1,BashInfo.SHEET_GFQD);//规费项目清单计价表
- Map<String,Object[]> builtMap = getCompletionWorks(completion);
- double builtTotal = ExcelUtil.getDouble(built,BashInfo.QT_HJ,0,2);//获取架空线路工程费用汇总表 分部分项 合计
- double wordtotal = ExcelUtil.getDouble(wordFirst,BashInfo.QT_HJ,0,4);//获取措施费清单计价表
- double otherTotal = ExcelUtil.getDouble(otherProject,BashInfo.QT_HJ,0,2);//获取其他项目费合计
- int[] comlumn2 = {12,14,15};
- double[] divisiontotal=ExcelUtil.getDoubleArray(division,BashInfo.PROJECTNAME,2,comlumn2);//获取分工清单
- double feescount = ExcelUtil.getDouble(feesProject,BashInfo.QT_HJ,0,4);//获取规费合计
- return getTotality(builtMap,builtTotal,divisiontotal,wordtotal,otherTotal,feescount,id);
- }
- /*
- 获取《工程项目竣工结算汇总表》匹配数据
- */
- public Map<String,Object[]> getCompletionWorks(ImportExcel importExcel){
- Map<String,Object[]> map = new LinkedHashMap<String, Object[]>();
- int lastDataRowNum = importExcel.getLastDataRowNum();
- String key="";
- double val=0.0;
- String text = "";
- Object[] objects;
- for (int i = 2; i < lastDataRowNum; i++) {
- objects = new Object[2];
- key = importExcel.getValue(i+1,1);
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- switch (key){
- case BashInfo.JS_FBFX:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_CBRF:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_CSXM:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_QTXM:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_GF:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_SJ:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_FBRF:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_JGJS:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_BZZS:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_KJJG:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- case BashInfo.JS_GCJS:
- val = importExcel.getDouble(i+1,2);
- text=importExcel.getValue(i+1,3);
- objects[0] = val;
- objects[1] = text;
- map.put(key, objects);
- break;
- }
- }
- return map;
- }
- /*
- 结算汇总数据比对方法
- */
- public List<Settlement> getTotality(Map<String,Object[]> builtMap,double builtTotal,double[] divisiontotal,double wordtotal,double otherTotal,double feescount,String id){
- List<Settlement> list = new ArrayList<Settlement>();
- String key="";
- double count=0.0;
- double countProtect=0.0;
- double creatProtect=0.0;
- String status="1";
- Settlement settlement;
- String reason = BashInfo.JS_REASON;
- for (Map.Entry<String,Object[]> map:builtMap.entrySet()){
- key = map.getKey();
- Object[] val = map.getValue();
- double money = Double.parseDouble(val[0].toString());
- String remarks=val[1].toString();
- switch (key){
- case BashInfo.JS_FBFX:
- if(money==builtTotal&&money==divisiontotal[0]){
- status="0";
- }else {
- reason = BashInfo.RESON_FBFX;
- }
- count+=money;
- break;
- case BashInfo.JS_CBRF:
- if(money==divisiontotal[1]){
- status="0";
- }else {
- reason = BashInfo.RESON_CBRF;
- }
- count+=money;
- break;
- case BashInfo.JS_CSXM:
- if(money==wordtotal){
- status="0";
- }else {
- reason = BashInfo.RESON_CSXM;
- }
- count+=money;
- break;
- case BashInfo.JS_QTXM:
- if(money==otherTotal){
- status="0";
- }else {
- reason = BashInfo.RESON_QTXM;
- }
- count+=money;
- break;
- case BashInfo.JS_GF:
- if(money==feescount){
- status="0";
- }else {
- reason = BashInfo.RESON_GF;
- }
- count+=money;
- break;
- case BashInfo.JS_FBRF:
- if(money==divisiontotal[2]){
- status="0";
- }else {
- reason = BashInfo.RESON_FBRF;
- }
- count+=money;
- break;
- case BashInfo.JS_SJ:
- status="0";
- count+=money;
- break;
- case BashInfo.JS_JGJS:
- if(money==count){
- status="0";
- }else {
- reason = BashInfo.RESON_JGJS;
- }
- countProtect+=money;
- break;
- case BashInfo.JS_BZZS:
- status="0";
- countProtect+=money;
- break;
- case BashInfo.JS_KJJG:
- status="0";
- creatProtect=money;
- break;
- case BashInfo.GCJS:
- double reduce = countProtect-creatProtect;
- if (money==reduce){
- status="0";
- }else {
- reason = BashInfo.RESON_GCJS;
- }
- break;
- }
- settlement = new Settlement();
- settlement.setId(id);
- settlement.setEntryName(key);
- settlement.setMoney(money);
- settlement.setStatus(status);
- settlement.setRemarks(remarks);
- settlement.setReason(reason);
- list.add(settlement);
- status="1";
- reason = BashInfo.JS_REASON;
- }
- return list;
- }
- }
|