Просмотр исходного кода

Merge branch 'develop' of https://git.youlane.cn/server/formallProject into develop

release_toaliyun_real
Burce 6 лет назад
Родитель
Сommit
c603a2493a
20 измененных файлов: 288 добавлений и 240 удалений
  1. +1
    -0
      .gitignore
  2. +2
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillDailyController.java
  3. +4
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillSettleController.java
  4. +1
    -0
      mallinkAdmin/src/main/resources/db/migration/V201909041150__G_BILL_DAILY.sql
  5. +1
    -0
      mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java
  6. +4
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java
  7. +10
    -4
      mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java
  8. +19
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WordDocTableVo.java
  9. +38
    -0
      mallinkService/src/main/java/com/iformall/enums/EnumBillDailyBuildWay.java
  10. +43
    -1
      mallinkService/src/main/java/com/iformall/enums/EnumSubBusiness.java
  11. +26
    -13
      mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java
  12. +1
    -5
      mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java
  13. +12
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java
  14. +40
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  15. +1
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java
  16. +54
    -197
      mallinkService/src/main/java/com/iformall/utils/WordUtil.java
  17. Двоичные данные
      mallinkService/src/main/resources/contract-word-template/settle.docx
  18. +7
    -2
      mallinkService/src/main/resources/mapper/WxBillDailyMapper.xml
  19. +23
    -10
      mallinkService/src/main/resources/mapper/WxBillSettleMapper.xml
  20. +1
    -1
      mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml

+ 1
- 0
.gitignore Просмотреть файл

@@ -1,5 +1,6 @@
.idea/**
*/target/**
logs/**
*/logs/**
logPath_IS_UNDEFINED/**
uploads/**


+ 2
- 0
mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillDailyController.java Просмотреть файл

@@ -10,6 +10,7 @@ import com.iformall.controller.base.BaseController;
import com.iformall.controller.mem.BillDailyAsyncTask;
import com.iformall.domain.po.MallUserInfo;
import com.iformall.domain.po.WxBillDaily;
import com.iformall.enums.EnumBillDailyBuildWay;
import com.iformall.exception.MallinkException;
import com.iformall.service.WxBillDailyService;
import com.iformall.utils.Constant;
@@ -75,6 +76,7 @@ public class WxBillDailyController extends BaseController {
MallUserInfo user = getUser();
wxBillDaily.setTenantId(user.getTenantId());
wxBillDaily.setUserId(user.getId());
wxBillDaily.setBuildWay(EnumBillDailyBuildWay.HAND.getCode());
return wxBillDailyService.saveOrUpdate(wxBillDaily, user);
}



+ 4
- 1
mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillSettleController.java Просмотреть файл

@@ -8,6 +8,7 @@ import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.BaseEntity;
import com.iformall.domain.po.WxBillSettle;
import com.iformall.domain.po.WxBillSettleRecord;
import com.iformall.service.WxBillAllService;
import com.iformall.service.WxBillSettleRecordService;
import com.iformall.service.WxBillSettleService;
import io.swagger.annotations.ApiImplicitParam;
@@ -32,6 +33,8 @@ public class WxBillSettleController extends BaseController {
private WxBillSettleService wxBillSettleService;
@Autowired
private WxBillSettleRecordService wxBillSettleRecordService;
@Autowired
private WxBillAllService wxBillAllService;

@GetMapping("list")
@ApiOperation("账单管理-结算对冲列表")
@@ -88,6 +91,6 @@ public class WxBillSettleController extends BaseController {
@SystemControllerLog(description = "账单管理-结算单-下载")
public void downloadSettle(@ModelAttribute WxBillSettle wxBillSettle, HttpServletRequest request, HttpServletResponse response) {
wxBillSettle.setTenantId(getTenantId());
wxBillSettleService.exportBill(request, response, wxBillSettle);
wxBillAllService.exportSettleBill(wxBillSettle,request,response);
}
}

+ 1
- 0
mallinkAdmin/src/main/resources/db/migration/V201909041150__G_BILL_DAILY.sql Просмотреть файл

@@ -0,0 +1 @@
alter table wx_bill_daily add column build_way tinyint(3) default 1 comment '创建方式1手动2自动3导入';

+ 1
- 0
mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java Просмотреть файл

@@ -133,6 +133,7 @@ public class PowerBillAutoBuildSchedule {
wxBillDaily.setStarttime(startdate);
wxBillDaily.setEndtime(enddate);
wxBillDaily.setPriceDetail(priceDetals.toJSONString());
wxBillDaily.setBuildWay(EnumBillDailyBuildWay.AUTO.getCode());
wxBillDailyService.saveOrUpdate(wxBillDaily, mallUserInfo);

}


+ 4
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java Просмотреть файл

@@ -108,4 +108,8 @@ public class WxBillDaily extends BaseEntity{
private Date endtime;
@io.swagger.annotations.ApiModelProperty(value = "冻结状态,0正常1冻结", name = "freeze")
private Integer freeze;

@io.swagger.annotations.ApiModelProperty(value = "创建方式1手动2自动3导入", name = "buildWay")
private Integer buildWay;

}

+ 10
- 4
mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java Просмотреть файл

@@ -77,14 +77,20 @@ public class WxBillSettle extends BaseEntity {
@io.swagger.annotations.ApiModelProperty(value = "结单记录", name = "settleRecordList")
private List<WxBillSettleRecord> settleRecordList;


@Transient
@io.swagger.annotations.ApiModelProperty(value="开始时间",name="starttime")
private Date startTime;
@io.swagger.annotations.ApiModelProperty(value = "开始时间", name = "starttime")
private Date starttime;
@Transient
@io.swagger.annotations.ApiModelProperty(value="结束时间",name="endtime")
private Date endTime;
@io.swagger.annotations.ApiModelProperty(value = "结束时间", name = "endtime")
private Date endtime;

@Transient
@io.swagger.annotations.ApiModelProperty(value="清算方向 1商场结款 2商户结款",name="settleWay")
private Integer settleWay;

@Transient
@io.swagger.annotations.ApiModelProperty(value="流向 0流入 1流出",name="direction")
private Integer direction;

}

+ 19
- 0
mallinkService/src/main/java/com/iformall/domain/vo/WordDocTableVo.java Просмотреть файл

@@ -0,0 +1,19 @@
package com.iformall.domain.vo;

import lombok.Data;

import java.io.Serializable;
import java.util.List;

@Data
public class WordDocTableVo implements Serializable{
private static final long serialVersionUID = 1L;

private List<List<String>> params;

private int tableIndex = 0;

//替换的行
private int rowIndex = 0;
}

+ 38
- 0
mallinkService/src/main/java/com/iformall/enums/EnumBillDailyBuildWay.java Просмотреть файл

@@ -0,0 +1,38 @@
package com.iformall.enums;


/**
* @author gongbiao
*/

