| @@ -1,6 +1,5 @@ | |||
| package com.iformall.controller; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.WxRentContract; | |||
| @@ -10,7 +9,6 @@ import io.swagger.annotations.ApiImplicitParams; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.transaction.annotation.Transactional; | |||
| import org.springframework.web.bind.annotation.*; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| @@ -36,23 +34,21 @@ public class WxRentContractController extends BaseController { | |||
| if (null == wxRentContract) { | |||
| wxRentContract = new WxRentContract(); | |||
| } | |||
| final PageInfo<Map<String, Object>> page = wxRentContractService.listAsPage(wxRentContract, pageNum, pageSize); | |||
| return new ResultData(page); | |||
| wxRentContract.setTenantId(Integer.valueOf(getTenantId())); | |||
| Map<String, Object> result = wxRentContractService.listAsPage(wxRentContract, pageNum, pageSize); | |||
| return new ResultData(result); | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| @PostMapping("add") | |||
| public ResultData add(@RequestBody WxRentContract wxRentContract) { | |||
| return wxRentContractService.saveOrUpdate(wxRentContract); | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| @PostMapping("update") | |||
| public ResultData update(@RequestBody WxRentContract wxRentContract) { | |||
| return wxRentContractService.saveOrUpdate(wxRentContract); | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| @GetMapping("/del") | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true) | |||
| public ResultData delete(String id) { | |||
| @@ -60,8 +56,8 @@ public class WxRentContractController extends BaseController { | |||
| } | |||
| @GetMapping("/findById") | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "String", paramType = "query", required = true) | |||
| public ResultData findById(String id) { | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
| public ResultData findById(Long id) { | |||
| return new ResultData(Result.SUCCESS, "查询成功", wxRentContractService.getById(id)); | |||
| } | |||
| @@ -75,4 +71,10 @@ public class WxRentContractController extends BaseController { | |||
| return new ResultData(Result.SUCCESS, "查询成功", wxRentContractService.getRentContractStatusInfo(getTenantId())); | |||
| } | |||
| @GetMapping("/endRentContract") | |||
| @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) | |||
| public ResultData endRentContract(Long id) { | |||
| return wxRentContractService.endRentContract(id); | |||
| } | |||
| } | |||
| @@ -21,4 +21,12 @@ public interface WxRentContractMapper extends CommonMapper<WxRentContract, Strin | |||
| int queryRentContractPaidStatus(WxRentContract wxRentContract); | |||
| int queryRentContractEndStatus(WxRentContract wxRentContract); | |||
| int updateRentContractEndSoonStatus(WxRentContract wxRentContract); | |||
| int updateRentContractPaidStatus(WxRentContract wxRentContract); | |||
| int updateRentContractEndStatus(WxRentContract wxRentContract); | |||
| } | |||
| @@ -1,6 +1,5 @@ | |||
| package com.iformall.service; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.WxRentContract; | |||
| @@ -21,7 +20,7 @@ public interface WxRentContractService { | |||
| * @param record | |||
| * @return | |||
| */ | |||
| PageInfo<Map<String, Object>> listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize); | |||
| Map<String, Object> listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize); | |||
| /** | |||
| * 根据Id获得实体 | |||
| @@ -29,7 +28,7 @@ public interface WxRentContractService { | |||
| * @param id | |||
| * @return | |||
| */ | |||
| WxRentContract getById(String id); | |||
| WxRentContract getById(Long id); | |||
| /** | |||
| * 保存或更新实体 | |||
| @@ -50,4 +49,6 @@ public interface WxRentContractService { | |||
| Object getRentContractStatusInfo(String tenantId); | |||
| ResultData endRentContract(Long id); | |||
| } | |||
| @@ -17,6 +17,7 @@ import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.stereotype.Service; | |||
| import org.springframework.transaction.annotation.Transactional; | |||
| import javax.servlet.http.HttpServletRequest; | |||
| import javax.servlet.http.HttpServletResponse; | |||
| @@ -41,19 +42,24 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| WxShopMapper wxShopMapper; | |||
| @Override | |||
| public PageInfo<Map<String, Object>> listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize) { | |||
| public Map<String, Object> listAsPage(WxRentContract record, Integer pageIndex, Integer pageSize) { | |||
| Object rentContractStatusInfo = getRentContractStatusInfo(record.getTenantId().toString()); | |||
| PageHelper.startPage(pageIndex, pageSize); | |||
| List<Map<String, Object>> rentContractData = wxRentContractMapper.queryRentContractData(record); | |||
| PageInfo<Map<String, Object>> pageInfo = new PageInfo<>(rentContractData); | |||
| return pageInfo; | |||
| Map<String,Object> result =new HashMap<>(); | |||
| result.put("rentContractStatusInfo",rentContractStatusInfo); | |||
| result.put("pageInfo",pageInfo); | |||
| return result; | |||
| //return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> wxRentContractMapper.findList(record)); | |||
| } | |||
| @Override | |||
| public WxRentContract getById(String id) { | |||
| public WxRentContract getById(Long id) { | |||
| return wxRentContractMapper.selectByPrimaryKey(id); | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| @Override | |||
| public ResultData saveOrUpdate(WxRentContract record) { | |||
| //保存租赁合同信息 | |||
| @@ -83,6 +89,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| @Override | |||
| public ResultData deleteById(String id) { | |||
| wxRentContractMapper.deleteByPrimaryKey(id); | |||
| @@ -98,6 +105,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| @Override | |||
| public Object getRentContractStatusInfo(String tenantId) { | |||
| @@ -114,12 +122,45 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| wxRentContract.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); | |||
| int waitSignCount=wxRentContractMapper.queryRentContractWaitSignStatus(wxRentContract); | |||
| resultData.put("waitSignCount",waitSignCount); | |||
| //需要更新的状态 | |||
| resultData.putAll(updateStatus(tenantId)); | |||
| return resultData; | |||
| } | |||
| @Transactional(rollbackFor = {Exception.class}) | |||
| @Override | |||
| public ResultData endRentContract(Long id) { | |||
| WxRentContract wxRentContract = wxRentContractMapper.selectByPrimaryKey(id); | |||
| wxRentContract.setStatus(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()); | |||
| try { | |||
| wxRentContractMapper.updateByPrimaryKeySelective(wxRentContract); | |||
| }catch (MallinkException e){ | |||
| logger.info("终止合同失败:"+e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| } | |||
| return new ResultData(Result.SUCCESS, "操作成功"); | |||
| } | |||
| public Map<String,Object> updateStatus(String tenantId){ | |||
| Map<String,Object> resultData=new HashMap(); | |||
| WxRentContract wxRentContract = new WxRentContract(); | |||
| wxRentContract.setTenantId(Integer.valueOf(tenantId)); | |||
| //将到期 | |||
| wxRentContract.setStatus(EnumRentContractStatus.CONTRACT_END_SOON.getCode()); | |||
| int endSoonCount=wxRentContractMapper.queryRentContractEndSoonStatus(wxRentContract); | |||
| wxRentContractMapper.updateRentContractEndSoonStatus(wxRentContract); | |||
| resultData.put("endSoonCount",endSoonCount); | |||
| //计租中 | |||
| int rendPaidCount=wxRentContractMapper.queryRentContractPaidStatus(wxRentContract); | |||
| wxRentContract.setStatus(EnumRentContractStatus.RENT_PAID.getCode()); | |||
| int rendPaidCount =wxRentContractMapper.queryRentContractPaidStatus(wxRentContract); | |||
| wxRentContractMapper.updateRentContractPaidStatus(wxRentContract); | |||
| resultData.put("rendPaidCount",rendPaidCount); | |||
| //到期 | |||
| wxRentContract.setStatus(EnumRentContractStatus.CONTRACT_END.getCode()); | |||
| int endCount=wxRentContractMapper.queryRentContractEndStatus(wxRentContract); | |||
| wxRentContractMapper.updateRentContractEndStatus(wxRentContract); | |||
| resultData.put("endCount",endCount); | |||
| return resultData; | |||
| } | |||
| @@ -72,7 +72,7 @@ | |||
| </select> | |||
| <select id="queryRentContractData" resultType="hashmap" parameterType="com.iformall.domain.po.WxRentContract"> | |||
| select rc.merchant_name,rc.rental_start_date,rc.rental_end_date,rc.`status`, | |||
| select rc.id,rc.merchant_name,rc.rental_start_date,rc.rental_end_date,rc.`status`, | |||
| rc.price,rc.contract_number,s.shop_number,f.floor_name,b.building_name | |||
| from wx_rent_contract rc | |||
| left join wx_shop s on rc.shop_id=s.id | |||
| @@ -83,20 +83,35 @@ | |||
| <if test=" null != shopNumber ">and s.`shop_number` like concat('%',#{shopNumber},'%')</if> | |||
| <if test=" null != status ">and rc.`status` = #{status}</if> | |||
| </where> | |||
| order by id desc | |||
| order by rc.id desc | |||
| </select> | |||
| <select id="queryRentContractWaitSignStatus" resultType="int" parameterType="com.iformall.domain.po.WxRentContract"> | |||
| select count(id) from wx_rent_contract where tenant_id=#{tenantId} and status=#{status} | |||
| </select> | |||
| <select id="queryRentContractEndSoonStatus" resultType="int"> | |||
| <select id="queryRentContractEndSoonStatus" resultType="int" parameterType="com.iformall.domain.po.WxRentContract"> | |||
| select count(id) from wx_rent_contract where tenant_id=#{tenantId} and DATEDIFF(rental_end_date,now()) <= 30 | |||
| </select> | |||
| <select id="queryRentContractPaidStatus" resultType="int"> | |||
| select count(id) from wx_rent_contract where rental_start_date <= now() and rental_end_date >= now() | |||
| <select id="queryRentContractPaidStatus" resultType="int" parameterType="com.iformall.domain.po.WxRentContract"> | |||
| select count(id) from wx_rent_contract where tenant_id=#{tenantId} and rental_start_date <= now() and rental_end_date >= now() | |||
| </select> | |||
| <select id="queryRentContractEndStatus" resultType="int" parameterType="com.iformall.domain.po.WxRentContract"> | |||
| select count(id) from wx_rent_contract where tenant_id=#{tenantId} and rental_end_date <now() | |||
| </select> | |||
| <update id="updateRentContractEndSoonStatus" parameterType="com.iformall.domain.po.WxRentContract"> | |||
| update wx_rent_contract set status=#{status} where tenant_id=#{tenantId} and status!=#{status} and status!=1 and DATEDIFF(rental_end_date,now()) <= 30 | |||
| </update> | |||
| <update id="updateRentContractPaidStatus" parameterType="com.iformall.domain.po.WxRentContract"> | |||
| update wx_rent_contract set status=#{status} where tenant_id=#{tenantId} and status!=#{status} and status!=1 and rental_start_date <= now() and rental_end_date >= now() | |||
| </update> | |||
| <update id="updateRentContractEndStatus" parameterType="com.iformall.domain.po.WxRentContract"> | |||
| update wx_rent_contract set status=#{status} where tenant_id=#{tenantId} and status!=#{status} and status!=1 and rental_end_date <now() | |||
| </update> | |||
| </mapper> | |||