|
@@ -31,9 +31,7 @@ import java.text.DecimalFormat;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
|
-/**
|
|
|
- * 架空线路
|
|
|
- */
|
|
|
+
|
|
|
@Controller
|
|
|
@RequestMapping(value = "${adminPath}/jkxl")
|
|
|
public class OverheadLineController extends BaseController {
|
|
@@ -49,7 +47,9 @@ public class OverheadLineController extends BaseController {
|
|
|
private ProjectService projectService;
|
|
|
|
|
|
|
|
|
-
|
|
|
+ /**
|
|
|
+ *数据展示
|
|
|
+ */
|
|
|
@RequestMapping("/list")
|
|
|
public String list(HttpServletRequest request,Model model){
|
|
|
String id = request.getParameter("id");
|
|
@@ -74,6 +74,7 @@ public class OverheadLineController extends BaseController {
|
|
|
List<JkxlAdjustFee> list2 = feeAdjustService.getTzFee(jkxlAdjustFee);
|
|
|
//数据校验展示
|
|
|
List<Settlement> list3 = settlementService.selectSettlementService(id,type);
|
|
|
+ //差额计算
|
|
|
List<Settlement> list4 = disposeData(list,list3,list2);
|
|
|
HashMap map = new HashMap();
|
|
|
map.put("list1",list1);
|
|
@@ -594,9 +595,11 @@ public class OverheadLineController extends BaseController {
|
|
|
double tzFee = Double.valueOf(ddtzData.getFee());
|
|
|
String wbsCode = ddtzData.getWbsCode();
|
|
|
double totalFee = overheadLineService.getDate(id,wbsCode).getTotalFee();
|
|
|
+ //增加
|
|
|
if(state.equals("1")){
|
|
|
totalFee = totalFee+tzFee;
|
|
|
}
|
|
|
+ //减少
|
|
|
if(state.equals("2")){
|
|
|
totalFee = totalFee-tzFee;
|
|
|
}
|
|
@@ -604,6 +607,7 @@ public class OverheadLineController extends BaseController {
|
|
|
jkxlDetailFee.setId(id);
|
|
|
jkxlDetailFee.setWbsCode(wbsCode);
|
|
|
jkxlDetailFee.setTotalFee(totalFee);
|
|
|
+ //更新明细表费用
|
|
|
overheadLineService.updataDate(jkxlDetailFee);
|
|
|
}
|
|
|
//更新未识别费用表
|
|
@@ -639,6 +643,7 @@ public class OverheadLineController extends BaseController {
|
|
|
String wbsCode = ddtzData.getWbsCode();
|
|
|
JkxlDetailFee jkxlDetailFee1 = overheadLineService.getDate(id,wbsCode);
|
|
|
List<JkxlDetailFee> list1 = new ArrayList<>();
|
|
|
+ //递归获取需要更新的数据存入集合
|
|
|
JkxlDetailFee jkxlDetailFee2 = getParent(jkxlDetailFee1,list,list1);
|
|
|
list1.add(jkxlDetailFee1);
|
|
|
for(JkxlDetailFee jkxlDetailFee3 : list1) {
|
|
@@ -656,6 +661,7 @@ public class OverheadLineController extends BaseController {
|
|
|
// jkxlDetailFee.setId(id);
|
|
|
// jkxlDetailFee.setWbsCode(wbsCode);
|
|
|
jkxlDetailFee3.setTotalFee(totalFee);
|
|
|
+ //更新明细表费用
|
|
|
overheadLineService.updataDate(jkxlDetailFee3);
|
|
|
}
|
|
|
|
|
@@ -673,6 +679,7 @@ public class OverheadLineController extends BaseController {
|
|
|
return "redirect:/a/jkxl/list?id="+id+"&type="+itemType;
|
|
|
}
|
|
|
|
|
|
+ //递归获取节点
|
|
|
private JkxlDetailFee getParent(JkxlDetailFee jkxlDetailFee,List<JkxlDetailFee> list,List<JkxlDetailFee> list1){
|
|
|
if(jkxlDetailFee.getParentNode().equals("-1")){
|
|
|
return jkxlDetailFee;
|
|
@@ -696,10 +703,10 @@ public class OverheadLineController extends BaseController {
|
|
|
*导出
|
|
|
*/
|
|
|
@RequestMapping("/export")
|
|
|
- public String export(HttpServletRequest request, HttpServletResponse response,Model model,RedirectAttributes redirectAttributes) throws IOException {
|
|
|
+ public String export(HttpServletRequest request, HttpServletResponse response,Model model,RedirectAttributes redirectAttributes) {
|
|
|
String id = request.getParameter("id");
|
|
|
String type = request.getParameter("type");
|
|
|
-// try{
|
|
|
+ try{
|
|
|
WbsItem wbsItem = itemService.get(id);
|
|
|
String file = wbsItem.getItemName();
|
|
|
String fileName = file+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
|
|
@@ -709,10 +716,10 @@ public class OverheadLineController extends BaseController {
|
|
|
}
|
|
|
//导出
|
|
|
new ExportExcel(null, JkxlDetailFee.class).setDataList(list).write(response, fileName).dispose();
|
|
|
-// return null;
|
|
|
-// }catch (Exception e){
|
|
|
-// addMessage(redirectAttributes, "导出失败");
|
|
|
-// }
|
|
|
+ return null;
|
|
|
+ }catch (Exception e){
|
|
|
+ addMessage(redirectAttributes, "导出失败");
|
|
|
+ }
|
|
|
addMessage(redirectAttributes, "导出成功");
|
|
|
return "redirect:/a/jkxl/list?id="+id+"&type="+type;
|
|
|
}
|
|
@@ -743,6 +750,7 @@ public class OverheadLineController extends BaseController {
|
|
|
if(type.equals(BashInfo.PROJECT_BDZ)){
|
|
|
double[][] zFees = new double[14][2];
|
|
|
for(JkxlDetailFee jkxlDetailFee : list){
|
|
|
+ //建筑部分求和
|
|
|
if(jkxlDetailFee.getWbsCode().equals("21000000")){
|
|
|
zFees[0][0] = jkxlDetailFee.getOriginalTotalCost()!=null? jkxlDetailFee.getOriginalTotalCost():0.00;
|
|
|
zFees[1][0] = jkxlDetailFee.getZjgcFee()!=null? jkxlDetailFee.getZjgcFee():0.00;
|
|
@@ -760,6 +768,7 @@ public class OverheadLineController extends BaseController {
|
|
|
zFees[12][0] = jkxlDetailFee.getRgFtFee()!=null? jkxlDetailFee.getRgFtFee():0.00;
|
|
|
zFees[13][0] = jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
|
|
|
}
|
|
|
+ //安装部分求和
|
|
|
if(jkxlDetailFee.getWbsCode().equals("23000000")){
|
|
|
zFees[0][1] = jkxlDetailFee.getOriginalTotalCost()!=null? jkxlDetailFee.getOriginalTotalCost():0.00;
|
|
|
zFees[1][1] = jkxlDetailFee.getZjgcFee()!=null? jkxlDetailFee.getZjgcFee():0.00;
|
|
@@ -778,6 +787,7 @@ public class OverheadLineController extends BaseController {
|
|
|
zFees[13][1] = jkxlDetailFee.getTotalFee()!=null? jkxlDetailFee.getTotalFee():0.00;
|
|
|
}
|
|
|
}
|
|
|
+ //合并建筑和安装部分
|
|
|
JkxlDetailFee jkxlDetailFee = new JkxlDetailFee();
|
|
|
jkxlDetailFee.setOriginalTotalCost(new BigDecimal(zFees[0][0]+zFees[0][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
jkxlDetailFee.setZjgcFee(new BigDecimal(zFees[1][0]+zFees[1][1]).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
@@ -812,11 +822,13 @@ public class OverheadLineController extends BaseController {
|
|
|
return list3;
|
|
|
|
|
|
}
|
|
|
+ //架空线路和电缆求和
|
|
|
double total1 = 0.00;
|
|
|
for (JkxlDetailFee jkxlDetailFee :list2){
|
|
|
total1 += jkxlDetailFee.getTotalFee();
|
|
|
}
|
|
|
double [] zFee = new double[14];
|
|
|
+ //各项费用求和
|
|
|
for(JkxlDetailFee jkxlDetailFee :list1){
|
|
|
zFee[0] += jkxlDetailFee.getOriginalTotalCost()!=null? jkxlDetailFee.getOriginalTotalCost():0.00;
|
|
|
zFee[1] += jkxlDetailFee.getZjgcFee()!=null? jkxlDetailFee.getZjgcFee():0.00;
|
|
@@ -875,6 +887,7 @@ public class OverheadLineController extends BaseController {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ //数据核验,各项差额计算
|
|
|
private List<Settlement> disposeData(List<JkxlDetailFee> list, List<Settlement> list3,List<JkxlAdjustFee> list2) {
|
|
|
double originalTotal = 0.00;
|
|
|
double otherCost =0.00;
|
|
@@ -886,6 +899,7 @@ public class OverheadLineController extends BaseController {
|
|
|
double originalCbrCost = 0.00;
|
|
|
double ce1 = 0.00;
|
|
|
double qt = 0.00;
|
|
|
+ //总计算差额
|
|
|
for(JkxlAdjustFee jkxlAdjustFee : list2){
|
|
|
if(jkxlAdjustFee.getType().equals(BashInfo.CE)){
|
|
|
ce1 = jkxlAdjustFee.getFee();
|
|
@@ -907,36 +921,43 @@ public class OverheadLineController extends BaseController {
|
|
|
}
|
|
|
}
|
|
|
for(Settlement settlement : list3){
|
|
|
+ //分部分项工程费差额
|
|
|
if(settlement.getEntryName().contains(BashInfo.JS_FBFX)){
|
|
|
double ce = Math.abs(settlement.getMoney() - originalTotal);
|
|
|
settlement.setTotalFee(originalTotal);
|
|
|
settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
}
|
|
|
+ //发包人材料采购费
|
|
|
if(settlement.getEntryName().contains("发包人") || settlement.getEntryName().contains("招标人")){
|
|
|
double ce = Math.abs(settlement.getMoney() - originalFbrCost);
|
|
|
settlement.setTotalFee(originalFbrCost);
|
|
|
settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
}
|
|
|
+ //措施费差额
|
|
|
if(settlement.getEntryName().contains(BashInfo.JS_CSXM)){
|
|
|
double ce = Math.abs(settlement.getMoney() - measuresFee);
|
|
|
settlement.setTotalFee(measuresFee);
|
|
|
settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
}
|
|
|
+ //规费差额
|
|
|
if(settlement.getEntryName().contains(BashInfo.JS_GF)){
|
|
|
double ce = Math.abs(settlement.getMoney() - fees);
|
|
|
settlement.setTotalFee(fees);
|
|
|
settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
}
|
|
|
+ //税金差额
|
|
|
if(settlement.getEntryName().contains(BashInfo.JS_SJ)){
|
|
|
double ce = Math.abs(settlement.getMoney() - tex);
|
|
|
settlement.setTotalFee(tex);
|
|
|
settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
}
|
|
|
+ //其他费用差额
|
|
|
if(settlement.getEntryName().contains(BashInfo.JS_QTXM)){
|
|
|
double ce = Math.abs(settlement.getMoney() - otherCost-qt);
|
|
|
settlement.setTotalFee(otherCost+qt);
|
|
|
settlement.setDifference(new BigDecimal(ce).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|
|
|
}
|
|
|
+ //结算差额
|
|
|
if(settlement.getEntryName().contains("结算") || settlement.getEntryName().contains("报价") || settlement.getEntryName().contains("下浮后") || settlement.getEntryName().contains("最高")){
|
|
|
settlement.setTotalFee(totalFee);
|
|
|
settlement.setDifference(new BigDecimal(ce1).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
|