diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java index 6543e8dd0..e72acfd82 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java @@ -844,7 +844,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { } wordDocTableVo.setParams(rowsParams); wordDocTableVo.setTableIndex(0); - wordDocTableVo.setRowIndex(1); + wordDocTableVo.setRowIndex(2); String templatePath = "contract-word-template/settle.docx"; String filepath = fmUploadDir; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java index 9216cc8f8..c2980aab8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java @@ -12,8 +12,6 @@ import com.iformall.service.ExcelService; import com.iformall.service.WxBillSettleService; import com.iformall.service.WxFlowService; import com.iformall.utils.DateUtils; -import org.apache.commons.collections.CollectionUtils; -import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/mallinkService/src/main/java/com/iformall/utils/WordUtil.java b/mallinkService/src/main/java/com/iformall/utils/WordUtil.java index 6d5b447b3..e37f45469 100644 --- a/mallinkService/src/main/java/com/iformall/utils/WordUtil.java +++ b/mallinkService/src/main/java/com/iformall/utils/WordUtil.java @@ -3,14 +3,10 @@ package com.iformall.utils; import cn.afterturn.easypoi.word.WordExportUtil; import com.iformall.domain.vo.WordDocTableVo; import org.apache.commons.io.FileUtils; -import org.apache.commons.lang3.StringUtils; import org.apache.poi.xwpf.usermodel.*; -import org.openxmlformats.schemas.wordprocessingml.x2006.main.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; @@ -99,59 +95,54 @@ public class WordUtil { public static void insertValueToTable(XWPFDocument xwpfDocument, WordDocTableVo wordDocTableVo) throws Exception { List tableList = xwpfDocument.getTables(); XWPFTable table = tableList.get(wordDocTableVo.getTableIndex()); - List rows = table.getRows(); - int rowIndex = wordDocTableVo.getRowIndex(); - XWPFTableRow tmpRow = rows.get(rowIndex); + addOrRemoveRow(table,wordDocTableVo.getParams().size(),wordDocTableVo.getRowIndex()); + int row = wordDocTableVo.getRowIndex(); for (List stringList : wordDocTableVo.getParams()) { - table.addRow(tmpRow,rowIndex); - rowIndex++; - //替换新行内容 - XWPFTableRow tableRow = rows.get(rowIndex); + row++; for (int i = 0; i < stringList.size(); i++) { - tableRow.getTableCells().get(i).setText(stringList.get(i)); + table.getRow(row).getCell(i).setText(stringList.get(i)); } } - tmpRow.getTableCells().get(0).setText("aaaa"); - -// //模板的那一行 -// XWPFTableRow tmpRow = rows.get(2); -// List tmpCells = null; -// List cells2 = null; -// XWPFTableCell tmpCell = null; -// tmpCells = tmpRow.getTableCells(); -// -// String cellText = null; -// String cellTextKey = null; -// Map totalMap = null; -// for (int i = 0, len = params.size(); i < len; i++) { -// Map map = params.get(i); -// // 创建新的一行 -// XWPFTableRow row = table.createRow(); -// // 获取模板的行高 设置为新一行的行高 -// row.setHeight(tmpRow.getHeight()); -// cells = row.a(); -// for (int k = 0, klen = tmpCells.size(); k < klen; k++) { -// tmpCell = tmpCells.get(k); -// XWPFTableCell cell = cells.get(k); -// cellText = tmpCell.getText(); -// if (StringUtils.isNotBlank(cellText)) { -// //转换为mapkey对应的字段 -// cellTextKey = cellText.replace("$", "").replace("{", "").replace("}", ""); -// if (map.containsKey(cellTextKey)) { -// // 填充内容 并且复制模板行的属性 -// setCellText(tmpCell,cell,map.get(cellTextKey)); -// } -// } -// } -// -// } -// // 删除模版行 -// table.removeRow(2); + table.removeRow(wordDocTableVo.getRowIndex()); } + /* + * @param table 对应表格 + * @param add 增加或删除行数 if add>0 增加行 add<0 删除行 + * @param fromRow 添加开始行位置(fromRow-1是模版行) + */ + public static void addOrRemoveRow(XWPFTable table, int add,int fromRow) { + XWPFTableRow row = table.getRow(fromRow-1); + if(add>0) { + while(add>0) { + copyPro(row,table.insertNewTableRow(fromRow)); + add--; + } + }else { + while(add<0) { + table.removeRow(fromRow-1); + add++; + } + } + } - - + public static void copyPro(XWPFTableRow sourceRow,XWPFTableRow targetRow) { + //复制行属性 + targetRow.getCtRow().setTrPr(sourceRow.getCtRow().getTrPr()); + List cellList = sourceRow.getTableCells(); + if(null==cellList) { + return ; + } + //添加列、复制列以及列中段落属性 + XWPFTableCell targetCell = null; + for(XWPFTableCell sourceCell:cellList) { + targetCell = targetRow.addNewTableCell(); + //列属性 + targetCell.getCTTc().setTcPr(sourceCell.getCTTc().getTcPr()); + //段落属性 + targetCell.getParagraphs().get(0).getCTP().setPPr(sourceCell.getParagraphs().get(0).getCTP().getPPr()); + } + } } \ No newline at end of file diff --git a/mallinkService/src/main/resources/contract-word-template/settle.docx b/mallinkService/src/main/resources/contract-word-template/settle.docx index b5e4b9e32..6739c66a2 100644 Binary files a/mallinkService/src/main/resources/contract-word-template/settle.docx and b/mallinkService/src/main/resources/contract-word-template/settle.docx differ diff --git a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml index 4bbb3b381..3f9189da8 100644 --- a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml @@ -56,24 +56,24 @@ shopInfo,bill.comments,bill.price_detail,updatetime,bill.freeze from ( select id,merchant_id,shop_id,tenant_id,'租金' name,1 bill_type_value,'租金' - bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,'' starttime,'' + bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,starttime, endtime,rent_shop_type,case when shop_info is null then '[]' else shop_info end shop_info,comments,'' price_detail,updatetime,freeze from wx_bill_rent where tenant_id=#{tenantId} and is_preview = 0 union all select id,merchant_id,shop_id,tenant_id,'租赁押金' name,2 bill_type_value,'租赁押金' - bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,'' starttime,'' + bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,starttime, endtime,rent_shop_type,shop_info,NULL comments,'' price_detail,updatetime,freeze from wx_bill_rent_deposit where tenant_id=#{tenantId} union all select id,merchant_id,shop_id,tenant_id,'物业费' name,3 bill_type_value,'物业费' - bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,'' starttime,'' + bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,starttime, endtime,rent_shop_type,case when shop_info is null then '[]' else shop_info end shop_info,comments,'' price_detail,updatetime,freeze from wx_bill_property where tenant_id=#{tenantId} and is_preview = 0 union all select id,merchant_id,shop_id,tenant_id,'物业押金' name,4 bill_type_value,'物业押金' - bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,'' starttime,'' + bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,starttime, endtime,rent_shop_type,shop_info,NULL comments,'' price_detail,updatetime,freeze from wx_bill_property_deposit where tenant_id=#{tenantId} union all @@ -85,13 +85,13 @@ from wx_bill_daily where tenant_id=#{tenantId} union all select id,merchant_id,shop_id,tenant_id,name,7 bill_type_value,concat('其他费用-',name) as bill_type,0 as - need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,'' starttime,'' endtime, + need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,starttime,endtime, rent_shop_type,'[]' shop_info,comments,'' price_detail,updatetime,freeze from wx_bill_other where tenant_id=#{tenantId} union all select id,merchant_id,shop_id,tenant_id,comments as name,8 bill_type_value,concat('其他押金-',comments) as bill_type,0 as - need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,'' starttime,'' endtime, + need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,starttime,endtime, rent_shop_type,'[]' shop_info,comments,'' price_detail,updatetime,freeze from wx_bill_other_deposit where tenant_id=#{tenantId} ) bill