diff --git a/README.en.md b/README.en.md
new file mode 100644
index 0000000..657e505
--- /dev/null
+++ b/README.en.md
@@ -0,0 +1,36 @@
+# SaasICS
+
+#### Description
+{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
+
+#### Software Architecture
+Software architecture description
+
+#### Installation
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Instructions
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### Contribution
+
+1. Fork the repository
+2. Create Feat_xxx branch
+3. Commit your code
+4. Create Pull Request
+
+
+#### Gitee Feature
+
+1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
+2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
+3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
+4. The most valuable open source project [GVP](https://gitee.com/gvp)
+5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
+6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e2f642d
--- /dev/null
+++ b/README.md
@@ -0,0 +1,37 @@
+# SaasICS
+
+#### 介绍
+
+#### 软件架构
+软件架构说明
+
+
+#### 安装教程
+
+1. jdk11 centos 环境图形验证码问题
+ yum install -y fontconfig
+2. xxxx
+3. xxxx
+
+#### 使用说明
+
+1. xxxx
+2. xxxx
+3. xxxx
+
+#### 参与贡献
+
+1. Fork 本仓库
+2. 新建 Feat_xxx 分支
+3. 提交代码
+4. 新建 Pull Request
+
+
+#### 特技
+
+1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
+2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
+3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
+4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
+5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
+6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/ics-admin/pom.xml b/ics-admin/pom.xml
new file mode 100644
index 0000000..41ebfb0
--- /dev/null
+++ b/ics-admin/pom.xml
@@ -0,0 +1,60 @@
+
+
+
+ saas-ics
+ com.ics
+ 1.0.0-SNAPSHOT
+
+ 4.0.0
+
+ ics-admin
+
+
+
+
+ org.apache.velocity
+ velocity
+
+
+
+
+ com.ics
+ ics-system
+
+
+
+ com.alibaba
+ easyexcel
+
+
+ org.jxls
+ jxls
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+ org.jxls
+ jxls-poi
+
+
+ org.apache.poi
+ poi
+
+
+ org.apache.poi
+ poi-ooxml
+
+
+ org.apache.poi
+ poi-ooxml-schemas
+
+
+
+
+
\ No newline at end of file
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/ActivityController.java b/ics-admin/src/main/java/com/ics/admin/controller/ActivityController.java
new file mode 100644
index 0000000..8f88007
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/ActivityController.java
@@ -0,0 +1,128 @@
+package com.ics.admin.controller;
+
+import cn.hutool.core.date.DateUnit;
+import com.ics.admin.domain.Activity;
+import com.ics.admin.domain.ActivityDetail;
+import com.ics.admin.service.IActivityDetailService;
+import com.ics.admin.service.IActivityService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import com.ics.common.utils.DateUtils;
+import com.ics.common.utils.ValidatorUtils;
+import com.ics.system.domain.User;
+import com.ics.system.service.ICurrentUserService;
+import com.ics.system.service.IUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+import java.util.Date;
+
+/**
+ * 活动管理 提供者
+ *
+ * @author ics
+ * @date 2021-03-25
+ */
+@RestController
+@RequestMapping("/admin/activity")
+public class ActivityController extends BaseController {
+
+ @Autowired
+ private IActivityService activityService;
+
+ @Autowired
+ private IActivityDetailService activityDetailService;
+
+ @Autowired
+ private IUserService userService;
+
+ @Autowired
+ private ICurrentUserService userOnlineService;
+
+
+ /**
+ * 查询活动管理
+ */
+ @RequiresPermissions("admin:activity:edit")
+ @GetMapping("get/{id}")
+ public Activity get(@PathVariable("id") Long id) {
+ return activityService.selectActivityById(id);
+ }
+
+ /**
+ * 查询活动管理列表
+ */
+ @RequiresPermissions("admin:activity:list")
+ @GetMapping("list")
+ public R list(Activity activity) {
+ startPage();
+ return result(activityService.selectActivityList(activity));
+ }
+
+ /**
+ * 新增保存活动管理
+ */
+ @RequiresPermissions("admin:activity:add")
+ @PostMapping("save")
+ public R addSave(@RequestBody Activity activity) {
+ ValidatorUtils.validateEntity(activity);
+ activity.setTenantId(userOnlineService.getTenantId());
+ activity.setParkId(userOnlineService.getParkId());
+ activity.setCreateBy(userOnlineService.getLoginName());
+ return toAjax(activityService.insertActivity(activity));
+ }
+
+ /**
+ * 修改保存活动管理
+ */
+ @RequiresPermissions("admin:activity:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody Activity activity) {
+ ValidatorUtils.validateEntity(activity);
+ activity.setUpdateBy(userOnlineService.getLoginName());
+ activity.setUpdateTime(new Date());
+ return toAjax(activityService.updateActivity(activity));
+ }
+
+ /**
+ * 删除活动管理
+ */
+ @RequiresPermissions("admin:activity:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(activityService.deleteActivityByIds(ids));
+ }
+
+
+ /**
+ * 活动报名
+ */
+ @RequiresPermissions("admin:activity:add")
+ @PostMapping("addSign")
+ public R addSign(@RequestBody ActivityDetail activityDetail) {
+ User user = userService.selectUserById(activityDetail.getUserId());
+ if (user == null) {
+ return R.error("用户不存在");
+ }
+ activityDetail.setSignDate(DateUtils.getNowDate());
+ activityDetail.setPhone(user.getMobile());
+ return toAjax(activityDetailService.insertActivityDetail(activityDetail));
+ }
+
+ /**
+ * 定时任务状态修改
+ */
+ @RequiresPermissions("admin:activity:edit")
+ @PostMapping("/changeMarketable")
+ public R changeMarketable(@RequestBody Activity activity) {
+ Activity newActivity = activityService.selectActivityById(activity.getId());
+ if (newActivity == null) {
+ return R.error("活动不存在!");
+ }
+ activity.setMarketableTime(DateUtils.getNowDate());
+ return toAjax(activityService.updateActivity(activity));
+ }
+
+
+}
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/ActivityDetailController.java b/ics-admin/src/main/java/com/ics/admin/controller/ActivityDetailController.java
new file mode 100644
index 0000000..58ba1af
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/ActivityDetailController.java
@@ -0,0 +1,38 @@
+package com.ics.admin.controller;
+
+import com.ics.admin.domain.ActivityDetail;
+import com.ics.admin.service.IActivityDetailService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+/**
+ * 活动报名详情 提供者
+ *
+ * @author ics
+ * @date 2021-04-15
+ */
+@RestController
+@RequestMapping("/admin/activityDetail")
+public class ActivityDetailController extends BaseController {
+
+ @Autowired
+ private IActivityDetailService activityDetailService;
+
+
+ /**
+ * 查询活动报名详情列表
+ */
+ @RequiresPermissions("admin:activityDetail:list")
+ @GetMapping("list")
+ public R list(ActivityDetail activityDetail) {
+ startPage();
+ return result(activityDetailService.selectActivityDetailList(activityDetail));
+ }
+
+
+}
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/ApplyMoveInController.java b/ics-admin/src/main/java/com/ics/admin/controller/ApplyMoveInController.java
new file mode 100644
index 0000000..f725eaa
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/ApplyMoveInController.java
@@ -0,0 +1,86 @@
+package com.ics.admin.controller;
+
+import com.ics.admin.domain.ApplyMoveIn;
+import com.ics.admin.domain.ApplySettle;
+import com.ics.admin.service.IApplyMoveInService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+/**
+ * 注册迁入申请 提供者
+ *
+ * @author zzm
+ * @date 2021-04-14
+ */
+@RestController
+@RequestMapping("/admin/applyMoveIn")
+public class ApplyMoveInController extends BaseController {
+
+ @Autowired
+ private IApplyMoveInService applyMoveInService;
+
+ /**
+ * 查询注册迁入申请
+ */
+ @RequiresPermissions("admin:applyMoveIn:view")
+ @GetMapping("get/{id}")
+ public ApplyMoveIn get(@PathVariable("id") Long id) {
+ return applyMoveInService.selectApplyMoveInById(id);
+ }
+
+ /**
+ * 查询注册迁入申请列表
+ */
+ @RequiresPermissions("admin:applyMoveIn:list")
+ @GetMapping("list")
+ public R list(ApplyMoveIn applyMoveIn) {
+ startPage();
+ return result(applyMoveInService.selectApplyMoveInList(applyMoveIn));
+ }
+
+
+ /**
+ * 修改保存注册迁入申请
+ */
+ @RequiresPermissions("admin:applyMoveIn:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody ApplyMoveIn applyMoveIn) {
+ return toAjax(applyMoveInService.updateApplyMoveIn(applyMoveIn));
+ }
+
+ /**
+ * 删除注册迁入申请
+ */
+ @RequiresPermissions("admin:applyMoveIn:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(applyMoveInService.deleteApplyMoveInByIds(ids));
+ }
+
+
+ /**
+ * 批量审批
+ * @param ids
+ * @return
+ */
+ @RequiresPermissions("admin:applyMoveIn:edit")
+ @PostMapping("approve")
+ public R approve(String ids, ApplySettle.Status status, String remark){
+ return toAjax(applyMoveInService.approveApplyMoveInByIds(ids, status, remark));
+ }
+
+ /**
+ * 根据id取消审批
+ * @param id
+ * @return
+ */
+ @RequiresPermissions("admin:applyMoveIn:edit")
+ @PostMapping("cancelApprove")
+ public R cancelApprove(Long id){
+ return toAjax(applyMoveInService.cancelApprove(id));
+ }
+
+}
\ No newline at end of file
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/ApplyParkController.java b/ics-admin/src/main/java/com/ics/admin/controller/ApplyParkController.java
new file mode 100644
index 0000000..d8e8956
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/ApplyParkController.java
@@ -0,0 +1,86 @@
+package com.ics.admin.controller;
+
+import com.ics.admin.domain.ApplyPark;
+import com.ics.admin.domain.ApplySettle;
+import com.ics.admin.service.IApplyParkService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+/**
+ * 入园申请 提供者
+ *
+ * @author zzm
+ * @date 2021-04-12
+ */
+@RestController
+@RequestMapping("/admin/applyPark")
+public class ApplyParkController extends BaseController {
+
+ @Autowired
+ private IApplyParkService applyParkService;
+
+ /**
+ * 查询入园申请
+ */
+ @RequiresPermissions("admin:applyPark:view")
+ @GetMapping("get/{id}")
+ public ApplyPark get(@PathVariable("id") Long id) {
+ return applyParkService.selectApplyParkById(id);
+ }
+
+ /**
+ * 查询入园申请列表
+ */
+ @RequiresPermissions("admin:applyPark:list")
+ @GetMapping("list")
+ public R list(ApplyPark applyPark) {
+ startPage();
+ return result(applyParkService.selectApplyParkList(applyPark));
+ }
+
+
+ /**
+ * 修改保存入园申请
+ */
+ @RequiresPermissions("admin:applyPark:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody ApplyPark applyPark) {
+ return toAjax(applyParkService.updateApplyPark(applyPark));
+ }
+
+ /**
+ * 删除入园申请
+ */
+ @RequiresPermissions("admin:applyPark:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(applyParkService.deleteApplyParkByIds(ids));
+ }
+
+
+ /**
+ * 批量审批
+ * @param ids
+ * @return
+ */
+ @RequiresPermissions("admin:applyPark:edit")
+ @PostMapping("approve")
+ public R approve(String ids, ApplySettle.Status status, String remark){
+ return toAjax(applyParkService.approveApplyParkByIds(ids, status, remark));
+ }
+
+ /**
+ * 根据id取消审批
+ * @param id
+ * @return
+ */
+ @RequiresPermissions("admin:applyPark:edit")
+ @PostMapping("cancelApprove")
+ public R cancelApprove(Long id){
+ return toAjax(applyParkService.cancelApprove(id));
+ }
+
+}
\ No newline at end of file
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/ApplySettleController.java b/ics-admin/src/main/java/com/ics/admin/controller/ApplySettleController.java
new file mode 100644
index 0000000..98d1542
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/ApplySettleController.java
@@ -0,0 +1,86 @@
+package com.ics.admin.controller;
+
+import com.ics.admin.domain.ApplySettle;
+import com.ics.admin.service.IApplySettleService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+/**
+ * 入驻申请 提供者
+ *
+ * @author zzm
+ * @date 2021-04-12
+ */
+@RestController
+@RequestMapping("/admin/settle")
+public class ApplySettleController extends BaseController {
+
+ @Autowired
+ private IApplySettleService applySettleService;
+
+ /**
+ * 查询入驻申请
+ */
+ @RequiresPermissions("admin:settle:view")
+ @GetMapping("get/{id}")
+ public ApplySettle get(@PathVariable("id") Long id) {
+ return applySettleService.selectApplySettleById(id);
+ }
+
+ /**
+ * 查询入驻申请列表
+ */
+ @RequiresPermissions("admin:settle:list")
+ @GetMapping("list")
+ public R list(ApplySettle applySettle) {
+ startPage();
+ return result(applySettleService.selectApplySettleList(applySettle));
+ }
+
+
+
+ /**
+ * 修改保存入驻申请
+ */
+ @RequiresPermissions("admin:settle:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody ApplySettle applySettle) {
+ return toAjax(applySettleService.updateApplySettle(applySettle));
+ }
+
+ /**
+ * 删除入驻申请
+ */
+ @RequiresPermissions("admin:settle:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(applySettleService.deleteApplySettleByIds(ids));
+ }
+
+
+ /**
+ * 批量审批
+ * @param ids
+ * @return
+ */
+ @RequiresPermissions("admin:settle:edit")
+ @PostMapping("approve")
+ public R approve(String ids, ApplySettle.Status status, String remark){
+ return toAjax(applySettleService.approveApplySettleByIds(ids, status, remark));
+ }
+
+ /**
+ * 根据id取消审批
+ * @param id
+ * @return
+ */
+ @RequiresPermissions("admin:settle:edit")
+ @PostMapping("cancelApprove")
+ public R cancelApprove(Long id){
+ return toAjax(applySettleService.cancelApprove(id));
+ }
+
+}
\ No newline at end of file
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/BuildingController.java b/ics-admin/src/main/java/com/ics/admin/controller/BuildingController.java
new file mode 100644
index 0000000..97346e8
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/BuildingController.java
@@ -0,0 +1,73 @@
+package com.ics.admin.controller;
+
+import com.ics.admin.domain.Building;
+import com.ics.admin.service.IBuildingService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+/**
+ * 楼宇管理 提供者
+ *
+ * @author zzm
+ * @date 2021-03-24
+ */
+@RestController
+@RequestMapping("admin/building")
+public class BuildingController extends BaseController {
+
+ @Autowired
+ private IBuildingService buildingService;
+
+
+ /**
+ * 查询楼宇管理
+ */
+ @RequiresPermissions("admin:building:view")
+ @GetMapping("get/{id}")
+ public Building get(@PathVariable("id") Long id) {
+ return buildingService.selectBuildingById(id);
+ }
+
+ /**
+ * 查询楼宇管理列表
+ */
+ @RequiresPermissions("admin:building:list")
+ @GetMapping("list")
+ public R list(Building building) {
+ startPage();
+ building.setDeleteFlag(0);
+ return result(buildingService.selectBuildingList(building));
+ }
+
+
+ /**
+ * 新增保存楼宇管理
+ */
+ @RequiresPermissions("admin:building:add")
+ @PostMapping("save")
+ public R addSave(@RequestBody Building building) {
+ return toAjax(buildingService.insertBuilding(building));
+ }
+
+ /**
+ * 修改保存楼宇管理
+ */
+ @RequiresPermissions("admin:building:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody Building building) {
+ return toAjax(buildingService.updateBuilding(building));
+ }
+
+ /**
+ * 删除楼宇管理
+ */
+ @RequiresPermissions("admin:building:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(buildingService.deleteBuildingByIds(ids));
+ }
+
+}
\ No newline at end of file
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/BuildingDetailController.java b/ics-admin/src/main/java/com/ics/admin/controller/BuildingDetailController.java
new file mode 100644
index 0000000..fec9468
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/BuildingDetailController.java
@@ -0,0 +1,71 @@
+package com.ics.admin.controller;
+
+import com.ics.admin.domain.BuildingDetail;
+import com.ics.admin.service.IBuildingDetailService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+/**
+ * 楼层管理 提供者
+ *
+ * @author zzm
+ * @date 2021-03-24
+ */
+@RestController
+@RequestMapping("/admin/buildingDetail")
+public class BuildingDetailController extends BaseController {
+
+ @Autowired
+ private IBuildingDetailService buildingDetailService;
+
+ /**
+ * 查询楼层管理
+ */
+ @RequiresPermissions("admin:buildingDetail:view")
+ @GetMapping("get/{id}")
+ public BuildingDetail get(@PathVariable("id") Long id) {
+ return buildingDetailService.selectBuildingDetailById(id);
+ }
+
+ /**
+ * 查询楼层管理列表
+ */
+ @RequiresPermissions("admin:buildingDetail:list")
+ @GetMapping("list")
+ public R list(BuildingDetail buildingDetail) {
+ startPage();
+ return result(buildingDetailService.selectBuildingDetailList(buildingDetail));
+ }
+
+
+ /**
+ * 新增保存楼层管理
+ */
+ @RequiresPermissions("admin:buildingDetail:add")
+ @PostMapping("save")
+ public R addSave(@RequestBody BuildingDetail buildingDetail) {
+ return toAjax(buildingDetailService.insertBuildingDetail(buildingDetail));
+ }
+
+ /**
+ * 修改保存楼层管理
+ */
+ @RequiresPermissions("admin:buildingDetail:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody BuildingDetail buildingDetail) {
+ return toAjax(buildingDetailService.updateBuildingDetail(buildingDetail));
+ }
+
+ /**
+ * 删除楼层管理
+ */
+ @RequiresPermissions("admin:buildingDetail:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(buildingDetailService.deleteBuildingDetailByIds(ids));
+ }
+
+}
\ No newline at end of file
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/ClueController.java b/ics-admin/src/main/java/com/ics/admin/controller/ClueController.java
new file mode 100644
index 0000000..b182e15
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/ClueController.java
@@ -0,0 +1,134 @@
+package com.ics.admin.controller;
+
+import com.ics.admin.domain.Clue;
+import com.ics.admin.service.IClueService;
+import com.ics.admin.utils.ExcelView;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import com.ics.common.utils.ValidatorUtils;
+import org.jxls.common.Context;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 线索管理 提供者
+ *
+ * @author ics
+ * @date 2021-03-23
+ */
+@RestController
+@RequestMapping("/admin/clue")
+public class ClueController extends BaseController {
+
+ @Autowired
+ private IClueService clueService;
+
+ /**
+ * 查询线索管理
+ */
+ @RequiresPermissions("admin:clue:view")
+ @GetMapping("get/{id}")
+ public Clue get(@PathVariable("id") Long id) {
+ return clueService.selectClueById(id);
+ }
+
+ /**
+ * 查询线索管理列表
+ */
+ @RequiresPermissions("admin:clue:list")
+ @GetMapping("list")
+ public R list(Clue clue) {
+ startPage();
+ return result(clueService.selectClueList(clue));
+ }
+
+ /**
+ * 查询线索分派的已经激活的列表
+ */
+ @RequiresPermissions("admin:clue:list")
+ @GetMapping("ClueActivationList")
+ public R ActivationList(Clue clue) {
+ clue.setCustomerStatus("0");
+ startPage();
+ return result(clueService.selectClueList(clue));
+ }
+
+ /**
+ * 分派对接人
+ */
+ @RequiresPermissions("admin:clue:edit")
+ @PostMapping("/review")
+ public R review(@RequestBody Clue clue) {
+ Clue newClue = clueService.selectClueById(clue.getId());
+ if (newClue == null) {
+ return R.error("分派失败");
+ }
+ clue.setAssignmentStatus("1");
+ clue.setAssignmentTime(new Date());
+ return toAjax(clueService.updateClue(clue));
+ }
+
+ /**
+ * 关闭线索
+ */
+ @RequiresPermissions("admin:clue:edit")
+ @PostMapping("/closeClue")
+ public R closeClue(@RequestBody Clue clue) {
+ clue.setCustomerStatus("1");
+ return toAjax(clueService.updateClue(clue));
+ }
+
+ /**
+ * 新增保存线索管理
+ */
+ @RequiresPermissions("admin:clue:add")
+ @PostMapping("save")
+ public R addSave(@RequestBody Clue clue) {
+ ValidatorUtils.validateEntity(clue);
+ return toAjax(clueService.insertClue(clue));
+ }
+
+ /**
+ * 修改保存线索管理
+ */
+ @RequiresPermissions("admin:clue:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody Clue clue) {
+ return toAjax(clueService.updateClue(clue));
+ }
+
+ /**
+ * 删除线索管理
+ */
+ @RequiresPermissions("admin:clue:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(clueService.deleteClueByIds(ids));
+ }
+
+
+ /**
+ * 根据条件导出线索报表功能 exportPowerWaterFee
+ *
+ * @param clue
+ */
+ @RequiresPermissions("admin:clue:view")
+ @GetMapping("/excelClue")
+ public void excelClue(Clue clue) {
+ Context context = new Context();
+ List clueList = clueService.selectClueList(clue);
+
+ int i = 1;
+ for (Clue item : clueList) {
+ item.setId(Long.valueOf(i));
+ i++;
+ }
+ context.putVar("date", "2031-04-15");
+ context.putVar("clueList", clueList);
+ new ExcelView("excel/招商线索导出模板.xls", "招商线索导出", context);
+ }
+}
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/ClueInvestigationController.java b/ics-admin/src/main/java/com/ics/admin/controller/ClueInvestigationController.java
new file mode 100644
index 0000000..182812a
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/ClueInvestigationController.java
@@ -0,0 +1,84 @@
+package com.ics.admin.controller;
+
+import com.ics.admin.domain.ClueInvestigation;
+import com.ics.admin.service.IClueInvestigationService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import com.ics.common.utils.ValidatorUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+/**
+ * 线索跟进 提供者
+ *
+ * @author ics
+ * @date 2021-03-23
+ */
+@RestController
+@RequestMapping("/admin/clueInvestigation")
+public class ClueInvestigationController extends BaseController {
+
+ @Autowired
+ private IClueInvestigationService clueInvestigationService;
+
+ /**
+ * 查询线索跟进
+ */
+ @RequiresPermissions("admin:investigation:view")
+ @GetMapping("get/{id}")
+ public ClueInvestigation get(@PathVariable("id") Long id) {
+ return clueInvestigationService.selectClueInvestigationById(id);
+ }
+
+ /**
+ * 查询线索跟进列表
+ */
+ @RequiresPermissions("admin:investigation:list")
+ @GetMapping("list")
+ public R list(ClueInvestigation clueInvestigation) {
+ startPage();
+ return result(clueInvestigationService.selectClueInvestigationList(clueInvestigation));
+ }
+
+ /**
+ * 查询我的线索跟进列表
+ */
+ @RequiresPermissions("admin:investigation:list")
+ @GetMapping("myList")
+ public R myList(ClueInvestigation clueInvestigation) {
+ startPage();
+ clueInvestigation.setUserId(getCurrentUserId());
+ return result(clueInvestigationService.selectClueInvestigationList(clueInvestigation));
+ }
+
+ /**
+ * 新增保存线索跟进
+ */
+ @RequiresPermissions("admin:investigation:add")
+ @PostMapping("save")
+ public R addSave(@RequestBody ClueInvestigation clueInvestigation) {
+ ValidatorUtils.validateEntity(clueInvestigation);
+ clueInvestigation.setClueId(clueInvestigation.getId());
+ return toAjax(clueInvestigationService.insertClueInvestigation(clueInvestigation));
+ }
+
+ /**
+ * 修改保存线索跟进
+ */
+ @RequiresPermissions("admin:investigation:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody ClueInvestigation clueInvestigation) {
+ return toAjax(clueInvestigationService.updateClueInvestigation(clueInvestigation));
+ }
+
+ /**
+ * 删除线索跟进
+ */
+ @RequiresPermissions("admin:investigation:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(clueInvestigationService.deleteClueInvestigationByIds(ids));
+ }
+
+}
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/CustomerAttachmentsController.java b/ics-admin/src/main/java/com/ics/admin/controller/CustomerAttachmentsController.java
new file mode 100644
index 0000000..092b42c
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/CustomerAttachmentsController.java
@@ -0,0 +1,75 @@
+package com.ics.admin.controller;
+
+
+import com.ics.admin.domain.CustomerAttachments;
+import com.ics.admin.service.ICustomerAttachmentsService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+
+/**
+ * 客户附件 提供者
+ *
+ * @author zzm
+ * @date 2020-10-27
+ */
+@RestController
+@RequestMapping("/admin/attachments")
+public class CustomerAttachmentsController extends BaseController {
+
+ @Autowired
+ private ICustomerAttachmentsService customerAttachmentsService;
+
+ /**
+ * 查询${tableComment}
+ */
+ @RequiresPermissions("admin:customer:view")
+ @GetMapping("get/{id}")
+ public CustomerAttachments get(@PathVariable("id") Long id) {
+ return customerAttachmentsService.selectCustomerAttachmentsById(id);
+
+ }
+
+ /**
+ * 查询客户附件列表
+ */
+ @RequiresPermissions("admin:customer:view")
+ @GetMapping("list")
+ public R list(CustomerAttachments customerAttachments) {
+ startPage();
+ customerAttachments.setDeleteFlag(0);
+ return result(customerAttachmentsService.selectCustomerAttachmentsList(customerAttachments));
+ }
+
+
+ /**
+ * 新增保存客户附件
+ */
+ @RequiresPermissions("admin:customer:add")
+ @PostMapping("save")
+ public R addSave(@RequestBody CustomerAttachments customerAttachments) {
+ return toAjax(customerAttachmentsService.insertCustomerAttachments(customerAttachments));
+ }
+
+ /**
+ * 修改保存客户附件
+ */
+ @RequiresPermissions("admin:customer:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody CustomerAttachments customerAttachments) {
+ return toAjax(customerAttachmentsService.updateCustomerAttachments(customerAttachments));
+ }
+
+ /**
+ * 删除${tableComment}
+ */
+ @RequiresPermissions("admin:customer:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(customerAttachmentsService.deleteCustomerAttachmentsByIds(ids));
+ }
+
+}
\ No newline at end of file
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/CustomerContactsController.java b/ics-admin/src/main/java/com/ics/admin/controller/CustomerContactsController.java
new file mode 100644
index 0000000..5764c04
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/CustomerContactsController.java
@@ -0,0 +1,79 @@
+package com.ics.admin.controller;
+
+
+import com.ics.admin.domain.CustomerContacts;
+import com.ics.admin.service.ICustomerContactsService;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import com.ics.common.utils.ValidatorUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+
+/**
+ * 联系人 提供者
+ *
+ * @author zzm
+ * @date 2020-10-26
+ */
+@RestController
+@RequestMapping("admin/contacts")
+public class CustomerContactsController extends BaseController {
+
+ @Autowired
+ private ICustomerContactsService customerContactsService;
+
+
+ /**
+ * 查询${tableComment}
+ */
+ @RequiresPermissions("admin:customer:view")
+ @GetMapping("get/{id}")
+ public CustomerContacts get(@PathVariable("id") Long id) {
+ return customerContactsService.selectCustomerContactsById(id);
+
+ }
+
+ /**
+ * 查询联系人列表
+ */
+ @RequiresPermissions("admin:customer:list")
+ @GetMapping("list")
+ public R list(CustomerContacts customerContacts) {
+ startPage();
+ customerContacts.setDeleteFlag(0);
+ return result(customerContactsService.selectCustomerContactsList(customerContacts));
+ }
+
+
+ /**
+ * 新增保存联系人
+ */
+ @RequiresPermissions("admin:customer:add")
+ @PostMapping("save")
+ public R addSave(@RequestBody CustomerContacts customerContacts) {
+ ValidatorUtils.validateEntity(customerContacts);
+ return toAjax(customerContactsService.insertCustomerContacts(customerContacts));
+ }
+
+ /**
+ * 修改保存联系人
+ */
+ @RequiresPermissions("admin:customer:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody CustomerContacts customerContacts) {
+ ValidatorUtils.validateEntity(customerContacts);
+ return toAjax(customerContactsService.updateCustomerContacts(customerContacts));
+ }
+
+ /**
+ * 删除${tableComment}
+ */
+ @RequiresPermissions("admin:customer:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(customerContactsService.deleteCustomerContactsByIds(ids));
+ }
+
+}
\ No newline at end of file
diff --git a/ics-admin/src/main/java/com/ics/admin/controller/CustomerContractBillController.java b/ics-admin/src/main/java/com/ics/admin/controller/CustomerContractBillController.java
new file mode 100644
index 0000000..c14bf2b
--- /dev/null
+++ b/ics-admin/src/main/java/com/ics/admin/controller/CustomerContractBillController.java
@@ -0,0 +1,770 @@
+package com.ics.admin.controller;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.excel.EasyExcel;
+import com.google.common.collect.Maps;
+import com.ics.admin.domain.CustomerContract;
+import com.ics.admin.domain.CustomerContractBill;
+import com.ics.admin.domain.Room;
+import com.ics.admin.listener.ImportPowerWaterFeeListener;
+import com.ics.admin.listener.ImportRentListener;
+import com.ics.admin.service.ICustomerContractBillService;
+import com.ics.admin.service.ICustomerContractService;
+import com.ics.admin.utils.ExcelView;
+import com.ics.admin.vo.BillFormVO;
+import com.ics.admin.vo.BillInitQueryFormVO;
+import com.ics.admin.vo.ImportPowerWaterFeeVO;
+import com.ics.admin.vo.ImportRentVO;
+import com.ics.common.core.controller.BaseController;
+import com.ics.common.core.domain.R;
+import com.ics.common.enums.PaymentCycle;
+import com.ics.common.utils.DateUtils;
+import com.ics.common.utils.GuavaCacheUtil;
+import com.ics.common.utils.StringUtils;
+import com.ics.system.service.ICurrentUserService;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.compress.utils.Lists;
+import org.apache.commons.lang3.BooleanUtils;
+import org.jxls.common.Context;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+import org.wf.jwtp.annotation.RequiresPermissions;
+
+import javax.validation.Valid;
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 客户合同账单 提供者
+ *
+ * @author zzm
+ * @date 2020-11-26
+ */
+@Slf4j
+@RestController
+@RequestMapping("admin/contract/bill")
+public class CustomerContractBillController extends BaseController {
+
+ @Autowired
+ private ICustomerContractBillService customerContractBillService;
+
+ @Autowired
+ private ICurrentUserService currentUserService;
+
+ @Autowired
+ private ICustomerContractService customerContractService;
+
+
+ /**
+ * app的密钥值
+ */
+ @Value("${dfs.path}")
+ private String path;
+
+
+ /**
+ * 查询客户合同账单
+ */
+ @RequiresPermissions("admin:bill:view")
+ @GetMapping("get")
+ public CustomerContractBill get(Long billId) {
+ CustomerContractBill customerContractBill = customerContractBillService.selectCustomerContractBillById(billId);
+ return customerContractBill;
+ }
+
+ /**
+ * 确认客户合同账单查看
+ */
+ @RequiresPermissions("admin:bill:view")
+ @GetMapping("confirm_detail")
+ public R confirm_detail(Long billId) {
+ CustomerContractBill customerContractBill = customerContractBillService.selectCustomerContractBillById(billId);
+ Map result = Maps.newHashMap();
+ result.put("name", customerContractBill.getName());
+ result.put("billId", customerContractBill.getId());
+ // 应收租金
+ result.put("rent", customerContractBill.getRent());
+ // 已收租金
+ result.put("receiveRent", customerContractBill.getReceiveRent());
+ // 待收租金
+ result.put("waitRent", customerContractBill.getRent().subtract(customerContractBill.getReceiveRent()));
+ // 应收物业管理费
+ result.put("managementTotalFee", customerContractBill.getManagementTotalFee());
+ // 已收物业管理费
+ result.put("receiveManagementTotalFee", customerContractBill.getReceiveManagementTotalFee());
+ // 待收物业管理费
+ result.put("waitManagementTotalFee", customerContractBill.getManagementTotalFee().subtract(customerContractBill.getReceiveManagementTotalFee()));
+ // 应收电费
+ result.put("powerFee", customerContractBill.getPowerFee());
+ // 已收电费
+ result.put("receivePowerFee", customerContractBill.getReceivePowerFee());
+ // 待收电费
+ result.put("waitPowerFee", customerContractBill.getPowerFee().subtract(customerContractBill.getReceivePowerFee()));
+ // 应收水费
+ result.put("waterFee", customerContractBill.getWaterFee());
+ // 已收水费
+ result.put("receiveWaterFee", customerContractBill.getReceiveWaterFee());
+ // 待收水费
+ result.put("waitWaterFee", customerContractBill.getWaterFee().subtract(customerContractBill.getReceiveWaterFee()));
+ // 应收押金
+ result.put("deposit", customerContractBill.getDeposit());
+
+ // 应收其他费用
+ result.put("otherFee", customerContractBill.getOtherFee());
+
+ // 已收其他费用
+ result.put("receiveOtherFee", customerContractBill.getReceiveOtherFee());
+
+
+ // 应退费用
+ result.put("refundFee", customerContractBill.getRefundFee());
+ // 合计应收
+ result.put("totalFee", getTotalFee(customerContractBill));
+ // 备注
+ result.put("remark", customerContractBill.getRemark());
+
+ return R.ok(result);
+ }
+
+ /**
+ * 应收总金额
+ */
+ private BigDecimal getTotalFee(CustomerContractBill customerContractBill) {
+ return customerContractBill.getRent()
+ .add(customerContractBill.getManagementTotalFee())
+ .add(customerContractBill.getPowerFee())
+ .add(customerContractBill.getWaterFee())
+ .add(customerContractBill.getDeposit())
+ .add(customerContractBill.getOtherFee())
+ .add(customerContractBill.getRefundFee());
+ }
+
+ /**
+ * 查询客户合同账单列表
+ */
+ @RequiresPermissions("admin:bill:list")
+ @PostMapping("list")
+ public R list(@RequestBody CustomerContractBill customerContractBill) {
+ startPage();
+ if (customerContractBill == null) {
+ customerContractBill = new CustomerContractBill();
+ customerContractBill.setType(CustomerContract.Type.OFFICIAL);
+ }
+
+ List customerContractBills = customerContractBillService.selectCustomerContractBillList(customerContractBill);
+
+ for (CustomerContractBill item : customerContractBills) {
+ // 是否逾期
+ setIsOverdue(item);
+ item.setTotalBill(getTotalFee(item));
+ item.setReceiveTotalBill(getReceiveTotalFee(item));
+ item.setWaitPay(item.getTotalBill().subtract(item.getReceiveTotalBill()));
+ }
+ return result(customerContractBills);
+ }
+
+
+ /**
+ * 新增保存客户合同账单
+ */
+ @RequiresPermissions("admin:bill:add")
+ @PostMapping("save")
+ public R addSave(@Valid @RequestBody BillFormVO BillFormVO) {
+ BillFormVO.setCreateBy(getLoginName());
+ return toAjax(customerContractBillService.insertCustomerContractBill(BillFormVO));
+ }
+
+
+ /**
+ * 新增保存客户合同账单
+ */
+ @RequiresPermissions("admin:bill:add")
+ @PostMapping("batchSave")
+ public R batchSave(@RequestBody BillFormVO billFormVO) {
+ billFormVO.setCreateBy(getLoginName());
+ return toAjax(customerContractBillService.batchInsertCustomerContractBill(billFormVO));
+ }
+
+ /**
+ * 修改保存客户合同账单
+ */
+ @RequiresPermissions("admin:bill:edit")
+ @PostMapping("update")
+ public R editSave(@RequestBody CustomerContractBill customerContractBill) {
+ customerContractBill.setUpdateBy(getLoginName());
+ return toAjax(customerContractBillService.updateCustomerContractBill(customerContractBill));
+ }
+
+ /**
+ * 确认收到租金
+ */
+ @RequiresPermissions("admin:bill:edit")
+ @PostMapping("confirm_receive_amount")
+ public R confirm_receive_amount(Long billId, BigDecimal receiveRent, BigDecimal receiveManagementTotalFee, BigDecimal receivePowerFee, BigDecimal receiveWaterFee, String remark) {
+ CustomerContractBill customerContractBill = customerContractBillService.selectCustomerContractBillById(billId);
+ if (receiveRent == null) {
+ return R.error("收到租金不能为空!");
+ }
+ if (receiveManagementTotalFee == null) {
+ return R.error("收到物业管理费不能为空!");
+ }
+ if (customerContractBill == null) {
+ return R.error("账单不存在!");
+ }
+ customerContractBill.setReceiveRent(customerContractBill.getReceiveRent().add(receiveRent));
+ customerContractBill.setReceiveManagementTotalFee(customerContractBill.getReceiveManagementTotalFee().add(receiveManagementTotalFee));
+ customerContractBill.setReceivePowerFee(customerContractBill.getReceivePowerFee().add(receivePowerFee == null ? BigDecimal.ZERO : receivePowerFee));
+ customerContractBill.setReceiveWaterFee(customerContractBill.getWaterFee().add(receiveWaterFee == null ? BigDecimal.ZERO : receiveWaterFee));
+ customerContractBill.setRemark(remark);
+ customerContractBill.setUpdateBy(getLoginName());
+ BigDecimal receiveTotalFee = getReceiveTotalFee(customerContractBill);
+ if (receiveTotalFee.equals(BigDecimal.ZERO)) {
+ customerContractBill.setStatus(CustomerContractBill.Status.UNRECEIVED);
+ } else if (receiveTotalFee.compareTo(getTotalFee(customerContractBill)) == -1) {
+ customerContractBill.setStatus(CustomerContractBill.Status.PART);
+ } else {
+ customerContractBill.setStatus(CustomerContractBill.Status.RECEIVED);
+ }
+ return toAjax(customerContractBillService.updateCustomerContractBill(customerContractBill));
+ }
+
+
+ /**
+ * 确认收到其他费用
+ */
+ @RequiresPermissions("admin:bill:edit")
+ @PostMapping("confirm_receive_other_amount")
+ public R confirm_receive_other_amount(Long billId, BigDecimal otherFee, BigDecimal receiveOtherFee, String remark) {
+ if (receiveOtherFee == null) {
+ return R.error("收到金额不能为空!");
+ }
+ CustomerContractBill customerContractBill = customerContractBillService.selectCustomerContractBillById(billId);
+ if (customerContractBill == null) {
+ return R.error("账单不存在!");
+ }
+ customerContractBill.setReceiveOtherFee(receiveOtherFee.add(customerContractBill.getReceiveOtherFee()));
+ customerContractBill.setRemark(remark);
+ customerContractBill.setUpdateBy(getLoginName());
+ BigDecimal waitPay = otherFee.subtract(customerContractBill.getReceiveOtherFee());
+ if (waitPay.equals(BigDecimal.ZERO)) {
+ customerContractBill.setStatus(CustomerContractBill.Status.UNRECEIVED);
+ } else if (receiveOtherFee.compareTo(waitPay) == -1) {
+ customerContractBill.setStatus(CustomerContractBill.Status.PART);
+ } else if(receiveOtherFee.equals(waitPay)){
+ customerContractBill.setStatus(CustomerContractBill.Status.RECEIVED);
+ }
+ return toAjax(customerContractBillService.updateCustomerContractBill(customerContractBill));
+ }
+
+ /**
+ * 已收金额
+ */
+ private BigDecimal getReceiveTotalFee(CustomerContractBill customerContractBill) {
+ // 已收租金含押金
+ return customerContractBill.getReceiveRent()
+ .add(customerContractBill.getReceiveManagementTotalFee())
+ .add(customerContractBill.getReceivePowerFee()
+ .add(customerContractBill.getReceiveWaterFee())
+ .add(customerContractBill.getReceiveOtherFee())
+ .add(customerContractBill.getRefundFee()));
+ }
+
+
+ /**
+ * 批量确认收到租金
+ */
+ @RequiresPermissions("admin:bill:edit")
+ @PostMapping("batch_confirm_receive_amount")
+ public R batch_confirm_receive_amount(String billIds) {
+ if (StringUtils.isEmpty(billIds)) {
+ return R.error("请选择行!");
+ }
+ return toAjax(customerContractBillService.batchConfirmReceiveAmount(billIds));
+ }
+
+ /**
+ * 批量取消确认收到租金
+ */
+ @RequiresPermissions("admin:bill:edit")
+ @PostMapping("batch_cancel_receive_amount")
+ public R batch_cancel_receive_amount(String billIds) {
+ return toAjax(customerContractBillService.batchCancelReceiveAmount(billIds));
+ }
+
+ /**
+ * 取消确认
+ */
+ @RequiresPermissions("admin:bill:edit")
+ @PostMapping("cancelConfirm")
+ public R cancelConfirm(Long billId) {
+ CustomerContractBill customerContractBill = customerContractBillService.selectCustomerContractBillById(billId);
+ if (customerContractBill == null) {
+ return R.error("账单不存在!");
+ }
+ customerContractBill.setRemark("--");
+ customerContractBill.setReceiveRent(BigDecimal.ZERO);
+ customerContractBill.setReceiveManagementTotalFee(BigDecimal.ZERO);
+ customerContractBill.setReceivePowerFee(BigDecimal.ZERO);
+ customerContractBill.setReceiveWaterFee(BigDecimal.ZERO);
+ customerContractBill.setUpdateBy(getLoginName());
+ customerContractBill.setStatus(CustomerContractBill.Status.UNRECEIVED);
+ return toAjax(customerContractBillService.updateCustomerContractBill(customerContractBill));
+ }
+
+ /**
+ * 删除客户合同账单
+ */
+ @RequiresPermissions("admin:bill:remove")
+ @PostMapping("remove")
+ public R remove(String ids) {
+ return toAjax(customerContractBillService.deleteCustomerContractBillByIds(ids));
+ }
+
+ /**
+ * @param deposit 押金
+ * @param rentIncreaseMonth 月租金
+ * @param rentIncreaseDay 日租金
+ * @param receiveRentDay 收租固定日
+ * @param startDate 合同开始时间
+ * @param endDate 合同结束时间
+ * @param updateDate 调整账单时间
+ * @return
+ */
+ @RequiresPermissions("admin:bill:edit")
+ @GetMapping("init_bill")
+ public R init_bill(BigDecimal deposit, BigDecimal rentIncreaseMonth, BigDecimal rentIncreaseDay, Integer receiveRentDay,
+ BigDecimal managementFeeIncreaseMonth, BigDecimal managementFeeIncreaseDay, Integer paymentPeriod,
+ Date startDate, Date endDate, Date updateDate) {
+ //paymentPeriod = PaymentCycle.YEAR.getValue();
+ // 分段账单
+ List