diff --git a/.gitignore b/.gitignore index 02359ebda..b87b84391 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .idea/** */target/** +logs/** */logs/** logPath_IS_UNDEFINED/** uploads/** diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillDailyController.java b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillDailyController.java index 5237b8269..43212161b 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillDailyController.java +++ b/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); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillSettleController.java b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillSettleController.java index 8e56f556a..b4cabc8e4 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxBillSettleController.java +++ b/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); } } diff --git a/mallinkAdmin/src/main/resources/db/migration/V201909041150__G_BILL_DAILY.sql b/mallinkAdmin/src/main/resources/db/migration/V201909041150__G_BILL_DAILY.sql new file mode 100644 index 000000000..4054ad487 --- /dev/null +++ b/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导入'; \ No newline at end of file diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java index 31265f064..7241c1e13 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/PowerBillAutoBuildSchedule.java +++ b/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); } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java index e19c127cf..d3d57b81d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillDaily.java +++ b/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; + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java b/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java index 5d9bcaba9..1ddf6ea68 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxBillSettle.java +++ b/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 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; + } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WordDocTableVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WordDocTableVo.java new file mode 100644 index 000000000..820240bb0 --- /dev/null +++ b/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> params; + + private int tableIndex = 0; + + //替换的行 + private int rowIndex = 0; +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumBillDailyBuildWay.java b/mallinkService/src/main/java/com/iformall/enums/EnumBillDailyBuildWay.java new file mode 100644 index 000000000..0590dfad8 --- /dev/null +++ b/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; + } +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumSubBusiness.java b/mallinkService/src/main/java/com/iformall/enums/EnumSubBusiness.java index 35d09d253..01a371b25 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumSubBusiness.java +++ b/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 map 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 156f2c22c..6543e8dd0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java +++ b/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> rowsParams = new ArrayList<>(); + WordDocTableVo wordDocTableVo = new WordDocTableVo(); + List> 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 map = new HashedMap(); + WxBillSettleBill bill = i>wxBillSettle.getReceiveBillIds().size()-1?null:wxBillSettle.getReceiveBillIds().get(i); + List 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()); 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 132a1a4c2..9216cc8f8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillSettleServiceImpl.java @@ -60,11 +60,7 @@ public class WxBillSettleServiceImpl implements WxBillSettleService { @Override public PageInfo listAsPage(WxBillSettle record, Integer pageIndex, Integer pageSize) { - PageInfo 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 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java index 8ffc70894..1d1605dd8 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java +++ b/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()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 28cf2a7bf..465ea5a92 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/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); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index b7d6bdba2..9c95294c4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/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 diff --git a/mallinkService/src/main/java/com/iformall/utils/WordUtil.java b/mallinkService/src/main/java/com/iformall/utils/WordUtil.java index 69bb316b7..6d5b447b3 100644 --- a/mallinkService/src/main/java/com/iformall/utils/WordUtil.java +++ b/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 params, HttpServletRequest request, HttpServletResponse response) { + public static void exportWord(String templatePath, String temDir, String fileName, String exportFileName, Map 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> params, int tableIndex) throws Exception { + public static void insertValueToTable(XWPFDocument xwpfDocument, WordDocTableVo wordDocTableVo) throws Exception { List tableList = xwpfDocument.getTables(); - if(tableList.size()<=tableIndex){ - throw new Exception("tableIndex对应的表格不存在"); - } - XWPFTable table = tableList.get(tableIndex); + XWPFTable table = tableList.get(wordDocTableVo.getTableIndex()); List rows = table.getRows(); - if(rows.size()<2){ - throw new Exception("tableIndex对应表格应该为2行"); - } - //模板的那一行 - XWPFTableRow tmpRow = rows.get(1); - List tmpCells = null; - List cells = 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.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 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 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); + } - 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()); - } - } - } - } - } } \ 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 47a1568e5..b5e4b9e32 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/WxBillDailyMapper.xml b/mallinkService/src/main/resources/mapper/WxBillDailyMapper.xml index ba5ff205a..f9d30857e 100644 --- a/mallinkService/src/main/resources/mapper/WxBillDailyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillDailyMapper.xml @@ -27,13 +27,14 @@ + `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 @@ -56,6 +57,8 @@ and `type` = #{type} and `rent_shop_type` = #{rentShopType} and `pay_way` = #{payWay} + and `build_way` = #{buildWay} + and id in @@ -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 @@ -88,6 +91,8 @@ and br.`pay_way` = #{payWay} and br.`receive_date` between #{starttime} and #{endtime} + and br.`build_way` = #{buildWay} + diff --git a/mallinkService/src/main/resources/mapper/WxBillSettleMapper.xml b/mallinkService/src/main/resources/mapper/WxBillSettleMapper.xml index eb2c6554f..576cf13ea 100644 --- a/mallinkService/src/main/resources/mapper/WxBillSettleMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillSettleMapper.xml @@ -24,23 +24,32 @@ where 1=1 - and s.`id` = #{id} - and s.`tenant_id` = #{tenantId} - and m.name like concat('%', #{merchantName},'%') - - and createtime >= #{startTime} + and tt.`id` = #{id} + and tt.`tenant_id` = #{tenantId} + and tt.merchantName like concat('%', #{merchantName},'%') + + and tt.createtime >= #{starttime} - - and createtime <= #{endTime} + + and tt.createtime <= #{endtime} + + and tt.`settle_number` = #{settleNumber} + and tt.`status` = #{status} + and tt.`apply_status` = #{applyStatus} + + + balance >0 + + + balance <0 + - and s.`settle_number` = #{settleNumber} - and s.`status` = #{status} - and s.`apply_status` = #{applyStatus} order by ${sortColumns} diff --git a/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml b/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml index f91af3e34..ffb45a6ab 100644 --- a/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxMerchantTradeDailyMapper.xml @@ -106,7 +106,7 @@ - +