|
@@ -21,14 +21,10 @@ public class SettlementService {
|
|
|
添加结算工程表
|
|
|
*/
|
|
|
@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 void save(Map<String,Object[]> builtMap, double builtTotal, double[] divisiontotal, double wordtotal, double otherTotal, double feescount, String id){
|
|
|
+ List<Settlement> settlementList = BashInfo.getTotality(builtMap,builtTotal,divisiontotal,wordtotal,otherTotal,feescount,id);
|
|
|
+ for (Settlement settlement:settlementList){
|
|
|
+ settlementMapper.sava(settlement);
|
|
|
}
|
|
|
}
|
|
|
/*
|
|
@@ -37,233 +33,4 @@ public class SettlementService {
|
|
|
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);
|
|
|
- if(key.contains(BashInfo.JS_SJ)){
|
|
|
- key=BashInfo.JS_SJ;
|
|
|
- }
|
|
|
- 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;
|
|
|
- }
|
|
|
}
|