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 settlementList = getSettlement(file,id); for (int i = 0; i < settlementList.size(); i++) { settlementMapper.sava(settlementList.get(i)); } }catch (Exception c){ c.printStackTrace(); } } /* 查找结算工程表 */ public List selectSettlementService(String id){ return settlementMapper.selectSettlement(id); } /* 获取结算数据 */ public List 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 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 getCompletionWorks(ImportExcel importExcel){ Map map = new LinkedHashMap(); 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 getTotality(Map builtMap,Double builtTotal,Double[] divisiontotal,Double wordtotal,Double otherTotal,Double feescount,String id){ List list = new ArrayList(); 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 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; } }