123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 |
- package com.jeeplus.modules.sg.overheadline.service;
- import com.jeeplus.common.utils.excel.ImportExcel;
- 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 (int i = 0; i < settlementList.size(); i++) {
- settlementMapper.sava(settlementList.get(i));
- }
- }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 = getBuiltStilts(built);
- Double[] divisiontotal = getDivisionOf(division);
- Double wordtotal = getWording(wordFirst);
- Double otherTotal = getOtherProject(otherProject);
- Double feescount = getFeesTotal(feesProject);
- return getTotality(builtMap,builtTotal,divisiontotal,wordtotal,otherTotal,feescount,id);
- }
- /*
- 获取工程竣工数据
- */
- public Map<String,Object[]> getCompletionWorks(ImportExcel importExcel){
- Map<String,Object[]> map = new LinkedHashMap<String, Object[]>();
- Integer 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 Double getBuiltStilts(ImportExcel importExcel){
- Double value = 0.0;
- String type="";
- Integer lastDataRowNum = importExcel.getLastDataRowNum();
- for (int i = 2; i < lastDataRowNum ; i++) {
- type = importExcel.getValue(i+1,0);
- if (type.equals(BashInfo.QT_HJ)){
- value = importExcel.getDouble(i+1,2);
- break;
- }
- }
- return value;
- }
- /*
- 获取措施费合计
- */
- public Double getWording(ImportExcel importExcel){
- Double value = 0.0;
- String type = "";
- Integer lastDataRowNum = importExcel.getLastDataRowNum();
- for (int i = 2; i <lastDataRowNum ; i++) {
- type = importExcel.getValue(i+1,0);
- if (type.equals(BashInfo.QT_HJ)){
- value = importExcel.getDouble(i+1,4);
- break;
- }
- }
- return value;
- }
- /*
- 获取其他项目费
- */
- public Double getOtherProject(ImportExcel importExcel){
- Double value = 0.0;
- String type= "";
- Integer lastDataRowNum = importExcel.getLastDataRowNum();
- for (int i = 0; i <lastDataRowNum ; i++) {
- type = importExcel.getValue(i+1,0);
- if (type.equals(BashInfo.QT_HJ)){
- value = importExcel.getDouble(i+1,2);
- break;
- }
- }
- return value;
- }
- /*
- 获取规费合计
- */
- public Double getFeesTotal(ImportExcel importExcel){
- Double value = 0.0;
- String type = "";
- Integer lastDataRowNum = importExcel.getLastDataRowNum();
- for (int i = 2; i < lastDataRowNum; i++) {
- type = importExcel.getValue(i+1,0);
- if (type.equals(BashInfo.QT_HJ)){
- value = importExcel.getDouble(i+1,4);
- break;
- }
- }
- return value;
- }
- /*
- 获取分工清单
- */
- public Double[] getDivisionOf(ImportExcel importExcel){
- Double count = 0.0;
- Double fpermoney = 0.0;
- Double cpermoney = 0.0;
- String type="";
- Integer lastDataRowNum = importExcel.getLastDataRowNum();
- for (int i = 0; i < lastDataRowNum; i++) {
- type = importExcel.getValue(i+1,2);
- if (type.equals(BashInfo.PROJECTNAME)) {
- count = importExcel.getDouble(i + 1, 12);
- cpermoney = importExcel.getDouble(i + 1, 14);
- fpermoney = importExcel.getDouble(i + 1, 15);
- break;
- }
- }
- Double[] val = new Double[3];
- val[0] = count;
- val[1] = cpermoney;
- val[2] = fpermoney;
- return val;
- }
- /*
- 结算汇总
- */
- 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.JS_REASON;
- }
- 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;
- }
- }
|