public enum EnumBillDailyBuildWay {

HAND(1, "手动"),
AUTO(2, "自动"),
IMPORT(3, "导入"),;

public static EnumBillDailyBuildWay getEnum(Integer code) {
for (EnumBillDailyBuildWay value : values()) {
if (value.getCode().equals(code)) {
return value;
}
}
return null;
}

private Integer code;
private String message;

EnumBillDailyBuildWay(Integer code, String message) {
this.code = code;
this.message = message;
}

public Integer getCode() {
return code;
}

public String getMessage() {
return message;
}
}

+ 43
- 1
mallinkService/src/main/java/com/iformall/enums/EnumSubBusiness.java Просмотреть файл

@@ -29,7 +29,49 @@ public enum EnumSubBusiness {
SUB_BUSINESS_ID18(18,"东北菜"),
SUB_BUSINESS_ID19(19,"面包店"),
SUB_BUSINESS_ID20(20,"咖啡厅"),
SUB_BUSINESS_ID21(21,"饮品店")
SUB_BUSINESS_ID21(21,"饮品店"),
SUB_BUSINESS_ID22(22,"男装"),
SUB_BUSINESS_ID23(23,"女装"),
SUB_BUSINESS_ID24(24,"童装"),
SUB_BUSINESS_ID25(25,"鞋帽"),
SUB_BUSINESS_ID26(26,"配饰"),
SUB_BUSINESS_ID27(27,"内衣"),
SUB_BUSINESS_ID28(28,"亲子摄影"),
SUB_BUSINESS_ID29(29,"亲子游乐"),
SUB_BUSINESS_ID30(30,"幼儿教育"),
SUB_BUSINESS_ID31(31,"孕产护理"),
SUB_BUSINESS_ID32(32,"童车童床"),
SUB_BUSINESS_ID33(33,"玩具"),
SUB_BUSINESS_ID34(34,"喂养用品"),
SUB_BUSINESS_ID35(35,"面部护肤"),
SUB_BUSINESS_ID36(36,"香水彩妆"),
SUB_BUSINESS_ID37(37,"男士护肤"),
SUB_BUSINESS_ID38(38,"营养保健"),
SUB_BUSINESS_ID39(39,"黄金"),
SUB_BUSINESS_ID40(40,"钻石"),
SUB_BUSINESS_ID41(41,"时尚饰品"),
SUB_BUSINESS_ID42(42,"翡翠玉石"),
SUB_BUSINESS_ID43(43,"钟表"),
SUB_BUSINESS_ID44(44,"KTV"),
SUB_BUSINESS_ID45(45,"轰趴馆"),
SUB_BUSINESS_ID46(46,"DIY手工"),
SUB_BUSINESS_ID47(47,"文化艺术"),
SUB_BUSINESS_ID48(48,"游艺娱乐"),
SUB_BUSINESS_ID49(49,"桌游"),
SUB_BUSINESS_ID50(50,"运动健身"),
SUB_BUSINESS_ID51(51,"婚纱摄影"),
SUB_BUSINESS_ID52(52,"美容美发"),
SUB_BUSINESS_ID53(53,"学习培训"),
SUB_BUSINESS_ID54(54,"家具"),
SUB_BUSINESS_ID55(55,"家饰"),
SUB_BUSINESS_ID56(56,"家纺"),
SUB_BUSINESS_ID57(57,"生活用品"),
SUB_BUSINESS_ID58(58,"厨具"),
SUB_BUSINESS_ID59(59,"家用电器"),
SUB_BUSINESS_ID60(60,"数码产品"),
SUB_BUSINESS_ID61(61,"手机通信"),
SUB_BUSINESS_ID62(62,"电脑办公"),
SUB_BUSINESS_ID63(63,"影音娱乐"),
;

private static Map<Integer,EnumSubBusiness> map


+ 26
- 13
mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java Просмотреть файл

@@ -786,7 +786,7 @@ public class WxBillAllServiceImpl implements WxBillAllService {
String filepath = fmUploadDir;
String filename = UUID.randomUUID() + ".docx";
String exportFileName = "催缴单.docx";
WordUtil.exportWord(templatePath, filepath, filename, exportFileName, result, request, response);
WordUtil.exportWord(templatePath, filepath, filename, exportFileName, result, request, response,null);
}

@Override
@@ -814,31 +814,43 @@ public class WxBillAllServiceImpl implements WxBillAllService {
result.put("payMU", PriceUtil.digitUppercase(payM.doubleValue()));
result.put("bMU", PriceUtil.digitUppercase(bM.doubleValue()));

List<Map<String,String>> rowsParams = new ArrayList<>();
WordDocTableVo wordDocTableVo = new WordDocTableVo();
List<List<String>> rowsParams = new ArrayList<>();
int size = wxBillSettle.getReceiveBillIds().size() > wxBillSettle.getPayBillIds().size()?wxBillSettle.getReceiveBillIds().size():wxBillSettle.getPayBillIds().size();
int count = 1;
for (int i = 0; i < size ; i++) {
WxBillSettleBill bill = wxBillSettle.getReceiveBillIds().get(i);
Map<String,String> map = new HashedMap();
WxBillSettleBill bill = i>wxBillSettle.getReceiveBillIds().size()-1?null:wxBillSettle.getReceiveBillIds().get(i);
List<String> cellList = new ArrayList<>();
cellList.add(count+"");

if(bill != null){
map.put("s1",count+"");
map.put("bn1",bill.getBillName());
map.put("money1",bill.getReceivePay());
cellList.add(bill.getBillName());
cellList.add(bill.getReceivePay());
}else{
cellList.add("");
cellList.add("");
}
WxBillSettleBill payBill = wxBillSettle.getPayBillIds().get(i);
cellList.add(count+"");
WxBillSettleBill payBill = i>wxBillSettle.getPayBillIds().size()-1?null:wxBillSettle.getPayBillIds().get(i);
if(payBill != null){
map.put("bn2",payBill.getBillName());
map.put("money2",payBill.getReceivePay());
cellList.add(payBill.getBillName());
cellList.add(payBill.getReceivePay());
}else{
cellList.add("");
cellList.add("");
}
rowsParams.add(map);
rowsParams.add(cellList);
count++;
}
wordDocTableVo.setParams(rowsParams);
wordDocTableVo.setTableIndex(0);
wordDocTableVo.setRowIndex(1);

String templatePath = "contract-word-template/settle.docx";
String filepath = fmUploadDir;
String filename = UUID.randomUUID() + ".docx";
String exportFileName = "催缴单.docx";
WordUtil.exportWord(templatePath, filepath, filename, exportFileName, result, request, response);
String exportFileName = "结算单.docx";
WordUtil.exportWord(templatePath, filepath, filename, exportFileName, result, request, response,wordDocTableVo);

}

@@ -1157,6 +1169,7 @@ public class WxBillAllServiceImpl implements WxBillAllService {
WxBillRent expiredDayAndStatus = getExpiredDayAndStatus(bill.getReceiveDate(), bill.getPayDate(), receivePay, pay, false);
daily.setExpiredDay(expiredDayAndStatus.getExpiredDay());
daily.setStatus(expiredDayAndStatus.getStatus());
daily.setBuildWay(EnumBillDailyBuildWay.IMPORT.getCode());
wxBillDailyMapper.insertSelective(daily);
if (pay > 0) {
addActionImport(daily.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr());


+ 1
- 5
mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java Просмотреть файл

@@ -60,11 +60,7 @@ public class WxBillSettleServiceImpl implements WxBillSettleService {

@Override
public PageInfo<WxBillSettle> listAsPage(WxBillSettle record, Integer pageIndex, Integer pageSize) {
PageInfo<WxBillSettle> pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxBillSettleMapper.findList(record));
pageInfo.getList().stream().forEach(e->{
e.setBalance(e.getReceiveMoney() - e.getPayMoney());
});
return pageInfo;
return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxBillSettleMapper.findList(record));
}

@Override


+ 12
- 4
mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java Просмотреть файл

@@ -8,10 +8,7 @@ import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.po.*;
import com.iformall.domain.vo.WxOrderGroupMarketing;
import com.iformall.enums.EnumAppType;
import com.iformall.enums.EnumCouponStatus;
import com.iformall.enums.EnumOrderStatus;
import com.iformall.enums.EnumRefundStatus;
import com.iformall.enums.*;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.WxOrderGroupService;
@@ -66,6 +63,9 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService {
@Autowired
RedisLock redisLock;

@Autowired
WxCouponChannelMapper wxCouponChannelMapper;

@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
public void createOrderGroup(WxOrder order, WxCoupon wxCoupon) {
@@ -227,6 +227,14 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService {
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
public ResultData toOrderGroup(WxOrderGroup wxOrderGroup) {
WxOrder orderTemp = wxOrderMapper.selectByPrimaryKey(wxOrderGroup.getOrderId());
if (orderTemp == null) {
return new ResultData(ErrorCode.ORDER_IS_NOT_FIND);
}
WxCouponChannel wxCouponChannel = wxCouponChannelMapper.selectByPrimaryKey(orderTemp.getCouponChannelId());
if (wxCouponChannel.getStatus().equals(EnumCouponChannelStatus.STATUS_TAKE_OFFF.getCode())) {
return new ResultData(ErrorCode.COUPON_CHANNEL_IS_TAKE_OFF);
}
WxOrder wxOrder = new WxOrder();
wxOrder.setTenantId(wxOrderGroup.getTenantId());
wxOrder.setId(wxOrderGroup.getOrderId());


+ 40
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Просмотреть файл

@@ -189,6 +189,30 @@ public class WxOrderServiceImpl implements WxOrderService {
return new ResultData(resultMap);
}

/**
* 拼团数量
*
* @param user
* @param counpon
* @return
*/
private int getUserOrderGroupCount(WxCUser user, WxCoupon counpon) {
// + Order 待支付
try {
WxOrder orderQ = new WxOrder();
orderQ.setTenantId(user.getTenantId());
orderQ.setProductId(counpon.getId());
orderQ.setType(EnumOrderType.COUPON.getCode());
orderQ.setCUserId(user.getId());
orderQ.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING.getCode());
return wxOrderMapper.countList(orderQ);
} catch (Exception e) {
logger.error("购买是否超限-DB, couponId: " + counpon.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
}

}


/**
* 用户购买的订单数量
@@ -418,6 +442,21 @@ public class WxOrderServiceImpl implements WxOrderService {
throw new MallinkException(ErrorCode.ORDER_UNPAID);
}
}
//检查拼团中的数量
try {
count = getUserOrderGroupCount(user, coupon);
} catch (Exception e) {
//解锁
redisLock.unlock(couponIdStr, timeStr);
throw new MallinkException(ErrorCode.DB_FAIL);
}
if (count >= coupon.getUseLimitQuantity()) {
//解锁
redisLock.unlock(couponIdStr, timeStr);
logger.error("此券购买数量已超限, couponId: " + couponIdStr + ", count: " + count);
throw new MallinkException(ErrorCode.ORDER_IS_LIMITED);
}

// 检查用户已购买数量
try {
count = getUserCouponOrderCount(user, coupon);
@@ -1585,8 +1624,8 @@ public class WxOrderServiceImpl implements WxOrderService {
record.setCUserId(user.getId());
record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode());
record.setDetail(bodyStr);
record.setCreateDate(curr);
record.setUpdateDate(curr);
record.setCreateDate(curr);
if (isPress) {
// 初始砍价信息
record.setPressCurrentNum(0);


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java Просмотреть файл

@@ -1612,7 +1612,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {
String filepath = fmUploadDir;
String filename = UUID.randomUUID() + ".docx";
String exportFileName = result.get("merchantName").toString() + "合同.docx";
WordUtil.exportWord(templatePath, filepath, filename, exportFileName, result, request, response);
WordUtil.exportWord(templatePath, filepath, filename, exportFileName, result, request, response,null);
}

@Override


+ 54
- 197
mallinkService/src/main/java/com/iformall/utils/WordUtil.java Просмотреть файл

@@ -1,6 +1,7 @@
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.*;
@@ -8,6 +9,7 @@ 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;
@@ -35,7 +37,7 @@ public class WordUtil {
* @param request HttpServletRequest
* @param response HttpServletResponse
*/
public static void exportWord(String templatePath, String temDir, String fileName, String exportFileName, Map<String, Object> params, HttpServletRequest request, HttpServletResponse response) {
public static void exportWord(String templatePath, String temDir, String fileName, String exportFileName, Map<String, Object> params, HttpServletRequest request, HttpServletResponse response, WordDocTableVo wordDocTableVo) {
Assert.notNull(templatePath, "模板路径不能为空");
Assert.notNull(temDir, "临时文件路径不能为空");
Assert.notNull(exportFileName, "导出文件名不能为空");
@@ -57,6 +59,9 @@ public class WordUtil {


XWPFDocument doc = WordExportUtil.exportWord07(templatePath, params);
if(wordDocTableVo != null)
insertValueToTable(doc,wordDocTableVo);

String tmpPath = temDir + fileName;
FileOutputStream fos = new FileOutputStream(tmpPath);
doc.write(fos);
@@ -84,217 +89,69 @@ public class WordUtil {
} catch (Exception e) {
e.printStackTrace();
}

}

/**
* 循环填充表格内容
* @param xwpfDocument
* @param params
* @param tableIndex
* @throws Exception
*/
private void insertValueToTable(XWPFDocument xwpfDocument, List<Map<String,String>> params, int tableIndex) throws Exception {
public static void insertValueToTable(XWPFDocument xwpfDocument, WordDocTableVo wordDocTableVo) throws Exception {
List<XWPFTable> tableList = xwpfDocument.getTables();
if(tableList.size()<=tableIndex){
throw new Exception("tableIndex对应的表格不存在");
}
XWPFTable table = tableList.get(tableIndex);
XWPFTable table = tableList.get(wordDocTableVo.getTableIndex());
List<XWPFTableRow> rows = table.getRows();
if(rows.size()<2){
throw new Exception("tableIndex对应表格应该为2行");
}
//模板的那一行
XWPFTableRow tmpRow = rows.get(1);
List<XWPFTableCell> tmpCells = null;
List<XWPFTableCell> cells = null;
XWPFTableCell tmpCell = null;
tmpCells = tmpRow.getTableCells();

String cellText = null;
String cellTextKey = null;
Map<String,Object> totalMap = null;
for (int i = 0, len = params.size(); i < len; i++) {
Map<String,String> map = params.get(i);
// 创建新的一行
XWPFTableRow row = table.createRow();
// 获取模板的行高 设置为新一行的行高
row.setHeight(tmpRow.getHeight());
cells = row.getTableCells();
for (int k = 0, klen = cells.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));
}
}
}
int rowIndex = wordDocTableVo.getRowIndex();
XWPFTableRow tmpRow = rows.get(rowIndex);

}
// 删除模版行
table.removeRow(1);
}

/**
* 复制模板行的属性
* @param tmpCell
* @param cell
* @param text
* @throws Exception
*/
private void setCellText(XWPFTableCell tmpCell, XWPFTableCell cell,String text) throws Exception {
CTTc cttc2 = tmpCell.getCTTc();
CTTcPr ctPr2 = cttc2.getTcPr();
CTTc cttc = cell.getCTTc();
CTTcPr ctPr = cttc.addNewTcPr();
if (ctPr2.getTcW() != null) {
ctPr.addNewTcW().setW(ctPr2.getTcW().getW());
}
if (ctPr2.getVAlign() != null) {
ctPr.addNewVAlign().setVal(ctPr2.getVAlign().getVal());
}
if (cttc2.getPList().size() > 0) {
CTP ctp = cttc2.getPList().get(0);
if (ctp.getPPr() != null) {
if (ctp.getPPr().getJc() != null) {
cttc.getPList().get(0).addNewPPr().addNewJc()
.setVal(ctp.getPPr().getJc().getVal());
}
for (List<String> stringList : wordDocTableVo.getParams()) {
table.addRow(tmpRow,rowIndex);
rowIndex++;
//替换新行内容
XWPFTableRow tableRow = rows.get(rowIndex);
for (int i = 0; i < stringList.size(); i++) {
tableRow.getTableCells().get(i).setText(stringList.get(i));
}
}
if (ctPr2.getTcBorders() != null) {
ctPr.setTcBorders(ctPr2.getTcBorders());
}
tmpRow.getTableCells().get(0).setText("aaaa");

// //模板的那一行
// XWPFTableRow tmpRow = rows.get(2);
// List<XWPFTableCell> tmpCells = null;
// List<XWPFTableCell> cells2 = null;
// XWPFTableCell tmpCell = null;
// tmpCells = tmpRow.getTableCells();
//
// String cellText = null;
// String cellTextKey = null;
// Map<String,Object> totalMap = null;
// for (int i = 0, len = params.size(); i < len; i++) {
// Map<String,String> 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);
}

XWPFParagraph tmpP = tmpCell.getParagraphs().get(0);
XWPFParagraph cellP = cell.getParagraphs().get(0);
XWPFRun tmpR = null;
if (tmpP.getRuns() != null && tmpP.getRuns().size() > 0) {
tmpR = tmpP.getRuns().get(0);
}
XWPFRun cellR = cellP.createRun();
cellR.setText(text);
// 复制字体信息
if (tmpR != null) {
if(!cellR.isBold()){
cellR.setBold(tmpR.isBold());
}
cellR.setItalic(tmpR.isItalic());
cellR.setUnderline(tmpR.getUnderline());
cellR.setColor(tmpR.getColor());
cellR.setTextPosition(tmpR.getTextPosition());
if (tmpR.getFontSize() != -1) {
cellR.setFontSize(tmpR.getFontSize());
}
if (tmpR.getFontFamily() != null) {
cellR.setFontFamily(tmpR.getFontFamily());
}
if (tmpR.getCTR() != null) {
if (tmpR.getCTR().isSetRPr()) {
CTRPr tmpRPr = tmpR.getCTR().getRPr();
if (tmpRPr.isSetRFonts()) {
CTFonts tmpFonts = tmpRPr.getRFonts();
CTRPr cellRPr = cellR.getCTR().isSetRPr() ? cellR
.getCTR().getRPr() : cellR.getCTR().addNewRPr();
CTFonts cellFonts = cellRPr.isSetRFonts() ? cellRPr
.getRFonts() : cellRPr.addNewRFonts();
cellFonts.setAscii(tmpFonts.getAscii());
cellFonts.setAsciiTheme(tmpFonts.getAsciiTheme());
cellFonts.setCs(tmpFonts.getCs());
cellFonts.setCstheme(tmpFonts.getCstheme());
cellFonts.setEastAsia(tmpFonts.getEastAsia());
cellFonts.setEastAsiaTheme(tmpFonts.getEastAsiaTheme());
cellFonts.setHAnsi(tmpFonts.getHAnsi());
cellFonts.setHAnsiTheme(tmpFonts.getHAnsiTheme());
}
}
}

}
// 复制段落信息
cellP.setAlignment(tmpP.getAlignment());
cellP.setVerticalAlignment(tmpP.getVerticalAlignment());
cellP.setBorderBetween(tmpP.getBorderBetween());
cellP.setBorderBottom(tmpP.getBorderBottom());
cellP.setBorderLeft(tmpP.getBorderLeft());
cellP.setBorderRight(tmpP.getBorderRight());
cellP.setBorderTop(tmpP.getBorderTop());
cellP.setPageBreak(tmpP.isPageBreak());
if (tmpP.getCTP() != null) {
if (tmpP.getCTP().getPPr() != null) {
CTPPr tmpPPr = tmpP.getCTP().getPPr();
CTPPr cellPPr = cellP.getCTP().getPPr() != null ? cellP
.getCTP().getPPr() : cellP.getCTP().addNewPPr();
// 复制段落间距信息
CTSpacing tmpSpacing = tmpPPr.getSpacing();
if (tmpSpacing != null) {
CTSpacing cellSpacing = cellPPr.getSpacing() != null ? cellPPr
.getSpacing() : cellPPr.addNewSpacing();
if (tmpSpacing.getAfter() != null) {
cellSpacing.setAfter(tmpSpacing.getAfter());
}
if (tmpSpacing.getAfterAutospacing() != null) {
cellSpacing.setAfterAutospacing(tmpSpacing
.getAfterAutospacing());
}
if (tmpSpacing.getAfterLines() != null) {
cellSpacing.setAfterLines(tmpSpacing.getAfterLines());
}
if (tmpSpacing.getBefore() != null) {
cellSpacing.setBefore(tmpSpacing.getBefore());
}
if (tmpSpacing.getBeforeAutospacing() != null) {
cellSpacing.setBeforeAutospacing(tmpSpacing
.getBeforeAutospacing());
}
if (tmpSpacing.getBeforeLines() != null) {
cellSpacing.setBeforeLines(tmpSpacing.getBeforeLines());
}
if (tmpSpacing.getLine() != null) {
cellSpacing.setLine(tmpSpacing.getLine());
}
if (tmpSpacing.getLineRule() != null) {
cellSpacing.setLineRule(tmpSpacing.getLineRule());
}
}
// 复制段落缩进信息
CTInd tmpInd = tmpPPr.getInd();
if (tmpInd != null) {
CTInd cellInd = cellPPr.getInd() != null ? cellPPr.getInd()
: cellPPr.addNewInd();
if (tmpInd.getFirstLine() != null) {
cellInd.setFirstLine(tmpInd.getFirstLine());
}
if (tmpInd.getFirstLineChars() != null) {
cellInd.setFirstLineChars(tmpInd.getFirstLineChars());
}
if (tmpInd.getHanging() != null) {
cellInd.setHanging(tmpInd.getHanging());
}
if (tmpInd.getHangingChars() != null) {
cellInd.setHangingChars(tmpInd.getHangingChars());
}
if (tmpInd.getLeft() != null) {
cellInd.setLeft(tmpInd.getLeft());
}
if (tmpInd.getLeftChars() != null) {
cellInd.setLeftChars(tmpInd.getLeftChars());
}
if (tmpInd.getRight() != null) {
cellInd.setRight(tmpInd.getRight());
}
if (tmpInd.getRightChars() != null) {
cellInd.setRightChars(tmpInd.getRightChars());
}
}
}
}
}


}

Двоичные данные
mallinkService/src/main/resources/contract-word-template/settle.docx Просмотреть файл


+ 7
- 2
mallinkService/src/main/resources/mapper/WxBillDailyMapper.xml Просмотреть файл

@@ -27,13 +27,14 @@
<result column="starttime" property="starttime"/>
<result column="endtime" property="endtime"/>
<result column="freeze" property="freeze"/>
<result column="build_way" property="buildWay"/>
</resultMap>
<sql id="allColumns">
`id`,`receive_pay`,`pay`,`receive_date`,`pay_date`,`createtime`,`expired_day`,
`tenant_id`,`owe`,`status`,`is_del`,`merchant_id`,`user_id`,`shop_id`,`updatetime`,`type`,
`rent_shop_type`,`pay_way`,`price_detail`,`starttime`,`endtime`,freeze
`rent_shop_type`,`pay_way`,`price_detail`,`starttime`,`endtime`,freeze,build_way
</sql>

<sql id="dynamicWhereConditions">
@@ -56,6 +57,8 @@
<if test=" null != type "> and `type` = #{type} </if>
<if test=" null != rentShopType ">and `rent_shop_type` = #{rentShopType}</if>
<if test=" null != payWay ">and `pay_way` = #{payWay}</if>
<if test=" null != buildWay ">and `build_way` = #{buildWay}</if>
<if test=" null != ids ">
and id in
<foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")">
@@ -74,7 +77,7 @@
select br.`id`,br.`receive_pay`,br.`pay`,br.`receive_date`,br.`pay_date`,br.`createtime`,br.`expired_day` ,
case when br.status=1 then br.owe else 0 end owe,br.`status`,m.`name` merchant_name,s.shop_number,
br.`updatetime`,br.`merchant_id`,br.shop_id,br.type,br.`rent_shop_type`,br.pay_way,br.price_detail,
br.`starttime`,br.`endtime`
br.`starttime`,br.`endtime`,br.`build_way`
from wx_bill_daily br left join wx_merchant m on br.merchant_id=m.id
left join wx_shop s on br.shop_id=s.id
<where>
@@ -88,6 +91,8 @@
<if test=" null != payWay ">and br.`pay_way` = #{payWay}</if>
<if test=" null != starttime and null!=endtime ">and br.`receive_date` between #{starttime} and #{endtime}
</if>
<if test=" null != buildWay ">and br.`build_way` = #{buildWay}</if>
</where>



+ 23
- 10
mallinkService/src/main/resources/mapper/WxBillSettleMapper.xml Просмотреть файл

@@ -24,23 +24,32 @@

<sql id="dynamicWhereConditions">
where 1=1
<if test=" null != id ">and s.`id` = #{id}</if>
<if test=" null != tenantId ">and s.`tenant_id` = #{tenantId}</if>
<if test=" null != merchantName and merchantName !='' ">and m.name like concat('%', #{merchantName},'%')</if>
<if test="startTime != null and startTime !=''">
and createtime &gt;= #{startTime}
<if test=" null != id ">and tt.`id` = #{id}</if>
<if test=" null != tenantId ">and tt.`tenant_id` = #{tenantId}</if>
<if test=" null != merchantName and merchantName !='' ">and tt.merchantName like concat('%', #{merchantName},'%')</if>
<if test="starttime != null and starttime !=''">
and tt.createtime &gt;= #{starttime}
</if>
<if test="endTime != null and endTime !=''">
and createtime &lt;= #{endTime}
<if test="endtime != null and endtime !=''">
and tt.createtime &lt;= #{endtime}
</if>
<if test=" null != settleNumber and settleNumber !='' ">and tt.`settle_number` = #{settleNumber}</if>
<if test=" null != status and status !=''">and tt.`status` = #{status}</if>
<if test=" null != applyStatus and applyStatus !=''">and tt.`apply_status` = #{applyStatus}</if>
<if test=" null != direction and direction !=''">
<if test="0 == direction">
balance >0
</if>
<if test="1 == direction">
balance &lt;0
</if>
</if>
<if test=" null != settleNumber and settleNumber !='' ">and s.`settle_number` = #{settleNumber}</if>
<if test=" null != status and status !=''">and s.`status` = #{status}</if>
<if test=" null != applyStatus and applyStatus !=''">and s.`apply_status` = #{applyStatus}</if>

<if test=" null != sortColumns">order by ${sortColumns}</if>
</sql>

<select id="findList" parameterType="com.iformall.domain.po.WxBillSettle" resultMap="BaseResultMap">
select tt.*,(tt.receiveMoney-tt.payMoney) balance from (
select s.*,m.name merchantName,
(select IFNULL(sum(bill.receive_pay),0) from wx_bill_settle_bill bb left join
(select id,merchant_id,shop_id,tenant_id,1 bill_type_value,'租金'
@@ -115,6 +124,10 @@
on(bb.bill_id=bill.id) where bb.settle_id = s.id and bb.type=1
) payMoney
from wx_bill_settle s left JOIN wx_merchant m on(s.merchant_id=m.id)
) tt




<include refid="dynamicWhereConditions"/>
</select>


+ 1
- 1
mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml Просмотреть файл

@@ -106,7 +106,7 @@

<result column="merchant_name" jdbcType="VARCHAR" property="merchantName" />
<result column="business_id" jdbcType="VARCHAR" property="businessId" />
<result column="subBusiness_id" jdbcType="VARCHAR" property="subBusinessId" />
<result column="sub_business_id" jdbcType="VARCHAR" property="subBusinessId" />

<result column="b_user_name" jdbcType="VARCHAR" property="bUserName" />
<result column="b_user_phone" jdbcType="VARCHAR" property="bUserPhone"/>


Загрузка…
Отмена
Сохранить