diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxShopController.java b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxShopController.java index b7659d9bf..24f2a3aae 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxShopController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/basic/WxShopController.java @@ -15,6 +15,7 @@ import com.iformall.domain.po.WxShopUsersPerson; import com.iformall.domain.po.WxShopUsers; import com.iformall.domain.po.WxUserDataRule; import com.iformall.domain.po.base.BaseEntity; +import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.enums.EnumBillAllType; import com.iformall.enums.EnumCUserBaseInfoSex; import com.iformall.enums.EnumRentShopType; @@ -25,6 +26,8 @@ import com.iformall.enums.EnumShopUsersStatus; import com.iformall.enums.EnumShopUsersType; import com.iformall.exception.MallinkException; import com.iformall.service.WxShopService; +import com.lowagie.text.pdf.BaseField; + import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -124,7 +127,12 @@ public class WxShopController extends BaseController { wxShop = new WxShop(); } wxShop.updateTenantInfo(getTenantInfo()); - wxShop.setSortColumn("shop_number asc"); + if (null != wxShop.getSortWay() && 1 == wxShop.getSortWay()) { + wxShop.setSortColumns(SortField.CreateDate_DESC); + }else { + wxShop.setSortColumn("shop_number asc"); + } + //wxShop.setSortColumns(BaseEntity.SortField.CreateDate_DESC,BaseEntity.SortField.Id_DESC); setDataRule(wxShop); //查询自持的商业店铺 diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java index 2a3fc1d66..0cd127562 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxPropertyContractController.java @@ -2,6 +2,7 @@ package com.iformall.controller.contract; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import com.iformall.annotation.SystemControllerLog; import com.iformall.annotation.UserDataRuleAnnotation; @@ -138,6 +139,16 @@ public class WxPropertyContractController extends WxContractBaseController { if (null == wxPropertyContract.getAdjustPeriod()) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "adjustPeriod不能为空"); } + List shopIds = wxPropertyContract.shopIdsByShop(); + if (null == shopIds || shopIds.size() <= 0 ) { + return new ResultData(Result.ERROR,"请选择店铺"); + } + String shopIdStr = ""; + for (int i = 0; i < shopIds.size(); i++) { + Long shopId = shopIds.get(i); + shopIdStr = shopIdStr +","+ shopId; + } + wxPropertyContract.setShopIdStr(shopIdStr); }else { WxRentContract rentContract = rentContractService.getSimpleDeatil(wxPropertyContract.getRentContractId()); if (null == rentContract) { @@ -159,6 +170,7 @@ public class WxPropertyContractController extends WxContractBaseController { wxPropertyContract.setSignDate(rentContract.getSignDate()); wxPropertyContract.setRentInfo(rentContract.getRentInfo()); wxPropertyContract.setCustomersId(rentContract.getCustomersId()); + wxPropertyContract.setShopIdStr(rentContract.getShopIdStr()); } wxPropertyContract.setRentStartType(EnumRentStartType.RENTTIME.getCode()); return wxPropertyContractService.save(wxPropertyContract, user, user.getName(),false); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java index b4eb05da4..54908c107 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -174,6 +174,9 @@ public class WxRentContractController extends WxContractBaseController { if (null != wxRentContract.getDecimalSize() && wxRentContract.getDecimalSize() <= 0 ) { wxRentContract.setDecimalSize(Constant.default_short_decimal_size); } + WxRentContract contract = wxRentContractService.selectById(wxRentContract.getId()); + wxRentContract.setRentArea(contract.getRentArea()); + MallUserInfo user = getUser(); wxRentContract.updateTenantInfo(user); wxRentContract.setAdjustPeriodHandle(); @@ -191,8 +194,6 @@ public class WxRentContractController extends WxContractBaseController { return new ResultData(Result.ERROR,"请填写月平均天数"); } - WxRentContract contract = wxRentContractService.selectById(wxRentContract.getId()); - wxRentContract.setRentArea(contract.getRentArea()); return wxRentContractService.update(wxRentContract, user,user.getName(),EnumFromType.OTHER.getCode(),oldDate,false,true); } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentPropertyContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentPropertyContractController.java index d870c4650..6a270e9bf 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentPropertyContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentPropertyContractController.java @@ -83,52 +83,6 @@ public class WxRentPropertyContractController extends WxContractBaseController { List floorIds = new ArrayList(); List buildIds = new ArrayList(); List shopIds = new ArrayList(); -// for (int i = 0 ; i < arrays.size(); i ++) { -// JSONObject o = arrays.getJSONObject(i); -// try { -// floorIds.add(Long.parseLong(o.getString("floor"))); -// }catch(Exception e) { -// floorName = floorName +","+o.getString("floor"); -// } -// try { -// buildIds.add(Long.parseLong(o.getString("building"))); -// }catch(Exception e) { -// buildingName = buildingName + ","+ o.getString("building"); -// } -// try { -// shopIds.add(Long.parseLong(o.getString("id"))); -// }catch(Exception e) { -// shopNumber = shopNumber +","+o.getString("id"); -// } -// } -// -// WxMallBuilding bq = new WxMallBuilding(); -// bq.setIds(buildIds); -// PageInfo bpage = buildingService.listAsPage(bq, 1, 1000); -// if (null != bpage && null != bpage.getList()) { -// for (WxMallBuilding wmb : bpage.getList()) { -// buildingName = buildingName +"," + wmb.getBuildingName(); -// } -// } -// -// WxMallFloor fq = new WxMallFloor(); -// fq.setIds(floorIds); -// PageInfo fpage = floorService.listAsPage(fq, 1, 1000); -// if (null != fpage && null != fpage.getList()) { -// for (WxMallFloor wmf : fpage.getList()) { -// floorName = floorName +"," + wmf.getFloorName(); -// } -// } -// -// WxShop ws = new WxShop(); -// ws.setIds(shopIds); -// PageInfo spage = wxShopService.listAsPage(ws, 1, 1000); -// if (null != spage && null != spage.getList()) { -// for (WxShop shop : spage.getList()) { -// shopNumber = shopNumber+","+shop.getShopNumber(); -// } -// } - wrc.setFloorName(floorName); wrc.setBuildingName(buildingName); wrc.setShopNumber(shopNumber); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java index 56d0ddbe6..fdb2f25af 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java @@ -263,7 +263,7 @@ public class WxFinanceController extends BaseController { @ApiOperation("增加临时费用") @PostMapping("createTempFees") - public ResultData saveAdvance(@RequestBody WxAllBill record) { + public ResultData createTempFees(@RequestBody WxAllBill record) { record.updateTenantInfo(getTenantInfo()); if (StringUtils.isBlank(record.getReceivePay())) { return new ResultData(Result.ERROR,"请填写金额"); diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java b/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java index 1531cf2a6..afbc810ab 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/msg/WxMsgController.java @@ -124,8 +124,7 @@ public class WxMsgController extends BaseController { // if(null == wxTemplateMsg.getOnOff()){ // wxTemplateMsg.setOnOff(1); // } - wxTemplateMsgService.tempUpdStatus(wxTemplateMsg); - return new ResultData(); + return wxTemplateMsgService.tempUpdStatus(wxTemplateMsg); } @ApiOperation("推送模板") diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java index b2d296b60..3791546a2 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java @@ -727,12 +727,16 @@ public class WxAllBillController extends BillBaseController { be.setEnergyFeesName(fees.getName()); } } - if (null != shopUserMap) { - WxShopUsers su = shopUserMap.get(be.getShopId()); - if (null != su) { - be.setCusName(su.getName()); - } + + if (StringUtils.isBlank(be.getCusName())) { + if (null != shopUserMap) { + WxShopUsers su = shopUserMap.get(be.getShopId()); + if (null != su) { + be.setCusName(su.getName()); + } + } } + } } return new ResultData(list); @@ -793,11 +797,13 @@ public class WxAllBillController extends BillBaseController { be.setEnergyFeesName(fees.getName()); } } - if (null != shopUserMap) { - WxShopUsers su = shopUserMap.get(be.getShopId()); - if (null != su) { - be.setCusName(su.getName()); - } + if (StringUtils.isBlank(be.getCusName())) { + if (null != shopUserMap) { + WxShopUsers su = shopUserMap.get(be.getShopId()); + if (null != su) { + be.setCusName(su.getName()); + } + } } } } @@ -837,7 +843,7 @@ public class WxAllBillController extends BillBaseController { record.setEnergyFeesIds(feesIdList);; } record.setIsPreview(EnumYesOrNo.NO.getCode()); - record.setSortColumns("starttime asc , merchant_id desc"); + record.setSortColumns("starttime asc , shop_id desc"); //未收明细表根据收款日查询 if (record.getNeedPayNoDays() == EnumYesOrNo.YES.getCode() && null != record.getReceiveDateEnd()) { diff --git a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java index 0ce1208fb..5a1241750 100644 --- a/mallinkService/src/main/java/com/iformall/common/ErrorCode.java +++ b/mallinkService/src/main/java/com/iformall/common/ErrorCode.java @@ -413,7 +413,7 @@ public enum ErrorCode{ TEMPLATE_DATA_ERROR(12092, "数据格式错误"), TEMPLATE_ADD_ERROR(12093, "添加模板错误"), TEMPLATE_IS_CREATE(12094, "模板已同步"), - TEMPLATE_NOT_CREATE(12095, "模板已同步"), + TEMPLATE_NOT_CREATE(12095, "模板未同步"), /** * diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java b/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java index f3cc89df5..f631fb34d 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxAllBill.java @@ -118,10 +118,13 @@ public class WxAllBill extends TenantEntity { if (StringUtils.isBlank(pay)) { pay = "0"; } + if (StringUtils.isBlank(returnPay)) { + returnPay = "0"; + } if (StringUtils.isBlank(useMoney)) { useMoney = "0"; } - return new BigDecimal(pay).subtract(new BigDecimal(useMoney)).toPlainString(); + return new BigDecimal(pay).subtract(new BigDecimal(returnPay)).subtract(new BigDecimal(useMoney)).toPlainString(); } @Excel(name = "周期开始时间", format = "yyyy-MM-dd", width = 20, orderNum = "4") @@ -281,6 +284,12 @@ public class WxAllBill extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="主物账单ID(针对合同里面的自定义科目账单)",name="parentBillId") public Long parentBillId; + @io.swagger.annotations.ApiModelProperty(value="虚拟组合ID(针对店铺拆分用)",name="virtualComposeId") + public Long virtualComposeId; + + @io.swagger.annotations.ApiModelProperty(value="父虚拟组合ID(针对店铺拆分,自定义科目账单用)",name="parentVirtualComposeId") + public Long parentVirtualComposeId; + @io.swagger.annotations.ApiModelProperty(value = "能源抄表计算ID", name = "energyReadingCalcuteId") private Long energyReadingCalcuteId; @@ -425,4 +434,6 @@ public class WxAllBill extends TenantEntity { private List shopIdList; @TableField(exist = false) private List cusNameShopIdList; + @TableField(exist = false) + private String queryShopIdStr; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java index 456bd120d..7cad05706 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxPropertyContract.java @@ -254,6 +254,9 @@ public class WxPropertyContract extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "首期账单收款截止日期", name = "firstBillReceiveDate") private Date firstBillReceiveDate; + @io.swagger.annotations.ApiModelProperty(value = "店铺编号串", name = "shopIdStr") + private String shopIdStr; + //查询过期提醒 @TableField(exist = false) private Integer outDateNofity; @@ -341,13 +344,16 @@ public class WxPropertyContract extends TenantEntity { return null; } - @TableField(exist = false) - private List merchantIds; - @TableField(exist = false) List feeStandards; @TableField(exist = false) private Long queryShopId; + @TableField(exist = false) + private String merchantName; + @TableField(exist = false) + private String queryShopIdStr; + @TableField(exist = false) + private List customersIdList; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java index c8f654505..009e1d563 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java @@ -484,7 +484,7 @@ public class WxRentContract extends TenantEntity { for (int i = 0; i < size; i++) { JSONObject rentInfoObject = rentInfoArray.getJSONObject(i); Long shopId = rentInfoObject.getLong("id"); - String rentArea = rentInfoObject.getString("rentArea"); + String rentArea = rentInfoObject.getString("operationArea"); if (StringUtils.isBlank(rentArea)) { shopAreaMap.put(shopId, new BigDecimal("0")); }else { @@ -568,5 +568,11 @@ public class WxRentContract extends TenantEntity { private Date salesStartTime; @TableField(exist = false) private Date salesEndTime; + @TableField(exist = false) + private String merchantName; + @TableField(exist = false) + private String queryShopIdStr; + @TableField(exist = false) + private List customersIdList; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java b/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java index 50f0bb422..cea2fc78c 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxShop.java @@ -238,5 +238,6 @@ public class WxShop extends TenantEntity { private String shopUserTypeName; @TableField(exist = false) private String shopUserName; - + @TableField(exist = false) + private Integer sortWay; } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxShopUsersInfo.java b/mallinkService/src/main/java/com/iformall/domain/po/WxShopUsersInfo.java index 30ed085c3..a9d297061 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxShopUsersInfo.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxShopUsersInfo.java @@ -73,6 +73,9 @@ public class WxShopUsersInfo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; + @io.swagger.annotations.ApiModelProperty(value = "创建的合同客户编号", name = "createContractCustomerId") + private Long createContractCustomerId; + @TableField(exist = false) private String phoneEqual; @TableField(exist = false) diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/WxRentPropertyContractVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/WxRentPropertyContractVo.java index 7fe24aac0..3558f6013 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/WxRentPropertyContractVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/WxRentPropertyContractVo.java @@ -1,5 +1,6 @@ package com.iformall.domain.vo; +import com.baomidou.mybatisplus.annotation.TableField; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; import lombok.EqualsAndHashCode; @@ -21,6 +22,8 @@ public class WxRentPropertyContractVo extends TenantEntity { private Long rentId; private Long propertyId; + private Long customersId; + private String floorName; private String buildingName; @@ -104,5 +107,12 @@ public class WxRentPropertyContractVo extends TenantEntity { private String queryShopNumber; + @TableField(exist = false) + private String merchantName; + @TableField(exist = false) + private String queryShopIdStr; + @TableField(exist = false) + private List customersIdList; + } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxAllBillMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxAllBillMapper.java index ea171f8cf..49a19228f 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxAllBillMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxAllBillMapper.java @@ -48,5 +48,7 @@ public interface WxAllBillMapper extends CommonMapper { void deleteById(@Param("id")Long id,@Param("tenantId")String tenantId); void deleteEnergyReadingBills(@Param("energyReadingCalcuteId")Long energyReadingCalcuteId,@Param("tenantId")String tenantId); + + void updateContractCusName(WxAllBill wxBillRent); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxContractCustomersMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxContractCustomersMapper.java index a75ea3f9a..d8faa7f24 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxContractCustomersMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxContractCustomersMapper.java @@ -12,5 +12,7 @@ public interface WxContractCustomersMapper extends CommonMapper findList(WxContractCustomers wxShop); + List findIdList(WxContractCustomers wxShop); + WxContractCustomers selectById(@Param("id")Long id,@Param("tenantId")String tenantId); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxPropertyContractMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxPropertyContractMapper.java index 404940a24..75ae5bba6 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxPropertyContractMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxPropertyContractMapper.java @@ -30,8 +30,6 @@ public interface WxPropertyContractMapper extends CommonMapper getRentContractListByShop(Map params); diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxShopUsersMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxShopUsersMapper.java index a8901ed92..8a2ab0d71 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxShopUsersMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxShopUsersMapper.java @@ -11,4 +11,6 @@ public interface WxShopUsersMapper extends CommonMapper { List findList(WxShopUsers wxShop); List findShopIdList(WxShopUsers wxShop); + + void updateShopOld(WxShopUsers wxShop); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxShopService.java b/mallinkService/src/main/java/com/iformall/service/WxShopService.java index df0f35ff2..727fe5fb3 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxShopService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxShopService.java @@ -129,10 +129,14 @@ public interface WxShopService { WxShopUsers getOneShopUsers(WxShopUsers wxShopUsersShop); + List getShopUsersList(WxShopUsers wxShopUsers); + void saveOrUpdateShopUsers(WxShopUsers wxShopUsers); void changeShopUsers(WxShopUsers wxShopUsers); + void updateRentShopUsersOld(TenantEntity tenantEntity,Long shopId); + void deleteShopUsers(WxShopUsers wxShopUsers); PageInfo shopUsersListAsPage(WxShopUsers record,Integer pageIndex,Integer pageSize); @@ -141,11 +145,16 @@ public interface WxShopService { PageInfo shopUsersInfoListAsPage(WxShopUsersInfo record,Integer pageIndex,Integer pageSize); + void saveOrUpdateShopUsersInfo(WxShopUsersInfo wxShopUsersInfo); + void saveOrUpdateShopUsersPerson(WxShopUsersPerson wxShopUsers); void deleteShopUsersPerson(WxShopUsersPerson wxShopUsers); + List getUserInfoList(WxShopUsersInfo wxShopUsersInfo); + List getUserInfoIds(WxShopUsersInfo wxShopUsersInfo); + List getUserShopIds(WxShopUsers wxShopUsers); Map getShopUserMap(WxShopUsers wxShopUsers); diff --git a/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractAgileHelper.java b/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractAgileHelper.java index 6ab85447e..8c564c455 100644 --- a/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractAgileHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/helper/WxRentContractAgileHelper.java @@ -61,10 +61,13 @@ public class WxRentContractAgileHelper { EnumRentContractAgilTimeUnit timeUnit,int time,int payPeriod){ List list = new ArrayList<>(); int count = 0; - List yearsBeginList = new ArrayList(); - yearsBeginList.addAll(yearList); - if (yearsBeginList.size() > 0) { - yearsBeginList.remove(0); + List yearsBeginList = null; + if (null != yearList) { + yearsBeginList = new ArrayList(); + yearsBeginList.addAll(yearList); + if (yearsBeginList.size() > 0) { + yearsBeginList.remove(0); + } } BillTimeVo receiveDate = null; while (true) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAgileContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAgileContractServiceImpl.java index 3e5760688..6692526bb 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAgileContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAgileContractServiceImpl.java @@ -14,6 +14,7 @@ import com.iformall.domain.po.WxContractCustomers; import com.iformall.domain.po.WxContractShop; import com.iformall.domain.po.WxEnergyFees; import com.iformall.domain.po.WxMerchant; +import com.iformall.domain.po.WxPropertyContract; import com.iformall.domain.po.WxRentContract; import com.iformall.domain.po.WxRentContractAgileDeposit; import com.iformall.domain.po.WxRentContractAgileDepositShop; @@ -59,6 +60,7 @@ import com.iformall.service.WxMerchantService; import com.iformall.service.WxShopService; import com.iformall.service.helper.WxRentContractAgileHelper; import com.iformall.service.helper.WxRentContractHelper; +import com.iformall.utils.Constant; import com.iformall.utils.DateUtils; import org.apache.commons.lang3.StringUtils; @@ -125,8 +127,25 @@ public class WxAgileContractServiceImpl implements WxAgileContractService { @Override public PageInfo getRentContractList(WxRentContract rentContract, Integer pageIndex, Integer pageSize) { - if (StringUtils.isNoneBlank(rentContract.getFloorForRule())) { - List contractIds = this.findBuildingFloorContractIds(rentContract, rentContract.getFloorForRule(), null, null, null, 0); + if (StringUtils.isNotBlank(rentContract.getFloorForRule()) || StringUtils.isNotBlank(rentContract.getQueryShopIdStr())) { + List shopIdList = null; + if (StringUtils.isNotBlank(rentContract.getQueryShopIdStr())) { + String[] qsids = rentContract.getQueryShopIdStr().split(","); + if (null != qsids && qsids.length > 0 ) { + shopIdList = new ArrayList(); + for (int i = 0 ; i < qsids.length ; i ++) { + String qsid = qsids[i]; + if (StringUtils.isNotBlank(qsid)) { + shopIdList.add(Long.parseLong(qsid)); + } + } + if (shopIdList.size() <= 0 ) { + shopIdList = null; + } + } + } + + List contractIds = this.findBuildingFloorContractIds(rentContract, rentContract.getFloorForRule(), null, null, shopIdList, 0); //List mids = wxMerchantService.getFloorBuildMerchantIds(rentContract, rentContract.getFloorForRule() , null, null,rentContract.getShopTypeForRule(), 0, 0,null); if (null == contractIds || contractIds.size() <= 0 ) { rentContract.setId(-1L); @@ -134,10 +153,63 @@ public class WxAgileContractServiceImpl implements WxAgileContractService { rentContract.setIds(contractIds); } } + //根据客户名称查询 + if (StringUtils.isNotBlank(rentContract.getMerchantName())) { + WxContractCustomers ccq = new WxContractCustomers(); + ccq.updateTenantInfo(rentContract); + ccq.setName(rentContract.getMerchantName()); + List customersIdList = wxContractCustomersMapper.findIdList(ccq); + if (null != customersIdList && customersIdList.size() > 0 ) { + rentContract.setCustomersIdList(customersIdList); + }else { + rentContract.setId(-1L); + } + } PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxRentContractMapper.findList(rentContract)); + if (null != pageInfo && null != pageInfo.getList() && pageInfo.getList().size() > 0 ) { + List customersIdList = new ArrayList(); + for (int i = 0 ; i < pageInfo.getList().size(); i ++ ){ + WxRentContract contract = pageInfo.getList().get(i); + if (null != contract.getCustomersId()) { + customersIdList.add(contract.getCustomersId()); + } + } + + Map customersMap = getContractCustomersMap(rentContract,customersIdList); + + for (int i = 0 ; i < pageInfo.getList().size(); i ++ ) { + WxRentContract contract = pageInfo.getList().get(i); + String merchantName = ""; + if (null != customersMap && null != contract.getCustomersId()) { + WxContractCustomers cc = customersMap.get(contract.getCustomersId()); + if (null != cc) { + merchantName = merchantName + cc.getName(); + } + } + contract.setMerchantName(merchantName); + } + } return pageInfo; } + private Map getContractCustomersMap(TenantEntity tenantEntity,List customerIds) { + WxContractCustomers ccq = new WxContractCustomers(); + ccq.updateTenantInfo(tenantEntity); + ccq.setIds(customerIds); + List cclist = wxContractCustomersMapper.findList(ccq); + if (null != cclist && cclist.size() > 0 ){ + Map map = new HashMap(); + for (int i = 0 ; i < cclist.size() ; i ++ ) { + WxContractCustomers cc = cclist.get(i); + if (null != cc) { + map.put(cc.getId(),cc); + } + } + return map; + } + return null; + } + @Override public WxRentContract selectById(Long id) { @@ -480,11 +552,13 @@ public class WxAgileContractServiceImpl implements WxAgileContractService { for (int j = 0 ; j < shopIdList.size(); j++ ) { Long sid = shopIdList.get(j); BigDecimal shoprentArea = shopAreaRateMap.get(sid); - BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxRentContract.getRentArea()),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); - WxShopUsers su = shopUserMap.get(sid); - String cusName = ""; - if (null != su) { - cusName = su.getName(); + BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxRentContract.getRentArea()),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); + String cusName = null; + if (null != shopUserMap) { + WxShopUsers su = shopUserMap.get(sid); + if (null != su) { + cusName = su.getName(); + } } WxAllBill wxBillDeposit = new WxAllBill(); @@ -496,7 +570,7 @@ public class WxAgileContractServiceImpl implements WxAgileContractService { wxBillDeposit.setCanEdit(EnumYesOrNo.NO.getCode()); wxBillDeposit.setPriceDetail(fees.getName()); wxBillDeposit.setPay("0"); - wxBillDeposit.setReceivePay(new BigDecimal(deposit.getPrice()).multiply(shoprate).toPlainString()); + wxBillDeposit.setReceivePay(new BigDecimal(deposit.getPrice()).multiply(shoprate).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString()); wxBillDeposit.setNeedPay(wxBillDeposit.getReceivePay()); wxBillDeposit.setStarttime(wxRentContract.getRentalStartDate()); wxBillDeposit.setEndtime(wxRentContract.getRentalEndDate()); @@ -606,22 +680,26 @@ public class WxAgileContractServiceImpl implements WxAgileContractService { for (int i = 0 ; i < shopIdList.size(); i++) { Long sid= shopIdList.get(i); BigDecimal shoprentArea = shopAreaMap.get(sid); - BigDecimal shoprate = shoprentArea.divide(new BigDecimal(contract.getRentArea()),contract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); - WxShopUsers su = shopUserMap.get(sid); - String cusName = ""; - if (null != su) { - cusName = su.getName(); + BigDecimal shoprate = shoprentArea.divide(new BigDecimal(contract.getRentArea()),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); + String cusName = null; + if (null != shopUserMap) { + WxShopUsers su = shopUserMap.get(sid); + if (null != su) { + cusName = su.getName(); + } } - String money = new BigDecimal(needpay).multiply(shoprate).toPlainString(); + String money = new BigDecimal(needpay).multiply(shoprate).setScale(contract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString(); WxAllBill bill = buildUnDepositBill(unDeposit,idWorker,contract.getId(),fees,sid,cusName,start,end,receiveDate,money,shoprentArea.toPlainString(),user); billList.add(bill); } }else { Long sid= item.getShopId(); - WxShopUsers su = shopUserMap.get(sid); - String cusName = ""; - if (null != su) { - cusName = su.getName(); + String cusName = null; + if (null != shopUserMap) { + WxShopUsers su = shopUserMap.get(sid); + if (null != su) { + cusName = su.getName(); + } } WxAllBill bill = buildUnDepositBill(unDeposit,idWorker,contract.getId(),fees,sid,cusName,start,end,receiveDate,needpay,item.getRentArea(),user); billList.add(bill); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java index aad9806b8..d6966ac4e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java @@ -129,18 +129,30 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill wxBillRent.setId(-1L); } } - //List _sids = (List) CollectionUtils.intersection(shopIds, wxBillRent.getShopIdList()); -// if (StringUtils.isNotBlank(wxBillRent.getCusName())) { -// WxShopUsers suq = new WxShopUsers(); -// suq.updateTenantInfo(wxBillRent); -// suq.setName(wxBillRent.getCusName()); -// List shopIds = wxShopService.getUserShopIds(suq); -// if (null != shopIds && shopIds.size() > 0 ) { -// wxBillRent.setCusNameShopIdList(shopIds);; -// }else { -// wxBillRent.setId(-1L); -// } -// } + if (StringUtils.isNotBlank(wxBillRent.getQueryShopIdStr())) { + String[] qsids = wxBillRent.getQueryShopIdStr().split(","); + if (null != qsids && qsids.length > 0 ) { + List shopIdList = new ArrayList(); + for (int i = 0 ; i < qsids.length ; i ++) { + String qsid = qsids[i]; + if (StringUtils.isNotBlank(qsid)) { + shopIdList.add(Long.parseLong(qsid)); + } + } + if (null != shopIdList && shopIdList.size() > 0 ) { + if (null != wxBillRent.getShopIdList()) { + List _sids = (List) CollectionUtils.intersection(shopIdList, wxBillRent.getShopIdList()); + if (null != _sids && _sids.size() > 0 ) { + wxBillRent.setShopIdList(_sids); + }else { + wxBillRent.setId(-1L); + } + }else { + wxBillRent.setShopIdList(shopIdList); + } + } + } + } } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java index 0338bcc69..5bfe9c581 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java @@ -362,13 +362,13 @@ public class WxFinanceServiceImpl implements WxFinanceService { if (null == shopId) { shopId = be.getShopId(); } - if (shopId != be.getShopId()) { + if (shopId.longValue() != be.getShopId().longValue()) { throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"多个房源合并收款不能冲抵"); } } WxAllBill abq = new WxAllBill(); abq.updateTenantInfo(dto); - abq.setFeesStandarsId(dto.getFeesId()); + abq.setEnergyFeesId(dto.getFeesId()); abq.setBillType(EnumBillAllType.ADVANCE.getCode()); abq.setAdvanceHasMoney(EnumYesOrNo.YES.getCode()); abq.setSortColumns(SortField.Createtime_ASC); @@ -1003,7 +1003,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { if (!shopIdList.contains(be.getShopId())) { shopIdList.add(be.getShopId()); - shopnumberSb.append(be.getShopNumber()).append(","); + shopnumberSb.append(be.getShopId()).append(","); billCusSb.append(be.getCusName()).append(","); } } @@ -1082,7 +1082,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { if (!shopIdList.contains(be.getShopId())) { shopIdList.add(be.getShopId()); - shopnumberSb.append(be.getShopNumber()).append(","); + shopnumberSb.append(be.getShopId()).append(","); billCusSb.append(be.getCusName()).append(","); } } @@ -1223,13 +1223,17 @@ public class WxFinanceServiceImpl implements WxFinanceService { WxAllBill advanceBill = new WxAllBill(); advanceBill.updateTenantInfo(record); advanceBill.setShopId(wxShop.getId()); - WxShopUsers su = new WxShopUsers(); - su.updateTenantInfo(record); - su.setShopId(wxShop.getId()); - su.setStatus(EnumShopUsersStatus.LIVE.getCode()); - WxShopUsers wsu = wxShopService.getOneShopUsers(su); - if (null != wsu) { - advanceBill.setCusName(wsu.getName()); + if (StringUtils.isNotBlank(record.getCusName())) { + advanceBill.setCusName(record.getCusName()); + }else { + WxShopUsers su = new WxShopUsers(); + su.updateTenantInfo(record); + su.setShopId(wxShop.getId()); + su.setStatus(EnumShopUsersStatus.LIVE.getCode()); + WxShopUsers wsu = wxShopService.getOneShopUsers(su); + if (null != wsu) { + advanceBill.setCusName(wsu.getName()); + } } advanceBill.setNeedPay(record.getReceivePay()); advanceBill.setReceivePay(receivePay); @@ -1237,7 +1241,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { advanceBill.setUseMoney("0"); advanceBill.setBillType(billType.getCode()); //advanceBill.setPayWay(); - advanceBill.setPayDate(new Date()); + //advanceBill.setPayDate(new Date()); advanceBill.setStarttime(starttime); advanceBill.setEndtime(endtime); advanceBill.setReceiveDate(starttime); @@ -1247,6 +1251,7 @@ public class WxFinanceServiceImpl implements WxFinanceService { advanceBill.setIsPreview(EnumYesOrNo.NO.getCode()); advanceBill.setBillRemark(record.getBillRemark()); advanceBill.setCanEdit(EnumYesOrNo.YES.getCode()); + advanceBill.setRentArea(wxShop.getRentArea()); wxBillAllHelper.saveOrUpdateBill(advanceBill, user); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java index a0668821f..f0e638770 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -85,6 +85,10 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService @Lazy @Autowired WxRentContractService wxRentContractService; + + @Lazy + @Autowired + WxAgileContractService wxAgileContractService; @Lazy @Autowired @@ -107,18 +111,91 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService @Override public PageInfo listAsPage(WxPropertyContract record, Integer pageIndex, Integer pageSize) { - if (StringUtils.isNotBlank(record.getFloorForRule())) { - List mids = wxMerchantService.getFloorBuildMerchantIds(record, record.getFloorForRule() , null, null,record.getShopTypeForRule(), 0, 0,null); - if (null == mids || mids.size() <= 0 ) { - record.setId(-1L); + if (StringUtils.isNotBlank(record.getFloorForRule()) || StringUtils.isNotBlank(record.getQueryShopIdStr())) { + List shopIdList = null; + if (StringUtils.isNotBlank(record.getQueryShopIdStr())) { + String[] qsids = record.getQueryShopIdStr().split(","); + if (null != qsids && qsids.length > 0 ) { + shopIdList = new ArrayList(); + for (int i = 0 ; i < qsids.length ; i ++) { + String qsid = qsids[i]; + if (StringUtils.isNotBlank(qsid)) { + shopIdList.add(Long.parseLong(qsid)); + } + } + if (shopIdList.size() <= 0 ) { + shopIdList = null; + } + } + } + + List contractIds = wxAgileContractService.findBuildingFloorContractIds(record, record.getFloorForRule(), null, null, shopIdList, 0); + //List mids = wxMerchantService.getFloorBuildMerchantIds(record, record.getFloorForRule() , null, null,record.getShopTypeForRule(), 0, 0,null); + if (null == contractIds || contractIds.size() <= 0 ) { + record.setId(-1L); } else { - record.setMerchantIds(mids); + record.setIds(contractIds); } } + + //根据客户名称查询 + if (StringUtils.isNotBlank(record.getMerchantName())) { + WxContractCustomers ccq = new WxContractCustomers(); + ccq.updateTenantInfo(record); + ccq.setName(record.getMerchantName()); + List customersIdList = wxContractCustomersMapper.findIdList(ccq); + if (null != customersIdList && customersIdList.size() > 0 ) { + record.setCustomersIdList(customersIdList); + }else { + record.setId(-1L); + } + } + PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxPropertyContractMapper.findList(record)); + if (null != pageInfo && null != pageInfo.getList() && pageInfo.getList().size() > 0 ) { + List customersIdList = new ArrayList(); + for (int i = 0 ; i < pageInfo.getList().size(); i ++ ){ + WxPropertyContract contract = pageInfo.getList().get(i); + if (null != contract.getCustomersId()) { + customersIdList.add(contract.getCustomersId()); + } + } + + Map customersMap = getContractCustomersMap(record,customersIdList); + + for (int i = 0 ; i < pageInfo.getList().size(); i ++ ) { + WxPropertyContract contract = pageInfo.getList().get(i); + String merchantName = ""; + if (null != customersMap && null != contract.getCustomersId()) { + WxContractCustomers cc = customersMap.get(contract.getCustomersId()); + if (null != cc) { + merchantName = merchantName + cc.getName(); + } + } + contract.setMerchantName(merchantName); + } + } return pageInfo; } + private Map getContractCustomersMap(TenantEntity tenantEntity,List customerIds) { + WxContractCustomers ccq = new WxContractCustomers(); + ccq.updateTenantInfo(tenantEntity); + ccq.setIds(customerIds); + List cclist = wxContractCustomersMapper.findList(ccq); + if (null != cclist && cclist.size() > 0 ){ + Map map = new HashMap(); + for (int i = 0 ; i < cclist.size() ; i ++ ) { + WxContractCustomers cc = cclist.get(i); + if (null != cc) { + map.put(cc.getId(),cc); + } + } + return map; + } + return null; + } + @Override public List findList(WxPropertyContract record) { return wxPropertyContractMapper.findList(record); @@ -244,27 +321,26 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService //查询主账单列表,排除其他标砖费用,包括一次性费用,非一次性费用 WxAllBill wxBillRent = new WxAllBill(); wxBillRent.setPropertyContractId(id); - wxBillRent.setSortColumns("starttime asc"); wxBillRent.updateTenantInfo(tenantEntity); //物业主账单 wxBillRent.setEnergyFeesId(EnumBillAllType.PROPERTY.getEnergyFeesId()); - List retList = wxAllBillMapper.findList(wxBillRent); + List retList = wxAllBillMapper.findContractSamePeriodSum(wxBillRent); //获取非一次性的, wxBillRent.setEnergyFeesId(null); wxBillRent.setBillType(EnumBillAllType.PROPERTY.getCode()); wxBillRent.setHasParentBillId(EnumYesOrNo.YES.getCode()); - List unFixedList = wxAllBillMapper.findList(wxBillRent); + List unFixedList = wxAllBillMapper.findContractSamePeriodSum(wxBillRent); Map> childMap = null; if (null != unFixedList && unFixedList.size() > 0 ) { childMap = new HashMap>(); for (int i = 0 ; i < unFixedList.size(); i++) { WxAllBill ub = unFixedList.get(i); if (null != ub) { - List childList = childMap.get(ub.getParentBillId()); + List childList = childMap.get(ub.getParentVirtualComposeId()); if (null == childList) { childList = new ArrayList(); - childMap.put(ub.getParentBillId(), childList); + childMap.put(ub.getParentVirtualComposeId(), childList); } ub.setFeesStandarsId(ub.getEnergyFeesId()); childList.add(ub); @@ -274,7 +350,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService if (null != childMap ) { for (int i = 0 ; i < retList.size(); i ++) { WxAllBill ub = retList.get(i); - List childList = childMap.get(ub.getId()); + List childList = childMap.get(ub.getVirtualComposeId()); ub.setChildList(childList); } } @@ -542,6 +618,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } @Override + @Transactional(rollbackFor = {Exception.class}) public ResultData updatePropertyContractStatus(Long id) { if (id == null) { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); @@ -556,6 +633,19 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService wxPropertyContract.setStatus(EnumRentContractStatus.READY_FOR_PAING.getCode()); } wxPropertyContractMapper.updateById(wxPropertyContract); + + //合同客户状态变更 + WxContractCustomers customers = wxContractCustomersMapper.selectById(record.getCustomersId(), record.getTenantId()); + customers.setStatus(EnumContractCustomersStatus.FORMUL.getCode()); + customers.setUpdateDate(new Date()); + wxContractCustomersMapper.updateById(customers); + + //把customers写入到wxShopUser + String cusName = castCustomersToShopUsers(customers,record.shopIdsByShop()); + + //如果合同的账单cusName为空的话,则设置为customers name + handleContractBillCusName(record,cusName); + //建立账单 if (record.getReceivePeriod() != null && new BigDecimal(record.getPrice()).compareTo(new BigDecimal(0)) > 0) { //预览账单改为正式,并写入商户id @@ -563,6 +653,69 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } return new ResultData(Result.SUCCESS, "操作成功"); } + + public String castCustomersToShopUsers(WxContractCustomers customers,List shopIdList) { + WxShopUsersInfo suiq = new WxShopUsersInfo(); + suiq.updateTenantInfo(customers); + suiq.setPrincipalType(customers.getPrincipalType()); + suiq.setName(customers.getName()); + suiq.setPhone(customers.getPhone()); + List ids = wxShopService.getUserInfoList(suiq); + Long infoId = null; + String cusName = null; + if (null == ids || ids.size() <= 0 ) { + WxShopUsersInfo sui = new WxShopUsersInfo(); + sui.updateTenantInfo(customers); + sui.setPrincipalType(customers.getPrincipalType()); + sui.setName(customers.getName()); + sui.setPhone(customers.getPhone()); + sui.setLegalPerson(customers.getLegalPerson()); + sui.setIdNumber(customers.getIdNumber()); + sui.setSex(customers.getSex()); + sui.setLinkPerson(customers.getLinkPerson()); + sui.setCreateContractCustomerId(customers.getId()); + wxShopService.saveOrUpdateShopUsersInfo(sui); + infoId = sui.getId(); + cusName = customers.getName(); + }else { + infoId = ids.get(0).getId(); + cusName = ids.get(0).getName(); + } + + for (int i = 0 ; i < shopIdList.size(); i++) { + Long shopId = shopIdList.get(i); + //查询这个infoId是不是当前的租户 + WxShopUsers suq = new WxShopUsers(); + suq.updateTenantInfo(customers); + suq.setShopId(shopId); + suq.setInfoId(infoId); + suq.setStatus(EnumShopUsersStatus.LIVE.getCode()); + List ulist = wxShopService.getShopUsersList(suq); + if (null != ulist && ulist.size() > 0 ) { + //WxShopUsers su = ulist.get(0); + }else { + //先把当前的租户变更掉 + wxShopService.updateRentShopUsersOld(customers,shopId); + //新增租户 + WxShopUsers su = new WxShopUsers(); + su.updateTenantInfo(customers); + su.setShopId(shopId); + su.setInfoId(infoId); + su.setType(EnumShopUsersType.RENTER.getCode()); + su.setStatus(EnumShopUsersStatus.LIVE.getCode()); + wxShopService.saveOrUpdateShopUsers(su); + } + } + return cusName; + } + + public void handleContractBillCusName(WxPropertyContract record,String cusName) { + WxAllBill bill = new WxAllBill(); + bill.updateTenantInfo(record); + bill.setCusName(cusName); + bill.setPropertyContractId(record.getId()); + wxAllBillMapper.updateContractCusName(bill); + } @Override public void updatePropertyPreviewBill(WxPropertyContract record) { @@ -600,11 +753,13 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService for (int i = 0 ; i < shopIds.size(); i++) { Long shopId = shopIds.get(i); BigDecimal shoprentArea = shopAreaRateMap.get(shopId); - BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxPropertyContract.getRentArea()),wxPropertyContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); - WxShopUsers su = shopUserMap.get(shopId); - String cusName = ""; - if (null != su) { - cusName = su.getName(); + BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxPropertyContract.getRentArea()),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); + String cusName = null; + if (null != shopUserMap) { + WxShopUsers su = shopUserMap.get(shopId); + if (null != su) { + cusName = su.getName(); + } } WxAllBill wxBillDeposit = new WxAllBill(); @@ -613,7 +768,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService wxBillDeposit.setPropertyContractId(wxPropertyContract.getId()); wxBillDeposit.setPay("0"); String needpay = wxPropertyContract.getDeposit(); - wxBillDeposit.setNeedPay(new BigDecimal(needpay).multiply(shoprate).toPlainString()); + wxBillDeposit.setNeedPay(new BigDecimal(needpay).multiply(shoprate).setScale(wxPropertyContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString()); wxBillDeposit.setReceivePay(wxBillDeposit.getNeedPay()); wxBillDeposit.setIsPreview(EnumYesOrNo.NO.getCode()); wxBillDeposit.setCanEdit(EnumYesOrNo.NO.getCode()); @@ -748,7 +903,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); Map resultMap = new HashedMap(); List propertyResultList = new ArrayList(); - List allResultList = new ArrayList(); + List fixedResultList = new ArrayList(); Date endDate = null; if(yearList.size() > 1){ @@ -872,72 +1027,74 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService //设置科目 property.setEnergyFeesId(svo.getFeeStandards().getId()); property.setFeesStandarsId(property.getEnergyFeesId());//合同动态表格需要。 - allResultList.add(property); childList.add(property); } } wxBillProperty.setChildList(childList); //主账单列表 propertyResultList.add(wxBillProperty); - if (new BigDecimal(wxBillProperty.getReceivePay()).compareTo(new BigDecimal(0)) > 0 ) { - allResultList.add(wxBillProperty); - } + } if (null != fixedList && fixedList.size() > 0 ) { for (int i = 0 ; i < fixedList.size(); i ++ ) { WxBillFeesStandardsListVo svo = fixedList.get(i); WxAllBill property = generateBillPropertyByBillStandards(null,wxPayAccountBill,wxPropertyContract,isPreview,user,svo,billcount,shopInfo); - allResultList.add(property); + fixedResultList.add(property); } - } + } //批量生成预账单 - if(saveDb && allResultList.size() > 0 ) { - + if(saveDb) { WxShopUsers suq = new WxShopUsers(); suq.updateTenantInfo(wxPropertyContract); suq.setShopIds(shopIdList); suq.setStatus(EnumShopUsersStatus.LIVE.getCode()); Map shopUserMap = wxShopService.getShopUserMap(suq); - - final IdWorker idWorker = IdWorker.get(); //根据店铺来拆分 List shopAllBillList = new ArrayList(); - for (int i = 0 ; i < allResultList.size(); i++ ) { - WxAllBill rb = allResultList.get(i); - for (int g = 0 ; g < shopIdList.size(); g ++ ){ - WxAllBill rs = new WxAllBill(); - Long sid = shopIdList.get(g); - BigDecimal shoprentArea = shopAreaRateMap.get(sid); - BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxPropertyContract.getRentArea()),wxPropertyContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); - - try { - BeanUtils.copyProperties(rs, rb); - rs.setId(idWorker.nextId()); - rs.setShopId(sid); - rs.setNeedPay(new BigDecimal(rb.getNeedPay()).multiply(shoprate).toPlainString()); - rs.setReceivePay(rs.getNeedPay()); - rs.setShopId(sid); - rs.setRentArea(shoprentArea.toPlainString()); - if (null != shopUserMap ) { - WxShopUsers wsu = shopUserMap.get(sid); - if (null != wsu) { - rs.setCusName(wsu.getName()); - } - }; - shopAllBillList.add(rs); - } catch (IllegalAccessException e) { - logger.error("saveBill error.",e); - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"创建账单失败"); - } catch (InvocationTargetException e) { - logger.error("saveBill error.",e); - throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"创建账单失败"); - } - } + + if (propertyResultList.size() > 0 ) { + for (int i = 0 ; i < propertyResultList.size(); i++ ) { + WxAllBill rb = propertyResultList.get(i); + for (int g = 0 ; g < shopIdList.size(); g ++ ){ + //主物业账单根据店铺拆分 + Long sid = shopIdList.get(g); + WxAllBill rs = new WxAllBill(); + setNewsBills(wxPropertyContract, rs, rb, sid, shopAreaRateMap,shopUserMap); + rs.setVirtualComposeId(rb.getId()); + shopAllBillList.add(rs); + + //其他周期的费用账单也需要拆分,并关联parentBillId + if (null != rb.getChildList() && rb.getChildList().size() > 0) { + for (int h = 0 ; h < rb.getChildList().size(); h++ ) { + WxAllBill ufb = rb.getChildList().get(h); + WxAllBill ufbn = new WxAllBill(); + setNewsBills(wxPropertyContract, ufbn, ufb, sid, shopAreaRateMap,shopUserMap); + ufbn.setParentBillId(rs.getId()); + ufbn.setParentVirtualComposeId(rb.getId()); + shopAllBillList.add(ufbn); + } + } + } + } + } + //一次性费用 + if (fixedResultList.size() > 0 ) { + for (int i = 0 ; i < fixedResultList.size(); i++ ) { + WxAllBill rb = fixedResultList.get(i); + for (int g = 0 ; g < shopIdList.size(); g ++ ){ + Long sid = shopIdList.get(g); + WxAllBill rs = new WxAllBill(); + setNewsBills(wxPropertyContract, rs, rb, sid, shopAreaRateMap,shopUserMap); + shopAllBillList.add(rs); + } + } } - wxAllBillMapper.insertBills(wxPropertyContract.getTenantId() ,shopAllBillList); + if (shopAllBillList.size() > 0 ) { + wxAllBillMapper.insertBills(wxPropertyContract.getTenantId() ,shopAllBillList); + } //for (int i = 0 ; i < resultList.size() ; i++) { // wxBillPropertyMapper.insert(resultList.get(i)); //} @@ -947,6 +1104,33 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService return resultMap; } + private void setNewsBills(WxPropertyContract wxPropertyContract,WxAllBill newBill,WxAllBill oldBill,Long shopId,Map shopAreaRateMap,Map shopUserMap) { + + BigDecimal shoprentArea = shopAreaRateMap.get(shopId); + BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxPropertyContract.getRentArea()),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); + final IdWorker idWorker = IdWorker.get(); + try { + BeanUtils.copyProperties(newBill, oldBill); + newBill.setId(idWorker.nextId()); + newBill.setShopId(shopId); + newBill.setNeedPay(new BigDecimal(oldBill.getNeedPay()).multiply(shoprate).setScale(wxPropertyContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString()); + newBill.setReceivePay(newBill.getNeedPay()); + newBill.setRentArea(shoprentArea.toPlainString()); + if (null != shopUserMap ) { + WxShopUsers wsu = shopUserMap.get(shopId); + if (null != wsu) { + newBill.setCusName(wsu.getName()); + } + }; + } catch (IllegalAccessException e) { + logger.error("saveBill error.",e); + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"创建账单失败"); + } catch (InvocationTargetException e) { + logger.error("saveBill error.",e); + throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"创建账单失败"); + } + } + private WxAllBill generateBillPropertyByBillStandards(WxAllBill wxBillProperty,WxPayAccountBill wxPayAccountBill,WxPropertyContract wxPropertyContract,Integer isPreview,MallUserInfo user,WxBillFeesStandardsListVo svo, Integer billcount,Map shopInfo) { 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 11895b139..19fe6e08d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -29,6 +29,7 @@ import com.iformall.domain.po.WxRentContractRevenueJump; import com.iformall.domain.po.WxRentContractRevenueSales; import com.iformall.domain.po.WxShop; import com.iformall.domain.po.WxShopUsers; +import com.iformall.domain.po.WxShopUsersInfo; import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.BillTimeVo; import com.iformall.domain.vo.RatioVo; @@ -63,6 +64,7 @@ import com.iformall.enums.EnumRentDayPriceCalcute; import com.iformall.enums.EnumRentShopType; import com.iformall.enums.EnumRentStartType; import com.iformall.enums.EnumShopUsersStatus; +import com.iformall.enums.EnumShopUsersType; import com.iformall.enums.EnumTradeDailyDateType; import com.iformall.enums.EnumYesOrNo; import com.iformall.exception.MallinkException; @@ -359,10 +361,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { //查询预账单用于展示 WxAllBill wxBillRent = new WxAllBill(); wxBillRent.setRentContractId(id); - wxBillRent.setSortColumns("starttime asc"); wxBillRent.updateTenantInfo(wxRentContract); wxBillRent.setBillType(EnumBillAllType.RENT.getCode()); - List resultList = wxAllBillMapper.findList(wxBillRent); + List resultList = wxAllBillMapper.findContractSamePeriodSum(wxBillRent); result.put("previewBillRentList",resultList); return result; @@ -930,11 +931,13 @@ public class WxRentContractServiceImpl implements WxRentContractService { for (int i = 0 ; i < shopIdList.size(); i++ ) { Long sid = shopIdList.get(i); BigDecimal shoprentArea = shopAreaRateMap.get(sid); - BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxRentContract.getRentArea()),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); - WxShopUsers su = shopUserMap.get(sid); - String cusName = ""; - if (null != su) { - cusName = su.getName(); + BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxRentContract.getRentArea()),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); + String cusName = null; + if (null != shopUserMap) { + WxShopUsers su = shopUserMap.get(sid); + if (null != su) { + cusName = su.getName(); + } } WxAllBill wxBillDeposit = new WxAllBill(); @@ -954,7 +957,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { // count = wxRentContract.getRentArea(); // } // String needpay = depositFee.calcuteTotalMoney(wxRentContract.getDecimalSize(), null, null, count, true, null, null); - wxBillDeposit.setReceivePay(new BigDecimal(needpay).multiply(shoprate).toPlainString()); + wxBillDeposit.setReceivePay(new BigDecimal(needpay).multiply(shoprate).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString()); wxBillDeposit.setNeedPay(wxBillDeposit.getReceivePay()); //wxBillDeposit.setOwe(needpay); //找到计租方式 @@ -1474,15 +1477,21 @@ public class WxRentContractServiceImpl implements WxRentContractService { WxAllBill rs = new WxAllBill(); Long sid = shopIdList.get(g); BigDecimal shoprentArea = shopAreaRateMap.get(sid); - BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxRentContract.getRentArea()),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); + BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxRentContract.getRentArea()),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); try { BeanUtils.copyProperties(rs, rb); rs.setId(idWorker.nextId()); rs.setShopId(sid); - rs.setNeedPay(new BigDecimal(rb.getNeedPay()).multiply(shoprate).toPlainString()); + rs.setNeedPay(new BigDecimal(rb.getNeedPay()).multiply(shoprate).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString()); rs.setReceivePay(rs.getNeedPay()); rs.setShopId(sid); rs.setRentArea(shoprentArea.toPlainString()); + if (StringUtils.isNotBlank(rb.getBussinessManageFeeNeedPay())) { + rs.setBussinessManageFeeNeedPay(new BigDecimal(rb.getBussinessManageFeeNeedPay()).multiply(shoprate).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString()); + } + if (StringUtils.isNotBlank(rb.getOperatingManageFeeNeedPay())) { + rs.setOperatingManageFeeNeedPay(new BigDecimal(rb.getOperatingManageFeeNeedPay()).multiply(shoprate).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString()); + } if (null != shopUserMap ) { WxShopUsers wsu = shopUserMap.get(sid); if (null != wsu) { @@ -1508,12 +1517,12 @@ public class WxRentContractServiceImpl implements WxRentContractService { WxAllBill rs = new WxAllBill(); Long sid = shopIdList.get(g); BigDecimal shoprentArea = shopAreaRateMap.get(sid); - BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxRentContract.getRentArea()),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); + BigDecimal shoprate = shoprentArea.divide(new BigDecimal(wxRentContract.getRentArea()),Constant.default_long_decimal_size,BigDecimal.ROUND_HALF_UP); try { BeanUtils.copyProperties(rs, rb); rs.setId(idWorker.nextId()); rs.setShopId(sid); - rs.setNeedPay(new BigDecimal(rb.getNeedPay()).multiply(shoprate).toPlainString()); + rs.setNeedPay(new BigDecimal(rb.getNeedPay()).multiply(shoprate).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).toPlainString()); rs.setReceivePay(rs.getNeedPay()); rs.setShopId(sid); rs.setRentArea(shoprentArea.toPlainString()); @@ -1695,8 +1704,25 @@ public class WxRentContractServiceImpl implements WxRentContractService { @Override public PageInfo getRentContractList(WxRentContract rentContract, Integer pageIndex, Integer pageSize) { - if (StringUtils.isNoneBlank(rentContract.getFloorForRule())) { - List contractIds = wxAgileContractService.findBuildingFloorContractIds(rentContract, rentContract.getFloorForRule(), null, null, null, 0); + if (StringUtils.isNotBlank(rentContract.getFloorForRule()) || StringUtils.isNotBlank(rentContract.getQueryShopIdStr())) { + List shopIdList = null; + if (StringUtils.isNotBlank(rentContract.getQueryShopIdStr())) { + String[] qsids = rentContract.getQueryShopIdStr().split(","); + if (null != qsids && qsids.length > 0 ) { + shopIdList = new ArrayList(); + for (int i = 0 ; i < qsids.length ; i ++) { + String qsid = qsids[i]; + if (StringUtils.isNotBlank(qsid)) { + shopIdList.add(Long.parseLong(qsid)); + } + } + if (shopIdList.size() <= 0 ) { + shopIdList = null; + } + } + } + + List contractIds = wxAgileContractService.findBuildingFloorContractIds(rentContract, rentContract.getFloorForRule(), null, null, shopIdList, 0); //List mids = wxMerchantService.getFloorBuildMerchantIds(rentContract, rentContract.getFloorForRule() , null, null,rentContract.getShopTypeForRule(), 0, 0,null); if (null == contractIds || contractIds.size() <= 0 ) { rentContract.setId(-1L); @@ -1704,10 +1730,68 @@ public class WxRentContractServiceImpl implements WxRentContractService { rentContract.setIds(contractIds); } } + //根据客户名称查询 + if (StringUtils.isNotBlank(rentContract.getMerchantName())) { + WxContractCustomers ccq = new WxContractCustomers(); + ccq.updateTenantInfo(rentContract); + ccq.setName(rentContract.getMerchantName()); + List customersIdList = wxContractCustomersMapper.findIdList(ccq); + if (null != customersIdList && customersIdList.size() > 0 ) { + rentContract.setCustomersIdList(customersIdList); + }else { + rentContract.setId(-1L); + } + } + //PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxRentContractMapper.getRentContractList(rentContract)); PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxRentContractMapper.findList(rentContract)); + if (null != pageInfo && null != pageInfo.getList()) { + List customersIdList = new ArrayList(); + for (int i = 0 ; i < pageInfo.getList().size(); i ++ ){ + WxRentContract contract = pageInfo.getList().get(i); + if (null != contract.getCustomersId()) { + customersIdList.add(contract.getCustomersId()); + } + } + + Map customersMap = getContractCustomersMap(rentContract,customersIdList); + + for (int i = 0 ; i < pageInfo.getList().size(); i ++ ) { + WxRentContract contract = pageInfo.getList().get(i); + String merchantName = ""; + if (null != customersMap && null != contract.getCustomersId()) { + WxContractCustomers cc = customersMap.get(contract.getCustomersId()); + if (null != cc) { + merchantName = merchantName + cc.getName(); + } + } + contract.setMerchantName(merchantName); + } + + } return pageInfo; } + + private Map getContractCustomersMap(TenantEntity tenantEntity,List customerIds) { + if (null == customerIds || customerIds.size() <= 0 ) { + return null; + } + WxContractCustomers ccq = new WxContractCustomers(); + ccq.updateTenantInfo(tenantEntity); + ccq.setIds(customerIds); + List cclist = wxContractCustomersMapper.findList(ccq); + if (null != cclist && cclist.size() > 0 ){ + Map map = new HashMap(); + for (int i = 0 ; i < cclist.size() ; i ++ ) { + WxContractCustomers cc = cclist.get(i); + if (null != cc) { + map.put(cc.getId(),cc); + } + } + return map; + } + return null; + } @Override @Transactional(rollbackFor = {Exception.class}) @@ -1747,6 +1831,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { } @Override + @Transactional(rollbackFor = {Exception.class}) public ResultData updateRentContractStatus(Long id,boolean buildProperyBill) { if (id == null) { return new ResultData(ErrorCode.SYS_PARAMETER_ERROR); @@ -1778,6 +1863,12 @@ public class WxRentContractServiceImpl implements WxRentContractService { customers.setUpdateDate(new Date()); wxContractCustomersMapper.updateById(customers); + //把customers写入到wxShopUser + String cusName = castCustomersToShopUsers(customers,record.shopIdsByRentInfo()); + + //如果合同的账单cusName为空的话,则设置为customers name + handleContractBillCusName(record,cusName); + //EventUtil.publistRentEvent(this, wxRentContract); //建立账单 //自定义账单无单价,为能生成账单,设置该值 @@ -1817,6 +1908,69 @@ public class WxRentContractServiceImpl implements WxRentContractService { return new ResultData(Result.SUCCESS, "操作成功"); } + + public String castCustomersToShopUsers(WxContractCustomers customers,List shopIdList) { + WxShopUsersInfo suiq = new WxShopUsersInfo(); + suiq.updateTenantInfo(customers); + suiq.setPrincipalType(customers.getPrincipalType()); + suiq.setName(customers.getName()); + suiq.setPhone(customers.getPhone()); + List ids = wxShopService.getUserInfoList(suiq); + Long infoId = null; + String cusName = null; + if (null == ids || ids.size() <= 0 ) { + WxShopUsersInfo sui = new WxShopUsersInfo(); + sui.updateTenantInfo(customers); + sui.setPrincipalType(customers.getPrincipalType()); + sui.setName(customers.getName()); + sui.setPhone(customers.getPhone()); + sui.setLegalPerson(customers.getLegalPerson()); + sui.setIdNumber(customers.getIdNumber()); + sui.setSex(customers.getSex()); + sui.setLinkPerson(customers.getLinkPerson()); + sui.setCreateContractCustomerId(customers.getId()); + wxShopService.saveOrUpdateShopUsersInfo(sui); + infoId = sui.getId(); + cusName = customers.getName(); + }else { + infoId = ids.get(0).getId(); + cusName = ids.get(0).getName(); + } + + for (int i = 0 ; i < shopIdList.size(); i++) { + Long shopId = shopIdList.get(i); + //查询这个infoId是不是当前的租户 + WxShopUsers suq = new WxShopUsers(); + suq.updateTenantInfo(customers); + suq.setShopId(shopId); + suq.setInfoId(infoId); + suq.setStatus(EnumShopUsersStatus.LIVE.getCode()); + List ulist = wxShopService.getShopUsersList(suq); + if (null != ulist && ulist.size() > 0 ) { + //WxShopUsers su = ulist.get(0); + }else { + //先把当前的租户变更掉 + wxShopService.updateRentShopUsersOld(customers,shopId); + //新增租户 + WxShopUsers su = new WxShopUsers(); + su.updateTenantInfo(customers); + su.setShopId(shopId); + su.setInfoId(infoId); + su.setType(EnumShopUsersType.RENTER.getCode()); + su.setStatus(EnumShopUsersStatus.LIVE.getCode()); + wxShopService.saveOrUpdateShopUsers(su); + } + } + return cusName; + } + + public void handleContractBillCusName(WxRentContract record,String cusName) { + WxAllBill bill = new WxAllBill(); + bill.updateTenantInfo(record); + bill.setCusName(cusName); + bill.setRentContractId(record.getId()); + wxAllBillMapper.updateContractCusName(bill); + } @Override public void updatePropertyPreviewBill(WxRentContract record) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentPropertyContractServiceImpl.java index 49a07f3f1..cb8e171b3 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentPropertyContractServiceImpl.java @@ -4,14 +4,17 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.iformall.common.ResultData; import com.iformall.domain.po.WxAllBill; +import com.iformall.domain.po.WxContractCustomers; import com.iformall.domain.po.WxFlowRecord; import com.iformall.domain.po.WxPropertyContract; import com.iformall.domain.po.WxRentContract; +import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.vo.WxRentPropertyContractVo; import com.iformall.enums.EnumContract; import com.iformall.enums.EnumContractOperationType; import com.iformall.enums.EnumContractType; import com.iformall.enums.EnumRentShopType; +import com.iformall.mapper.WxContractCustomersMapper; import com.iformall.mapper.WxPropertyContractMapper; import com.iformall.mapper.WxRentContractMapper; import com.iformall.service.WxAgileContractService; @@ -22,6 +25,7 @@ import com.iformall.service.WxRentContractService; import com.iformall.service.WxRentPropertyContractService; import com.iformall.service.WxShopService; +import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -45,6 +49,9 @@ public class WxRentPropertyContractServiceImpl implements WxRentPropertyContract @Autowired WxPropertyContractMapper wxPropertyContractMapper; + + @Autowired + WxContractCustomersMapper wxContractCustomersMapper; @Autowired WxPropertyContractService wxPropertyContractService; @@ -65,13 +72,90 @@ public class WxRentPropertyContractServiceImpl implements WxRentPropertyContract @Override public PageInfo listContractVo(WxRentPropertyContractVo record, Integer pageIndex, Integer pageSize) { - List ids = wxAgileContractService.findBuildingFloorContractIds(record, record.getFloorForRule(), null, null, null, 0); - if (null == ids || ids.size() <= 0 ) { - record.setId(-1L); - }else { - record.setIds(ids); + if (StringUtils.isNotBlank(record.getFloorForRule()) || StringUtils.isNotBlank(record.getQueryShopIdStr())) { + List shopIdList = null; + if (StringUtils.isNotBlank(record.getQueryShopIdStr())) { + String[] qsids = record.getQueryShopIdStr().split(","); + if (null != qsids && qsids.length > 0 ) { + shopIdList = new ArrayList(); + for (int i = 0 ; i < qsids.length ; i ++) { + String qsid = qsids[i]; + if (StringUtils.isNotBlank(qsid)) { + shopIdList.add(Long.parseLong(qsid)); + } + } + if (shopIdList.size() <= 0 ) { + shopIdList = null; + } + } + } + + List contractIds = wxAgileContractService.findBuildingFloorContractIds(record, record.getFloorForRule(), null, null, shopIdList, 0); + //List mids = wxMerchantService.getFloorBuildMerchantIds(rentContract, rentContract.getFloorForRule() , null, null,rentContract.getShopTypeForRule(), 0, 0,null); + if (null == contractIds || contractIds.size() <= 0 ) { + record.setId(-1L); + } else { + record.setIds(contractIds); + } + } + //根据客户名称查询 + if (StringUtils.isNotBlank(record.getMerchantName())) { + WxContractCustomers ccq = new WxContractCustomers(); + ccq.updateTenantInfo(record); + ccq.setName(record.getMerchantName()); + List customersIdList = wxContractCustomersMapper.findIdList(ccq); + if (null != customersIdList && customersIdList.size() > 0 ) { + record.setCustomersIdList(customersIdList); + }else { + record.setId(-1L); + } + } + + PageInfo pageInfo = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxRentContractMapper.listContractVo(record)); + if (null != pageInfo && null != pageInfo.getList() && pageInfo.getList().size() > 0 ) { + List customersIdList = new ArrayList(); + for (int i = 0 ; i < pageInfo.getList().size(); i ++ ){ + WxRentPropertyContractVo contract = pageInfo.getList().get(i); + if (null != contract.getCustomersId()) { + customersIdList.add(contract.getCustomersId()); + } + } + + Map customersMap = getContractCustomersMap(record,customersIdList); + + for (int i = 0 ; i < pageInfo.getList().size(); i ++ ) { + WxRentPropertyContractVo contract = pageInfo.getList().get(i); + String merchantName = ""; + if (null != customersMap && null != contract.getCustomersId()) { + WxContractCustomers cc = customersMap.get(contract.getCustomersId()); + if (null != cc) { + merchantName = merchantName + cc.getName(); + } + } + contract.setMerchantName(merchantName); + } + } + + + return pageInfo; + } + + private Map getContractCustomersMap(TenantEntity tenantEntity,List customerIds) { + WxContractCustomers ccq = new WxContractCustomers(); + ccq.updateTenantInfo(tenantEntity); + ccq.setIds(customerIds); + List cclist = wxContractCustomersMapper.findList(ccq); + if (null != cclist && cclist.size() > 0 ){ + Map map = new HashMap(); + for (int i = 0 ; i < cclist.size() ; i ++ ) { + WxContractCustomers cc = cclist.get(i); + if (null != cc) { + map.put(cc.getId(),cc); + } + } + return map; } - return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxRentContractMapper.listContractVo(record)); + return null; } @Override diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java index fb097b037..e9422c7c2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxShopServiceImpl.java @@ -132,25 +132,26 @@ public class WxShopServiceImpl implements WxShopService { suq.setShopIds(shopIdList); suq.setStatus(EnumShopUsersStatus.LIVE.getCode()); Map shopUserMap = this.getShopUserMap(suq); - if (null != shopUserMap) { - for (int i = 0 ; i < page.getList().size(); i ++) { - WxShop shop = page.getList().get(i); + + for (int i = 0 ; i < page.getList().size(); i ++) { + WxShop shop = page.getList().get(i); + if (null != shopUserMap) { WxShopUsers su = shopUserMap.get(shop.getId()); if (null != su) { shop.setShopUserType(su.getType()); shop.setShopUserTypeName(su.getTypeName()); shop.setShopUserName(su.getName()); } - if (null != buildingMap) { - String buildingName = buildingMap.get(shop.getBuilding()); - shop.setBuildingName(buildingName); - } - if (null != floorMap) { - String floorName = floorMap.get(shop.getFloor()); - shop.setFloorName(floorName); - } - } - } + } + if (null != buildingMap) { + String buildingName = buildingMap.get(shop.getBuilding()); + shop.setBuildingName(buildingName); + } + if (null != floorMap) { + String floorName = floorMap.get(shop.getFloor()); + shop.setFloorName(floorName); + } + } } return page; } @@ -999,6 +1000,12 @@ public class WxShopServiceImpl implements WxShopService { return null; } + @Override + public List getShopUsersList(WxShopUsers wxShopUsers) { + List shopUserList = wxShopUsersMapper.findList(wxShopUsers); + return shopUserList; + } + private void setShopUserProperty(WxShopUsers sus) { WxShopUsersInfo su = wxShopUsersInfoMapper.selectById(sus.getInfoId()); if (null != su) { @@ -1067,6 +1074,15 @@ public class WxShopServiceImpl implements WxShopService { wxShopUsersMapper.updateById(wxShopUsers); } + @Override + public void updateRentShopUsersOld(TenantEntity tenantEntity,Long shopId) { + WxShopUsers wxShopUsers = new WxShopUsers(); + wxShopUsers.setShopId(shopId); + wxShopUsers.setUpdateDate(new Date()); + wxShopUsers.setType(EnumShopUsersType.RENTER.getCode()); + wxShopUsersMapper.updateShopOld(wxShopUsers); + } + @Override public void deleteShopUsers(WxShopUsers wxShopUsers) { wxShopUsersMapper.deleteById(wxShopUsers.getId()); @@ -1095,6 +1111,21 @@ public class WxShopServiceImpl implements WxShopService { PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxShopUsersInfoMapper.findList(record)); return page; } + + @Override + public void saveOrUpdateShopUsersInfo(WxShopUsersInfo record) { + if (record.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + Date date = new Date(); + record.setUpdateDate(date); + record.setCreateDate(date); + wxShopUsersInfoMapper.insert(record); + }else { + record.setUpdateDate(new Date()); + wxShopUsersInfoMapper.updateById(record); + } + } @Override public void saveOrUpdateShopUsersPerson(WxShopUsersPerson record) { @@ -1118,6 +1149,11 @@ public class WxShopServiceImpl implements WxShopService { public void deleteShopUsersPerson(WxShopUsersPerson record) { wxShopUsersPersonMapper.deleteById(record.getId()); } + + @Override + public List getUserInfoList(WxShopUsersInfo wxShopUsersInfo) { + return wxShopUsersInfoMapper.findList(wxShopUsersInfo); + } @Override public List getUserInfoIds(WxShopUsersInfo wxShopUsersInfo) { diff --git a/mallinkService/src/main/resources/mapper/WxAllBillMapper.xml b/mallinkService/src/main/resources/mapper/WxAllBillMapper.xml index dd95db80b..27ad222c2 100644 --- a/mallinkService/src/main/resources/mapper/WxAllBillMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxAllBillMapper.xml @@ -40,6 +40,8 @@ + + @@ -52,8 +54,8 @@ `id`,`tenant_id`,`parent_tenant_id`,`shop_id`,`createtime`,`create_by`,`create_by_name`,`updatetime`,`update_by`,`update_by_name`, `price_detail`,`need_pay`,`receive_pay`,`pay`,`bill_type`,`pay_way`,`pay_date`,`set_off`,`use_money`,`starttime`,`endtime`,`status`,`energy_fees_id`,`return_pay`, `bill_remark`,`last_owe_call_time`,`last_owe_call_user`,`bussiness_manage_fee_need_pay`,`operating_manage_fee_need_pay`,`receive_date`,`period`, - `is_preview`,`shop_info`,`rent_contract_id`,`rent_contract_agile_fees_type`,`property_contract_id`,`parent_bill_id`,`energy_reading_calcuteId`,`energy_reading_id`,`extra_create_from`,`rent_area`, - `can_edit`,`cus_name` + `is_preview`,`shop_info`,`rent_contract_id`,`rent_contract_agile_fees_type`,`property_contract_id`,`parent_bill_id`,`virtual_compose_id`,`parent_virtual_compose_id`, + `energy_reading_calcuteId`,`energy_reading_id`,`extra_create_from`,`rent_area`,`can_edit`,`cus_name` @@ -71,6 +73,8 @@ and `rent_contract_agile_fees_type` = #{rentContractAgileFeesType} and `property_contract_id` = #{propertyContractId} and `parent_bill_id` = #{parentBillId} + and `virtual_compose_id` = #{virtualComposeId} + and `parent_virtual_compose_id` = #{parentVirtualComposeId} and `is_preview` = #{isPreview} and `starttime` >= #{starttime} and `endtime` <= #{endtime} @@ -79,7 +83,7 @@ and `endtime` = #{endtimeEqual} and `extra_create_from` = #{extraCreateFrom} and `extra_create_from` is null - and bill_type = 6 and IFNULL(`pay`,'0') - IFNULL(`use_money`,'0') > 0 + and bill_type = 6 and IFNULL(`pay`,'0') -IFNULL(`return_pay`,'0') - IFNULL(`use_money`,'0') > 0 and `can_edit` = #{canEdit} and date_format(starttime,'%Y-%m') <= #{month} and date_format(endtime,'%Y-%m') >= #{month} @@ -228,8 +232,14 @@ sum(CAST(ifnull(set_off,'0') AS DECIMAL(20,2))) set_off, sum(CAST(ifnull(use_money,'0') AS DECIMAL(20,2))) use_money, sum(CAST(ifnull(return_pay,'0') AS DECIMAL(20,2))) return_pay, + sum(CAST(ifnull(bussiness_manage_fee_need_pay,'0') AS DECIMAL(20,2))) bussiness_manage_fee_need_pay, + sum(CAST(ifnull(operating_manage_fee_need_pay,'0') AS DECIMAL(20,2))) operating_manage_fee_need_pay, starttime, - endtime + endtime, + receive_date, + virtual_compose_id, + parent_virtual_compose_id, + energy_fees_id from wx_all_bill group by starttime,endtime @@ -387,7 +397,8 @@ #{item.starttime},#{item.endtime},#{item.status},#{item.energyFeesId},#{item.returnPay},#{item.billRemark}, #{item.lastOweCallTime},#{item.lastOweCallUser},#{item.bussinessManageFeeNeedPay},#{item.operatingManageFeeNeedPay}, #{item.receiveDate},#{item.period},#{item.isPreview},#{item.shopInfo},#{item.rentContractId},#{item.rentContractAgileFeesType},#{item.propertyContractId}, - #{item.parentBillId},#{item.energyReadingCalcuteId},#{item.energyReadingId},#{item.extraCreateFrom},#{item.rentArea},#{item.canEdit},#{item.cusName} + #{item.parentBillId},#{item.virtualComposeId},#{item.parentVirtualComposeId},#{item.energyReadingCalcuteId}, + #{item.energyReadingId},#{item.extraCreateFrom},#{item.rentArea},#{item.canEdit},#{item.cusName} ) @@ -402,5 +413,15 @@ and pay <= 0 and IFNULL(`set_off`,'0') <= 0 and IFNULL(`return_pay`,'0') <= 0 and IFNULL(`use_money`,'0') <= 0 + + update wx_all_bill set cus_name = #{cusName} where cus_name is null + + and rent_contract_id = #{rentContractId} + + + and property_contract_id = #{propertyContractId} + + + diff --git a/mallinkService/src/main/resources/mapper/WxContractCustomersMapper.xml b/mallinkService/src/main/resources/mapper/WxContractCustomersMapper.xml index 585204cc9..7d89d6883 100644 --- a/mallinkService/src/main/resources/mapper/WxContractCustomersMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxContractCustomersMapper.xml @@ -76,6 +76,12 @@ + + - select rc.id,rc.tenant_id,rc.parent_tenant_id,rc.id as rent_id, pc.id as property_id, rc.rental_start_date,rc.rental_end_date,rc.`status`, + select rc.id,rc.tenant_id,rc.parent_tenant_id,rc.customers_id,rc.id as rent_id, pc.id as property_id, rc.rental_start_date,rc.rental_end_date,rc.`status`, rc.price as rent_price,rc.contract_number,rc.type,rc.apply_status,rc.price_detail,rc.revenue_fixed_rent_price,rc.revenue_rent_price, rc.rent_info,pc.price as property_price,pc.`status` as property_status, rc.price_unit as rent_price_unit,pc.price_unit as property_price_unit,rc.day_price_calcute,rc.free_period_remark, @@ -299,6 +307,13 @@ and pc.`id` = #{propertyId} + + and rc.customers_id in + + #{cusItem} + + +