JkxlController.java 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677
  1. package com.jeeplus.modules.sg.web;
  2. import com.jeeplus.common.utils.DateUtils;
  3. import com.jeeplus.common.utils.StringUtils;
  4. import com.jeeplus.common.utils.excel.ExportExcel;
  5. import com.jeeplus.common.utils.excel.ImportExcel;
  6. import com.jeeplus.core.web.BaseController;
  7. import com.jeeplus.modules.sg.entity.FtData;
  8. import com.jeeplus.modules.sg.entity.JkxlData;
  9. import com.jeeplus.modules.sg.entity.TzData;
  10. import com.jeeplus.modules.sg.entity.WbsProject;
  11. import com.jeeplus.modules.sg.service.JkxlService;
  12. import com.jeeplus.modules.sg.util.BashInfo;
  13. import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Controller;
  16. import org.springframework.ui.Model;
  17. import org.springframework.web.bind.annotation.RequestMapping;
  18. import org.springframework.web.bind.annotation.ResponseBody;
  19. import org.springframework.web.multipart.MultipartFile;
  20. import org.springframework.web.servlet.mvc.support.RedirectAttributes;
  21. import javax.servlet.http.HttpServletRequest;
  22. import javax.servlet.http.HttpServletResponse;
  23. import java.io.IOException;
  24. import java.math.BigDecimal;
  25. import java.text.SimpleDateFormat;
  26. import java.util.*;
  27. /**
  28. * 架空线路
  29. */
  30. @Controller
  31. @RequestMapping(value = "${adminPath}/jkxl")
  32. public class JkxlController extends BaseController {
  33. @Autowired
  34. private JkxlService jkxlService;
  35. @RequestMapping("/index")
  36. public String toImport(){
  37. return "modules/sg/free/indexProject";
  38. }
  39. @RequestMapping("/import")
  40. public String importFile(MultipartFile file, RedirectAttributes redirectAttributes, HttpServletRequest request, Model model){
  41. double sl = Double.valueOf(request.getParameter("jxsl"));
  42. String projectName = request.getParameter("name");
  43. String id = getId();
  44. try {
  45. double[] rate = getRate();
  46. WbsProject wbsProject = new WbsProject();
  47. wbsProject.setId(id);
  48. wbsProject.setName(projectName);
  49. wbsProject.setCreateDate(new Date());
  50. jkxlService.saveProject(wbsProject);
  51. List<JkxlData> list = getData(file,rate,id,sl);
  52. for(JkxlData jkxlData : list){
  53. jkxlService.save(jkxlData);
  54. }
  55. double[] tzfee = getTzFee(file);
  56. jkxlService.saveTzFee(tzfee,id);
  57. } catch (Exception e){
  58. addMessage(redirectAttributes, "导入失败");
  59. }
  60. addMessage(redirectAttributes, "导入成功");
  61. return "redirect:/a/jkxl/list?id="+id;
  62. }
  63. @RequestMapping("/gettz")
  64. @ResponseBody
  65. public List<JkxlData> getTz(TzData tzData){
  66. String id = tzData.getId();
  67. List<JkxlData> list = jkxlService.getList(id);
  68. List<JkxlData> list1 = new ArrayList<>();
  69. for(JkxlData jkxlData: list){
  70. if(jkxlData.getOriginalTotalCost() != null){
  71. list1.add(jkxlData);
  72. }
  73. }
  74. return list1;
  75. }
  76. @RequestMapping("/fttz")
  77. public String reList(FtData ftData, Model model,RedirectAttributes redirectAttributes){
  78. String id = ftData.getId();
  79. String code = ftData.getCode();
  80. String state = ftData.getState();
  81. String type = ftData.getType();
  82. double fee = ftData.getFee();
  83. double total = 0.00;
  84. try {
  85. List<JkxlData> jkxl = jkxlService.getList(id);
  86. List<JkxlData> jkxlDatas = new ArrayList<>();
  87. for(JkxlData jkxlData: jkxl){
  88. if(jkxlData.getOriginalTotalCost() != null){
  89. jkxlDatas.add(jkxlData);
  90. }
  91. }
  92. if(code.equals("1")){
  93. for(JkxlData jkxlData: jkxlDatas) {
  94. total += jkxlData.getRgCost();
  95. }
  96. for(JkxlData jkxlData1: jkxlDatas){
  97. JkxlData jkxlData = new JkxlData();
  98. jkxlData.setId(id);
  99. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  100. double rgFee = jkxlData1.getRgCost();
  101. double totalFee = jkxlData1.getTotalFee();
  102. double ftFee = rgFee/total*fee;
  103. jkxlData.setRgFtFee(ftFee);
  104. if(state.equals("1")){
  105. double zFee = totalFee+ftFee;
  106. jkxlData.setTotalFee(zFee);
  107. }else {
  108. double zFee = totalFee-ftFee;
  109. jkxlData.setTotalFee(zFee);
  110. }
  111. jkxlService.updataDate(jkxlData);
  112. }
  113. }
  114. if(code.equals("2")){
  115. for(JkxlData jkxlData: jkxlDatas) {
  116. total += jkxlData.getCbrCost();
  117. }
  118. for(JkxlData jkxlData1: jkxlDatas){
  119. JkxlData jkxlData = new JkxlData();
  120. jkxlData.setId(id);
  121. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  122. double rgFee = jkxlData1.getCbrCost();
  123. double totalFee = jkxlData1.getTotalFee();
  124. double ftFee = rgFee/total*fee;
  125. jkxlData.setCbrFtFee(ftFee);
  126. if(state.equals("1")){
  127. double zFee = totalFee+ftFee;
  128. jkxlData.setTotalFee(zFee);
  129. }else {
  130. double zFee = totalFee-ftFee;
  131. jkxlData.setTotalFee(zFee);
  132. }
  133. jkxlService.updataDate(jkxlData);
  134. }
  135. }
  136. if(code.equals("3")){
  137. for(JkxlData jkxlData: jkxlDatas) {
  138. total += jkxlData.getFbrCost();
  139. }
  140. for(JkxlData jkxlData1: jkxlDatas){
  141. JkxlData jkxlData = new JkxlData();
  142. jkxlData.setId(id);
  143. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  144. double rgFee = jkxlData1.getFbrCost();
  145. double totalFee = jkxlData1.getTotalFee();
  146. double ftFee = rgFee/total*fee;
  147. jkxlData.setFbrFtFee(ftFee);
  148. if(state.equals("1")){
  149. double zFee = totalFee+ftFee;
  150. jkxlData.setTotalFee(zFee);
  151. }else {
  152. double zFee = totalFee-ftFee;
  153. jkxlData.setTotalFee(zFee);
  154. }
  155. jkxlService.updataDate(jkxlData);
  156. }
  157. }
  158. if(code.equals("4")){
  159. for(JkxlData jkxlData: jkxlDatas) {
  160. total += jkxlData.getJxCost();
  161. }
  162. for(JkxlData jkxlData1: jkxlDatas){
  163. JkxlData jkxlData = new JkxlData();
  164. jkxlData.setId(id);
  165. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  166. double rgFee = jkxlData1.getJxCost();
  167. double totalFee = jkxlData1.getTotalFee();
  168. double ftFee = rgFee/total*fee;
  169. jkxlData.setJxFtFee(ftFee);
  170. if(state.equals("1")){
  171. double zFee = totalFee+ftFee;
  172. jkxlData.setTotalFee(zFee);
  173. }else {
  174. double zFee = totalFee-ftFee;
  175. jkxlData.setTotalFee(zFee);
  176. }
  177. jkxlService.updataDate(jkxlData);
  178. }
  179. }
  180. if(code.equals("5")){
  181. for(JkxlData jkxlData: jkxlDatas) {
  182. total += jkxlData.getMeasuresFee1();
  183. }
  184. for(JkxlData jkxlData1: jkxlDatas){
  185. JkxlData jkxlData = new JkxlData();
  186. jkxlData.setId(id);
  187. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  188. double rgFee = jkxlData1.getMeasuresFee1();
  189. double totalFee = jkxlData1.getTotalFee();
  190. double ftFee = rgFee/total*fee;
  191. if(state.equals("1")){
  192. double zFee = totalFee+ftFee;
  193. jkxlData.setMeasuresFee1(rgFee+ftFee);
  194. jkxlData.setTotalFee(zFee);
  195. }else {
  196. double zFee = totalFee-ftFee;
  197. jkxlData.setMeasuresFee1(rgFee-ftFee);
  198. jkxlData.setTotalFee(zFee);
  199. }
  200. jkxlService.updataDate(jkxlData);
  201. }
  202. }
  203. if(code.equals("6")){
  204. for(JkxlData jkxlData: jkxlDatas) {
  205. total += jkxlData.getMeasuresFee2();
  206. }
  207. for(JkxlData jkxlData1: jkxlDatas){
  208. JkxlData jkxlData = new JkxlData();
  209. jkxlData.setId(id);
  210. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  211. double rgFee = jkxlData1.getMeasuresFee2();
  212. double totalFee = jkxlData1.getTotalFee();
  213. double ftFee = rgFee/total*fee;
  214. if(state.equals("1")){
  215. double zFee = totalFee+ftFee;
  216. jkxlData.setMeasuresFee1(rgFee+ftFee);
  217. jkxlData.setTotalFee(zFee);
  218. }else {
  219. double zFee = totalFee-ftFee;
  220. jkxlData.setMeasuresFee1(rgFee-ftFee);
  221. jkxlData.setTotalFee(zFee);
  222. }
  223. jkxlService.updataDate(jkxlData);
  224. }
  225. }
  226. if(code.equals("7")){
  227. for(JkxlData jkxlData: jkxlDatas) {
  228. total += jkxlData.getMeasuresFee3();
  229. }
  230. for(JkxlData jkxlData1: jkxlDatas){
  231. JkxlData jkxlData = new JkxlData();
  232. jkxlData.setId(id);
  233. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  234. double rgFee = jkxlData1.getMeasuresFee3();
  235. double totalFee = jkxlData1.getTotalFee();
  236. double ftFee = rgFee/total*fee;
  237. if(state.equals("1")){
  238. double zFee = totalFee+ftFee;
  239. jkxlData.setMeasuresFee1(rgFee+ftFee);
  240. jkxlData.setTotalFee(zFee);
  241. }else {
  242. double zFee = totalFee-ftFee;
  243. jkxlData.setMeasuresFee1(rgFee-ftFee);
  244. jkxlData.setTotalFee(zFee);
  245. }
  246. jkxlService.updataDate(jkxlData);
  247. }
  248. }
  249. if(code.equals("8")){
  250. for(JkxlData jkxlData: jkxlDatas) {
  251. total += jkxlData.getOtherCost();
  252. }
  253. for(JkxlData jkxlData1: jkxlDatas){
  254. JkxlData jkxlData = new JkxlData();
  255. jkxlData.setId(id);
  256. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  257. double rgFee = jkxlData1.getOtherCost();
  258. double totalFee = jkxlData1.getTotalFee();
  259. double ftFee = rgFee/total*fee;
  260. if(state.equals("1")){
  261. double zFee = totalFee+ftFee;
  262. jkxlData.setMeasuresFee1(rgFee+ftFee);
  263. jkxlData.setTotalFee(zFee);
  264. }else {
  265. double zFee = totalFee-ftFee;
  266. jkxlData.setMeasuresFee1(rgFee-ftFee);
  267. jkxlData.setTotalFee(zFee);
  268. }
  269. jkxlService.updataDate(jkxlData);
  270. }
  271. }
  272. if(code.equals("9")){
  273. for(JkxlData jkxlData: jkxlDatas) {
  274. total += jkxlData.getFees();
  275. }
  276. for(JkxlData jkxlData1: jkxlDatas){
  277. JkxlData jkxlData = new JkxlData();
  278. jkxlData.setId(id);
  279. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  280. double rgFee = jkxlData1.getFees();
  281. double totalFee = jkxlData1.getTotalFee();
  282. double ftFee = rgFee/total*fee;
  283. if(state.equals("1")){
  284. double zFee = totalFee+ftFee;
  285. jkxlData.setMeasuresFee1(rgFee+ftFee);
  286. jkxlData.setTotalFee(zFee);
  287. }else {
  288. double zFee = totalFee-ftFee;
  289. jkxlData.setMeasuresFee1(rgFee-ftFee);
  290. jkxlData.setTotalFee(zFee);
  291. }
  292. jkxlService.updataDate(jkxlData);
  293. }
  294. }
  295. if(code.equals("10")){
  296. for(JkxlData jkxlData: jkxlDatas) {
  297. total += jkxlData.getTex();
  298. }
  299. for(JkxlData jkxlData1: jkxlDatas){
  300. JkxlData jkxlData = new JkxlData();
  301. jkxlData.setId(id);
  302. jkxlData.setWbsCode(jkxlData1.getWbsCode());
  303. double rgFee = jkxlData1.getTex();
  304. double totalFee = jkxlData1.getTotalFee();
  305. double ftFee = rgFee/total*fee;
  306. if(state.equals("1")){
  307. double zFee = totalFee+ftFee;
  308. jkxlData.setMeasuresFee1(rgFee+ftFee);
  309. jkxlData.setTotalFee(zFee);
  310. }else {
  311. double zFee = totalFee-ftFee;
  312. jkxlData.setMeasuresFee1(rgFee-ftFee);
  313. jkxlData.setTotalFee(zFee);
  314. }
  315. jkxlService.updataDate(jkxlData);
  316. }
  317. }
  318. TzData tzData = new TzData();
  319. tzData.setType(type);
  320. tzData.setId(id);
  321. jkxlService.updateFee(tzData);
  322. } catch (Exception e){
  323. addMessage(redirectAttributes, "调整失败");
  324. }
  325. addMessage(redirectAttributes, "调整成功");
  326. return "redirect:/a/jkxl/list?id="+id;
  327. }
  328. @RequestMapping("/ddtz")
  329. public String ddtz(TzData tzData,Model model,RedirectAttributes redirectAttributes){
  330. String id = tzData.getId();
  331. String type = tzData.getType();
  332. double[] fees = tzData.getFees();
  333. try {
  334. }catch (Exception e){
  335. addMessage(redirectAttributes, "调整失败");
  336. }
  337. addMessage(redirectAttributes, "调整成功");
  338. return "redirect:/a/jkxl/list?id="+id;
  339. }
  340. @RequestMapping("/list")
  341. public String list(HttpServletRequest request,Model model){
  342. String id = request.getParameter("id");
  343. JkxlData jkxlData = new JkxlData();
  344. TzData tzData = new TzData();
  345. jkxlData.setId(id);
  346. tzData.setId(id);
  347. List<JkxlData> list1 = new ArrayList<>();
  348. list1.add(jkxlData);
  349. List<JkxlData> list = jkxlService.getList(id);
  350. List<TzData> list2 = jkxlService.getTzFee(tzData);
  351. HashMap map = new HashMap();
  352. map.put("list1",list1);
  353. map.put("list",list);
  354. map.put("list2",list2);
  355. model.addAttribute("map",map);
  356. return "modules/sg/free/wbslist";
  357. }
  358. @RequestMapping("/export")
  359. public String export(HttpServletRequest request, HttpServletResponse response,Model model,RedirectAttributes redirectAttributes) {
  360. String id = request.getParameter("id");
  361. try{
  362. String fileName = "架空线路"+ DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
  363. List<JkxlData> list = jkxlService.findList(id);
  364. new ExportExcel(null,JkxlData.class).setDataList(list).write(response, fileName).dispose();
  365. return null;
  366. }catch (Exception e){
  367. addMessage(redirectAttributes, "导出失败");
  368. }
  369. addMessage(redirectAttributes, "导出成功");
  370. return "redirect:/a/jkxl/list?id="+id;
  371. }
  372. public List<JkxlData> getData(MultipartFile file,double[] rate,String id,double sl) throws IOException, InvalidFormatException {
  373. ImportExcel importExcel = new ImportExcel(file,1,BashInfo.SHEET_FBFXJJ); //分部分项工程量清单计价表
  374. ImportExcel csqd = new ImportExcel(file,1,BashInfo.SHEET_CSB); // 措施项目清单计价表(一)
  375. ImportExcel gf = new ImportExcel(file,1,BashInfo.SHEET_GFQD); //规费项目清单计价表
  376. ImportExcel qt = new ImportExcel(file,1,BashInfo.SHEET_QTFY); //其他项目清单计价表
  377. ImportExcel total = new ImportExcel(file,1,BashInfo.SHEET_HZB ); //工程项目竣工结算汇总表
  378. ImportExcel gzhz = new ImportExcel(file,1,BashInfo.SHEET_GCHZ ); //架空线路工程费用汇总表
  379. double[] csRate = getCsRate(csqd);
  380. double[] gfRate = getGfRate(gf);
  381. double[] qtFees = getQtFees(qt);
  382. double[] wsbFees = getFees(total);
  383. int[] zjgcFee = getZjgcFee(gzhz);
  384. double totalFee = 0.00;
  385. List<JkxlData> list = new ArrayList<>();
  386. int lastRow = importExcel.getLastDataRowNum();
  387. int[] row = new int[6];
  388. for(int i=0;i<lastRow;i++){
  389. String type = importExcel.getValue(i+1,2);
  390. if(type.equals(BashInfo.PROJECTNAME)){
  391. totalFee = importExcel.getDouble(i+1,12);
  392. continue;
  393. }
  394. if(type.equals(BashInfo.JCGC)){
  395. row[0] = i+1;
  396. continue;
  397. }
  398. if(type.equals(BashInfo.GTGC)){
  399. row[1] = i+1;
  400. continue;
  401. }
  402. if(type.equals(BashInfo.JDGC)){
  403. row[2] = i+1;
  404. continue;
  405. }
  406. if(type.equals(BashInfo.JXGC)){
  407. row[3] = i+1;
  408. continue;
  409. }
  410. if(type.equals(BashInfo.FJAZGC)){
  411. row[4] = i+1;
  412. continue;
  413. }
  414. if(type.equals(BashInfo.FZGC)){
  415. row[5] = i+1;
  416. break;
  417. }
  418. }
  419. for(int i=0;i<6;i++){
  420. JkxlData jkxlData = new JkxlData();
  421. double originalTotalCost = importExcel.getDouble(row[i],12); //原合计
  422. double otherRate = originalTotalCost/totalFee; //其他费用分摊比例
  423. double orRate = new BigDecimal(otherRate).setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue(); //四舍五入
  424. double btc = wsbFees[0]*orRate; //补调差额
  425. double jcl = wsbFees[1]*orRate; //减材料费
  426. double otherFee = qtFees[2]*otherRate; //其他费用
  427. double zjgcFees = gzhz.getDouble(zjgcFee[i],3);//直接工程费
  428. double originalRgCost = importExcel.getDouble(row[i],13); //原人工费
  429. double rgCost = originalRgCost/(1+rate[0]); //后人工费
  430. double originalCbrCost = importExcel.getDouble(row[i],14); //原承包人采购
  431. double cbrCost = originalCbrCost/(1+rate[1]); //后承包人采购
  432. double originalFbrCost = importExcel.getDouble(row[i],15); //原发包人采购
  433. double fbrCost = originalFbrCost/(1+sl); //后发包人采购
  434. double originalJxrCost = importExcel.getDouble(row[i],17); //原机械费
  435. double jxCost = originalJxrCost/(1+rate[2]); //后机械费
  436. double measuresFee1 = (zjgcFees-fbrCost*sl)*csRate[0]; //措施费1
  437. // double measuresFee1 = (rgCost+cbrCost+fbrCost+jxCost)*csRate[0]; //措施费1
  438. double measuresFee2 = rgCost*csRate[1]; //措施费2
  439. double fees = rgCost*gfRate[1]*1.12+rgCost*gfRate[0]; //规费
  440. double tax = (originalTotalCost+measuresFee1+measuresFee2+fees+otherFee)*0.09; //税金
  441. double totalfee = originalTotalCost+measuresFee1+measuresFee2+fees+otherFee+tax-fbrCost; //合计
  442. jkxlData.setOriginalTotalCost(originalTotalCost);
  443. jkxlData.setOriginalRate(orRate);
  444. jkxlData.setOriginalRgCost(originalRgCost);
  445. jkxlData.setRgCost(rgCost);
  446. jkxlData.setOriginalCbrCost(originalCbrCost);
  447. jkxlData.setCbrCost(cbrCost);
  448. jkxlData.setOriginalFbrCost(originalFbrCost);
  449. jkxlData.setFbrCost(fbrCost);
  450. jkxlData.setOriginalJxCost(originalJxrCost);
  451. jkxlData.setJxCost(jxCost);
  452. jkxlData.setMeasuresFee1(measuresFee1);
  453. jkxlData.setMeasuresFee2(measuresFee2);
  454. jkxlData.setFees(fees);
  455. jkxlData.setOtherCost(otherFee);
  456. jkxlData.setTex(tax);
  457. jkxlData.setTotalFee(totalfee);
  458. jkxlData.setBzFee(btc);
  459. jkxlData.setJkFee(jcl);
  460. jkxlData.setZjgcFee(zjgcFees);
  461. jkxlData.setWbsCode(BashInfo.ids[i]);
  462. jkxlData.setId(id);
  463. list.add(jkxlData);
  464. }
  465. JkxlData jkxlData1 = new JkxlData();
  466. JkxlData jkxlData2 = new JkxlData();
  467. jkxlData1.setId(id);
  468. jkxlData1.setWbsCode("34120000");
  469. jkxlData1.setTotalFee(qtFees[0]);
  470. jkxlData2.setWbsCode("34220000");
  471. jkxlData2.setTotalFee(qtFees[1]);
  472. jkxlData2.setId(id);
  473. list.add(jkxlData1);
  474. list.add(jkxlData2);
  475. return list;
  476. }
  477. /**
  478. *获取措施费率
  479. */
  480. public double[] getCsRate(ImportExcel importExcel){
  481. int lastRow = importExcel.getLastDataRowNum();
  482. double lsRate = 0.00;
  483. double aqRate = 0.00;
  484. double totalRate = 0.00;
  485. for(int i=2;i<lastRow;i++){
  486. String type = importExcel.getValue(i+1,1);
  487. if(type.equals(BashInfo.CS_LS)){
  488. lsRate = importExcel.getDouble(i+1,3);
  489. }
  490. if(type.equals(BashInfo.CS_AQWM)){
  491. aqRate = importExcel.getDouble(i+1,3);
  492. }
  493. totalRate += importExcel.getDouble(i+1,3);
  494. }
  495. double[] rate = new double[2];
  496. rate[0] = (lsRate+aqRate)/100;
  497. rate[1] = (totalRate-lsRate-aqRate)/100;
  498. return rate;
  499. }
  500. /**
  501. *获取规费率
  502. */
  503. public double[] getGfRate(ImportExcel importExcel) {
  504. int lastRow = importExcel.getLastDataRowNum();
  505. double totalRate = 0.00;
  506. double wxzyRate = 0.00;
  507. for (int i = 2; i < lastRow; i++) {
  508. String type = importExcel.getValue(i + 1, 1);
  509. if (type.equals(BashInfo.GF_WXZY)) {
  510. wxzyRate = importExcel.getDouble(i + 1, 3);
  511. }
  512. if (!importExcel.getValue(i + 1, 2).equals("")) {
  513. totalRate += importExcel.getDouble(i + 1, 3);
  514. }
  515. }
  516. double[] rate = new double[2];
  517. rate[0] = wxzyRate / 100;
  518. rate[1] = (totalRate - wxzyRate) / 100;
  519. return rate;
  520. }
  521. /**
  522. * 获取其他费用
  523. */
  524. public double[] getQtFees(ImportExcel importExcel) {
  525. int lastRow = importExcel.getLastDataRowNum();
  526. double cdFree = 0.00;
  527. double zbFree = 0.00;
  528. double totalFree = 0.00;
  529. for(int i=2;i<lastRow;i++){
  530. String type = importExcel.getValue(i+1,1);
  531. String type1 = importExcel.getValue(i+1,0);
  532. if(type.equals(BashInfo.QT_SGCDZY)){
  533. cdFree = importExcel.getDouble(i+1,2);
  534. }
  535. if(type.equals(BashInfo.QT_ZBDL)){
  536. zbFree = importExcel.getDouble(i+1,2);
  537. }
  538. if(type1.equals(BashInfo.QT_HJ)){
  539. totalFree = importExcel.getDouble(i+1,2);
  540. }
  541. }
  542. double[] rate = new double[3];
  543. rate[0] = cdFree;
  544. rate[1] = zbFree;
  545. rate[2] = totalFree-cdFree-zbFree;
  546. return rate;
  547. }
  548. /**
  549. * 获取调差系数
  550. * @return
  551. */
  552. public double[] getRate(){
  553. double[] rate = new double[3];
  554. rate[0] = jkxlService.getValueByName(BashInfo.RATIO_RGTC).getValue()/100;
  555. rate[1] = jkxlService.getValueByName(BashInfo.RATIO_CLTC).getValue()/100;
  556. rate[2] = jkxlService.getValueByName(BashInfo.RATIO_JXTC).getValue()/100;
  557. return rate;
  558. }
  559. /**
  560. * 获取补增值税税率调整差额和扣减甲供材超供材料费
  561. */
  562. public double[] getFees(ImportExcel importExcel){
  563. int lastRow = importExcel.getLastDataRowNum();
  564. double bzFree = 0.00;
  565. double kcFree = 0.00;
  566. for(int i=0;i<lastRow;i++){
  567. String type = importExcel.getValue(i+1,1);
  568. if(type.equals(BashInfo.BZZSSL)){
  569. bzFree = importExcel.getDouble(i+1,2);
  570. continue;
  571. }
  572. if(type.equals(BashInfo.KJJGCC)){
  573. kcFree = importExcel.getDouble(i+1,2);
  574. break;
  575. }
  576. }
  577. double[] wsb = new double[2];
  578. wsb[0] = bzFree;
  579. wsb[1] = kcFree;
  580. return wsb;
  581. }
  582. /**
  583. *获取直接工程费
  584. */
  585. public int[] getZjgcFee(ImportExcel importExcel) {
  586. int lastRow = importExcel.getLastDataRowNum();
  587. int[] row = new int[6];
  588. for(int i=0;i<lastRow;i++){
  589. String type = importExcel.getValue(i+1,1);
  590. if(type.equals(BashInfo.HZ_JCGC)){
  591. row[0] = i+1;
  592. continue;
  593. }
  594. if(type.equals(BashInfo.HZ_GTGC)){
  595. row[1] = i+1;
  596. continue;
  597. }
  598. if(type.equals(BashInfo.HZ_JDGC)){
  599. row[2] = i+1;
  600. continue;
  601. }
  602. if(type.equals(BashInfo.HZ_JXGC)){
  603. row[3] = i+1;
  604. continue;
  605. }
  606. if(type.equals(BashInfo.HZ_FJAZGC)){
  607. row[4] = i+1;
  608. continue;
  609. }
  610. if(type.equals(BashInfo.HZ_FZ)){
  611. row[5] = i+1;
  612. break;
  613. }
  614. }
  615. return row;
  616. }
  617. public double[] getTzFee(MultipartFile file) throws IOException, InvalidFormatException {
  618. ImportExcel total = new ImportExcel(file,1,BashInfo.SHEET_HZB );
  619. double[] wsb = getFees(total);
  620. return wsb;
  621. }
  622. /**
  623. * 创建项目ID
  624. */
  625. public String getId() {
  626. SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
  627. String newDate=sdf.format(new Date());
  628. String result="";
  629. Random random=new Random();
  630. for(int i=0;i<3;i++){
  631. result+=random.nextInt(10);
  632. }
  633. return newDate+result;
  634. }
  635. }