package com.huiju.estateagents.property.controller;
import com.alibaba.fastjson.JSONObject;
import com.huiju.estateagents.base.BaseController;
import com.huiju.estateagents.base.ResponseBean;
import com.huiju.estateagents.center.taUser.entity.TaUser;
import com.huiju.estateagents.property.common.UserElement;
import com.huiju.estateagents.property.model.Bill;
import com.huiju.estateagents.property.model.BillInvoice;
import com.huiju.estateagents.property.service.IBillInvoiceService;
import com.huiju.estateagents.property.service.IBillService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.OutputStream;
import java.util.List;
/**
*
* 缴费单 前端控制器
*
*
* @author weiximei
* @since 2019-02-13
*/
@RestController
@RequestMapping("/api")
@Api(value = "缴费单 API", description = "缴费单 API")
public class BillInvoiceController extends BaseController {
@Autowired
private IBillInvoiceService iBillInvoiceService;
@Autowired
private IBillService iBillService;
// @ApiOperation(value = "查询缴费单", notes = "查询缴费单")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "parameter", value = "billId: 缴费项目id," +
"phase: 期,building: 栋,unit: 单元,roomNo: 户号,ownerName: 业主姓名," +
"billStatus: 缴费状态,payName: 缴费人,pageSize: 一页多少行,pageNum: 第几页"),
})
@RequestMapping(value = "/admin/bill/invoice/list", method = RequestMethod.POST)
public ResponseBean getBillList(HttpServletRequest request, @RequestBody String parameter) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
responseBean = iBillInvoiceService.getBillList(parameter, userElement);
return responseBean;
}
@RequestMapping(value = "/admin/bill/invoice/collection", method = RequestMethod.POST)
public ResponseBean collectionBillList(HttpServletRequest request, @RequestBody BillInvoice billInvoice) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
responseBean = iBillInvoiceService.collectionBillList(billInvoice, userElement);
return responseBean;
}
// @ApiOperation(value = "修改缴费项 收费项名称,缴费项说明,截止时间", notes = "修改缴费项 收费项名称,缴费项说明,截止时间")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "parameter", value = "billName收费项名称,billExplain缴费项说明,endDate截止时间"),
})
@RequestMapping(value = "/admin/bill/invoice/updateBill", method = RequestMethod.PUT)
public ResponseBean updateBill(HttpServletRequest request, @RequestBody Bill bill) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
responseBean = iBillService.updateBillNameAndBillExplainAndEndDate(userElement, bill);
return responseBean;
}
// @ApiOperation(value = "根据 id集合 删除缴费单", notes = "根据 id集合 删除缴费单")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "ids", value = "id集合"),
})
@RequestMapping(value = "/admin/bill/invoice/delete", method = RequestMethod.POST)
public ResponseBean delete(HttpServletRequest request, @RequestBody List ids) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
responseBean = iBillInvoiceService.deleteBillInvoice(ids, userElement);
return responseBean;
}
// @ApiOperation(value = "设置线下缴费", notes = "设置线下缴费")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "ids", value = "id集合"),
})
@RequestMapping(value = "/admin/bill/invoice/offlinePayment", method = RequestMethod.POST)
public ResponseBean offlinePayment(HttpServletRequest request, @RequestBody List ids) {
ResponseBean responseBean = new ResponseBean();
responseBean = iBillInvoiceService.offlinePayment(ids, getUserId(request).toString());
return responseBean;
}
// @ApiOperation(value = "由前台批量添加收费单, 默认定为 作废", notes = "由前台批量添加收费单, 默认定为 作废")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "parameter", value = "billId缴费项编号,phase期/区," +
"building栋,unit单元,roomNo户号,worthOf截止时间(催缴日期),billInvoiceExplain收费单说明,payPrice收费金额"),
})
@RequestMapping(value = "/admin/bill/invoice/addTempBillInvoice", method = RequestMethod.POST)
public ResponseBean addTempBillInvoice(HttpServletRequest request, @RequestBody String parameter) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
responseBean = iBillInvoiceService.addTempBillInvoice(parameter, userElement);
return responseBean;
}
// @ApiOperation(value = "由前台批量添加收费单, 进行统一的提交, 修改为有效", notes = "由前台批量添加收费单, 进行统一的提交, 修改为有效")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "ids", value = "id集合"),
})
@RequestMapping(value = "/admin/bill/invoice/updateBillInvoiceStatus", method = RequestMethod.POST)
public ResponseBean updateBillInvoiceStatus(HttpServletRequest request, @RequestBody List ids) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
responseBean = iBillInvoiceService.updateBillInvoiceStatus(ids, userElement);
return responseBean;
}
// @ApiOperation(value = "查询前台批量添加的收费单, 状态是作废", notes = "查询前台批量添加的收费单, 状态是作废")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "path", name = "billId", value = "缴费id"),
})
@RequestMapping(value = "/admin/bill/invoice/getTempBillInvoice/{billId}", method = RequestMethod.GET)
public ResponseBean getTempBillInvoice(HttpServletRequest request, @PathVariable("billId") Integer billId) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
responseBean = iBillInvoiceService.getTempBillInvoice(billId, userElement);
return responseBean;
}
// @ApiOperation(value = "根据id删除收费单, 只能删除作废的", notes = "根据id删除收费单, 只能删除作废的")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "path", name = "billId", value = "缴费id"),
})
@RequestMapping(value = "/admin/bill/invoice/deleteTempBillInvoice/{billId}", method = RequestMethod.DELETE)
public ResponseBean deleteTempBillInvoice(HttpServletRequest request, @PathVariable("billId") Integer billId) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
responseBean = iBillInvoiceService.deleteTempBillInvoice(billId, userElement);
return responseBean;
}
// @ApiOperation(value = "根据缴费单id, 修改金额", notes = "根据缴费单id, 修改金额")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "path", name = "billId", value = "缴费id"),
@ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "parameter", value = "payPrice金额"),
})
@RequestMapping(value = "/admin/bill/invoice/updateBillInvoiceIdPayPrice/{billId}", method = RequestMethod.POST)
public ResponseBean updateBillInvoiceIdPayPrice(HttpServletRequest request, @PathVariable Integer billId, @RequestBody String parameter) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
Double payPrice = JSONObject.parseObject(parameter).getDouble("payPrice");
responseBean = iBillInvoiceService.updateBillInvoiceIdPayPrice(billId, (int) (payPrice * 100 ), userElement);
return responseBean;
}
// @ApiOperation(value = "根据缴费单id, 修改收费说明", notes = "根据缴费单id, 修改收费说明")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "path", name = "billId", value = "缴费id"),
@ApiImplicitParam(dataTypeClass = String.class, paramType = "body", name = "parameter", value = "billInvoiceExplain收费说明"),
})
@RequestMapping(value = "/admin/bill/invoice/updateBillInvoiceIdBillInvoiceExplain/{billId}", method = RequestMethod.POST)
public ResponseBean updateBillInvoiceIdBillInvoiceExplain(HttpServletRequest request, @PathVariable Integer billId, @RequestBody String parameter) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
String billInvoiceExplain = JSONObject.parseObject(parameter).getString("billInvoiceExplain");
if (StringUtils.isBlank(billInvoiceExplain)) {
responseBean.addError("收费说明不能为空!");
return responseBean;
}
BillInvoice billInvoice = iBillInvoiceService.getById(billId);
billInvoice.setBillInvoiceExplain(billInvoiceExplain);
boolean b = iBillInvoiceService.updateById(billInvoice);
if (b) {
responseBean.addSuccess("操作成功!");
return responseBean;
}
responseBean.addError("操作失败!");
return responseBean;
}
// @ApiOperation(value = "导出Excel", notes = "导出Excel")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "path", name = "billId", value = "缴费id"),
})
@RequestMapping(value = "/admin/bill/invoice/exportExcel/{billId}", method = RequestMethod.GET)
public void exportExcel(HttpServletResponse response, HttpServletRequest request, @PathVariable("billId") Integer billId) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
HSSFWorkbook workbook = (HSSFWorkbook) iBillInvoiceService.exportExcel(userElement, billId).getData();
//响应到客户端
try {
response.setContentType("application/octet-stream");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-disposition", "attachment;filename=缴费单.xlsx");
OutputStream os = response.getOutputStream();
workbook.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// @ApiOperation(value = "根据缴费项id, 查询草稿", notes = "根据缴费项id, 查询草稿")
@ApiImplicitParams({
@ApiImplicitParam(dataTypeClass = String.class, paramType = "path", name = "billId", value = "billId缴费项id,pageNum当前页,pageSize一页多少行"),
})
@RequestMapping(value = "/admin/bill/invoice/getInvoiceInvalid", method = RequestMethod.POST)
public ResponseBean getInvoiceInvalid(HttpServletRequest request, @RequestBody String parameter) {
ResponseBean responseBean = new ResponseBean();
TaUser userElement = getTaUser(request);
responseBean = iBillInvoiceService.getInvoiceInvalid(userElement, parameter);
return responseBean;
}
}