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 443ff6b85..31515a8f1 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java @@ -1,15 +1,22 @@ package com.iformall.controller.market; +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import com.github.pagehelper.PageInfo; +import com.iformall.common.Result; import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.po.WxBillPayWay; +import com.iformall.domain.po.WxFinanceAdvanceType; import com.iformall.domain.po.base.BaseEntity; +import com.iformall.enums.EnumFinanceType; import com.iformall.service.WxFinanceService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import java.math.BigDecimal; +import java.util.HashMap; +import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -29,6 +36,17 @@ public class WxFinanceController extends BaseController { @Autowired private WxFinanceService wxFinanceService; + @ApiOperation("财务类型") + @GetMapping("financeTypeList") + public ResultData financeTypeList() { + Map retMap = new HashMap(); + for (EnumFinanceType mem : EnumFinanceType.values()) { + retMap.put(mem.getCode(), mem.getMessage()); + } + return new ResultData(retMap); + } + + @ApiOperation("支付方式列表") @GetMapping("payWayList") @ApiImplicitParams({ @@ -57,4 +75,39 @@ public class WxFinanceController extends BaseController { return new ResultData(); } + @ApiOperation("预收类型列表") + @GetMapping("advanceTypeList") + @ApiImplicitParams({ + @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), + @ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true), + }) + public ResultData advanceTypeList(@ModelAttribute WxFinanceAdvanceType record, Integer pageNum, Integer pageSize) { + record.updateTenantInfo(getTenantInfo()); + record.setSortColumns(BaseEntity.SortField.CreateTime_DESC); + PageInfo page = wxFinanceService.advanceTypeListAsPage(record, pageNum, pageSize); + return new ResultData(page); + } + + @ApiOperation("能源表新增修改") + @PostMapping("saveAdvanceType") + public ResultData saveAdvanceType(@RequestBody WxFinanceAdvanceType record) { + record.updateTenantInfo(getTenantInfo()); + if (new BigDecimal(record.getRate()).compareTo(new BigDecimal(100)) > 0 ) { + return new ResultData(Result.ERROR,"冲抵比例不能超过100"); + } + if (StringUtils.isBlank(record.getFinanceTypes())) { + return new ResultData(Result.ERROR,"清选择冲抵类型"); + } + record.setFinanceTypes(","+record.getFinanceTypes()+","); + wxFinanceService.saveOrUpdateAdvanceType(record); + return new ResultData(); + } + + @PostMapping("advanceTypeUpdateIsDel") + public ResultData advanceTypeUpdateIsDel(@RequestBody WxFinanceAdvanceType record) { + record.updateTenantInfo(getTenantInfo()); + wxFinanceService.updateAdvanceTypeIsDel(record); + return new ResultData(); + } + } diff --git a/mallinkAdmin/src/main/resources/db/migration/V202407018.sql b/mallinkAdmin/src/main/resources/db/migration/V202407018.sql index 0c68ab2d8..49a25f51d 100644 --- a/mallinkAdmin/src/main/resources/db/migration/V202407018.sql +++ b/mallinkAdmin/src/main/resources/db/migration/V202407018.sql @@ -1482,4 +1482,18 @@ INSERT INTO wx_bill_pay_way_89 (id,tenant_id,parent_tenant_id,create_time,update VALUES (1,'789',NULL,NOW(),NOW(),0,'商户小程序',1), (2,'789',NULL,NOW(),NOW(),0,'系统自动结清',1); +CREATE TABLE `wx_finance_advance_type` ( + `id` bigint(20) NOT NULL COMMENT '主键ID', + `tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '租户ID', + `parent_tenant_id` varchar(5) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '父租户ID', + `create_time` timestamp NULL DEFAULT NULL, + `update_time` timestamp NULL DEFAULT NULL, + `is_del` int(1) NOT NULL DEFAULT '0', + `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '表名称', + `rate` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '最高抵扣比例', + `finance_types` varchar(300) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '可抵扣类型', + PRIMARY KEY (`id`), + UNIQUE KEY `id_UNIQUE` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='能耗表'; + diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceAdvanceType.java b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceAdvanceType.java new file mode 100644 index 000000000..b8287587f --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxFinanceAdvanceType.java @@ -0,0 +1,77 @@ +package com.iformall.domain.po; + +import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumFinanceType; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + */ +@TableName(value = "wx_finance_advance_type") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class WxFinanceAdvanceType extends TenantEntity { + + private static final long serialVersionUID = 7009117540201976664L; + + @io.swagger.annotations.ApiModelProperty(value="id",name="id") + private Long id; + + @io.swagger.annotations.ApiModelProperty(value="name",name="name") + private String name; + + @io.swagger.annotations.ApiModelProperty(value="createTime",name="createTime") + private Date createTime; + + @io.swagger.annotations.ApiModelProperty(value="updateTime",name="updateTime") + private Date updateTime; + + @io.swagger.annotations.ApiModelProperty(value = "isDel", name = "isDel") + private Integer isDel; + + @io.swagger.annotations.ApiModelProperty(value="冲抵比例",name="rate") + private String rate; + + @io.swagger.annotations.ApiModelProperty(value = "冲抵类型,多个串EnumFinanceType", name = "financeTypes") + private String financeTypes; + @TableField(exist = false) + private Integer financeTypeQuery; + @TableField(exist = false) + private List financeTypesList; + @TableField(exist = false) + private String financeTypesName; + public List getFinanceTypesList() { + if (StringUtils.isNotBlank(financeTypes)) { + String[] fs = financeTypes.split(","); + if (null != fs && fs.length > 0 ) { + List retList = new ArrayList(); + for (int i = 0 ; i < fs.length ; i ++) { + String _fs = fs[i]; + if (StringUtils.isNotBlank(_fs)) { + EnumFinanceType eft = EnumFinanceType.getEnum(Integer.parseInt(_fs)); + if (null != eft) { + retList.add(eft); + financeTypesName = financeTypesName+","+eft.getMessage(); + } + } + } + if (retList.size() <= 0 ) { + return null; + } + return retList; + } + } + return null; + } + +} diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumFinanceType.java b/mallinkService/src/main/java/com/iformall/enums/EnumFinanceType.java new file mode 100644 index 000000000..90d79a27c --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/enums/EnumFinanceType.java @@ -0,0 +1,49 @@ +package com.iformall.enums; + + +public enum EnumFinanceType { + + RENT(1,"租金",EnumBillAllType.RENT.getCode()), + RENT_BUSSINESS_MANAGE(11,"商业管理费",EnumBillAllType.RENT_BUSSINESS_MANAGE.getCode()), + RENT_OPERATION_MANAGE(12,"运营管理费",EnumBillAllType.RENT_OPERATION_MANAGE.getCode()), + RENT_DEPOSIT(13,"租赁押金",EnumBillAllType.RENT_DEPOSIT.getCode()), + PROPERTY(2,"物业费",EnumBillAllType.PROPERTY.getCode()), + PROPERTY_DEPOSIT(21,"物业押金",EnumBillAllType.PROPERTY_DEPOSIT.getCode()), + WATER(3, "水费",EnumBillAllType.DAILY.getCode()), + POWER(4, "电费",EnumBillAllType.DAILY.getCode()), + GAS(5, "燃气费",EnumBillAllType.DAILY.getCode()), + OTHER(6, "其他费用",EnumBillAllType.OTHER.getCode()), + OTHER_DEPOSIT(7, "其他押金",EnumBillAllType.OTHER_DEPOSIT.getCode()) + ; + + public static EnumFinanceType getEnum(Integer code) { + for (EnumFinanceType value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + private Integer billType; + + EnumFinanceType(Integer code, String message,Integer billType) { + this.code = code; + this.message = message; + this.billType = billType; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } + + public Integer getBillType() { + return billType; + } +} diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxFinanceAdvanceTypeMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxFinanceAdvanceTypeMapper.java new file mode 100644 index 000000000..7119bd55a --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/mapper/WxFinanceAdvanceTypeMapper.java @@ -0,0 +1,20 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.WxEnergyMeter; +import com.iformall.domain.po.WxFinanceAdvanceType; + +import org.apache.ibatis.annotations.Param; +import java.util.List; + +/** + */ +public interface WxFinanceAdvanceTypeMapper extends CommonMapper { + + List findList(WxFinanceAdvanceType wxBillRent); + + WxFinanceAdvanceType selectById(@Param("id")Long id,@Param("tenantId")String tenantId); + + void setIsDel(@Param("id")Long id,@Param("tenantId")String tenantId,@Param("isDel")Integer isDel); + +} diff --git a/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java b/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java index d2848521f..214b7eadb 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxFinanceService.java @@ -3,6 +3,7 @@ package com.iformall.service; import java.util.Map; import com.github.pagehelper.PageInfo; import com.iformall.domain.po.WxBillPayWay; +import com.iformall.domain.po.WxFinanceAdvanceType; import com.iformall.domain.po.base.TenantEntity; /** */ @@ -15,4 +16,10 @@ public interface WxFinanceService { void updatePayWayIsDel(WxBillPayWay record); Map getPayWayMap(WxBillPayWay record); void payWayInit(TenantEntity tenantInfo); + + //预收款类型 + PageInfo advanceTypeListAsPage(WxFinanceAdvanceType record, Integer pageIndex, Integer pageSize); + WxFinanceAdvanceType getAdvanceTypeById(TenantEntity tenantEntity,Long id); + void saveOrUpdateAdvanceType(WxFinanceAdvanceType record); + void updateAdvanceTypeIsDel(WxFinanceAdvanceType record); } 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 bad42dd07..70373bb7a 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java @@ -26,6 +26,8 @@ public class WxFinanceServiceImpl implements WxFinanceService { @Autowired WxBillPayWayMapper wxBillPayWayMapper; + @Autowired + WxFinanceAdvanceTypeMapper wxFinanceAdvanceTypeMapper; @Override public PageInfo payWayListAsPage(WxBillPayWay record, Integer pageIndex, Integer pageSize) { @@ -101,4 +103,41 @@ public class WxFinanceServiceImpl implements WxFinanceService { wxBillPayWayMapper.insert(payway2); } + @Override + public PageInfo advanceTypeListAsPage(WxFinanceAdvanceType record, Integer pageIndex, + Integer pageSize) { + PageInfo page = PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxFinanceAdvanceTypeMapper.findList(record)); + return page; + } + + @Override + public WxFinanceAdvanceType getAdvanceTypeById(TenantEntity tenantEntity, Long id) { + return wxFinanceAdvanceTypeMapper.selectById(id, tenantEntity.getTenantId()); + } + + @Override + public void saveOrUpdateAdvanceType(WxFinanceAdvanceType record) { + Date date = new Date(); + if (record.getId() == null) { + final IdWorker idWorker = IdWorker.get(); + record.setId(idWorker.nextId()); + record.setCreateTime(date); + record.setUpdateTime(date); + try { + wxFinanceAdvanceTypeMapper.insert(record); + } catch (Exception e) { + logger.error("保存失败,e:" + e.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); + } + } else { + record.setUpdateTime(date); + wxFinanceAdvanceTypeMapper.updateById(record); + } + } + + @Override + public void updateAdvanceTypeIsDel(WxFinanceAdvanceType record) { + wxFinanceAdvanceTypeMapper.setIsDel(record.getId(), record.getTenantId(), record.getIsDel()); + } + } diff --git a/mallinkService/src/main/resources/mapper/WxFinanceAdvanceTypeMapper.xml b/mallinkService/src/main/resources/mapper/WxFinanceAdvanceTypeMapper.xml new file mode 100644 index 000000000..d48eb63fa --- /dev/null +++ b/mallinkService/src/main/resources/mapper/WxFinanceAdvanceTypeMapper.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + `id`,`tenant_id`,`parent_tenant_id`,`create_time`,`update_time`,`is_del`,`name`,`rate`,`finance_types` + + + + where 1=1 + and `id` = #{id} + + and `tenant_id` = #{tenantId} + + + and `parent_tenant_id` = #{parentTenantId} + + and `is_del` = #{isDel} + and `finance_types` like concat('%,', #{financeTypeQuery},',%') + and name like concat('%', #{name},'%') + + and id in + + #{idItem} + + + order by ${sortColumns} + + + + + + + + update wx_finance_advance_type set is_del = #{isDel} where id = #{id} and `tenant_id` = #{tenantId} + + + +