package com.fuzamei.controller; import com.fuzamei.dto.FilterDto; import com.fuzamei.entity.Asset; import com.fuzamei.enums.CodeEnum; import com.fuzamei.service.AssetService; import com.fuzamei.service.BillOrderActService; import com.fuzamei.util.PageData; import com.fuzamei.util.ResponseUtil; import com.fuzamei.util.StringDivisionUtil; import com.fuzamei.dto.OrderDto; import com.fuzamei.service.BillService; import com.fuzamei.vo.AssetDetailVo; import com.fuzamei.vo.BillDetailVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; import java.util.logging.Logger; /** * @file_name: BillControllerInterface * @Description: * @author: 刘林杰 * @date: 五月 2018/5/4 9:50 * @version: */ @RestController @RequestMapping(value = "bill") @Component public class BillController { private final static Logger log = Logger.getLogger(BillController.class.getName()); @Autowired private BillService billService; @Autowired private AssetService assetService; @Autowired private BillOrderActService billOrderActService; /** * 根据筛选类的内部属性 例如状态,企业,时间来进行筛选单据,并且对其进行分页处理后传递前段 * @param filterDto 界面筛选条件类 * @return ResponseUtil 所有请求都返回这个类,内部code需使用枚举定义, */ @RequestMapping(value ="/selectBillByFilterVo" ,method = RequestMethod.POST) public ResponseUtil selectBillByFilterVo(@RequestBody FilterDto filterDto){ PageData pageData = billService.getInitiateBillInfo(filterDto); if(pageData != null) { return ResponseUtil.getResult(CodeEnum.COMMONS_SUCCESS.getCode(),true,null); }else { return ResponseUtil.getResult(CodeEnum.COMMONS_ERROR.getCode(), true, null); } } /** * 获取当前用户的账户余额,包括人民币和单据 * @return ResponseUtil 错误代码待定,成功返回UserAccountVo */ @GetMapping(value = "/getAccountLeft") public ResponseUtil getAccountLeft(){ AssetDetailVo assetDetailVo = assetService.getCurrentUserAsset("1"); if(assetDetailVo != null) { return ResponseUtil.getResult(CodeEnum.COMMONS_SUCCESS.getCode(),true,assetDetailVo); }else { return ResponseUtil.getResult(CodeEnum.COMMONS_ERROR.getCode(), true, null); } } /** * 获取单据详细信息, * @param filterDto * @Return ResponseUtil 传入数据为AccountLeftDto */ @PostMapping(value = "/getBill") public ResponseUtil getBillDetail(@RequestBody FilterDto filterDto){ Integer orderId = filterDto.getOrderId(); BillDetailVo billDetailVo = billService.getBillDetailInfo(Integer.toString(orderId)); if(billDetailVo != null) { return ResponseUtil.getResult(CodeEnum.COMMONS_SUCCESS.getCode(),true,billDetailVo); }else { return ResponseUtil.getResult(CodeEnum.COMMONS_ERROR.getCode(), true, null); } } /** * 用户开单, * @param orderDto 开单信息 * @Return ResponseUtil */ @PostMapping(value = "/makeBill") public ResponseUtil makeBill(@Validated(OrderDto.MakeBill.class)@RequestBody OrderDto orderDto){ System.out.println(orderDto.toString()); //获取结果值 int result = billService.insertOrder(orderDto); if(result > 0) { return ResponseUtil.getResult(207, true, null); }else { if(result == 0) { return ResponseUtil.getResult(507, false, null); } else if (result == -1) { return ResponseUtil.getResult(507, false, null); } else if (result == -2) { return ResponseUtil.getResult(507, false, null); } else { return ResponseUtil.getResult(507, false, null); } } } /** * 对单据进行签收 * */ @GetMapping(value = "/confirmBill") public ResponseUtil confirmBill(@RequestParam String billId){ int result = billService.confirmBill(billId); if(result > 0) { return ResponseUtil.getResult(208, true, null); }else { if(result == 0) { return ResponseUtil.getResult(508, false, null); } else if (result == -1) { return ResponseUtil.getResult(508, false, null); } else if (result == -2) { return ResponseUtil.getResult(508, false, null); } else { return ResponseUtil.getResult(508, false, null); } } } /** * 用户对未签收的单据进行撤销 * @param billId 单据编号 * */ @GetMapping(value = "/cancelBill") public ResponseUtil cancelBillController(@RequestParam String billId){ //TODO订单流转表的billId是自增的,前端传进来的billId是String类型的,这里需要类型转换再交给billService.cancelBill(billId)方法 int result = billService.cancelBill(billId); if(result > 0) { return ResponseUtil.getResult(209, true, null); }else { if(result == 0) { return ResponseUtil.getResult(509, false, null); } else if (result == -1) { return ResponseUtil.getResult(509, false, null); } else if (result == -2) { return ResponseUtil.getResult(509, false, null); } else { return ResponseUtil.getResult(509, false, null); } } } /** * 用户重新编辑单据 * @param orderDto * @return */ @PostMapping(value = "/editBill") public ResponseUtil editBIllController(@Validated(OrderDto.MakeBill.class)@RequestBody OrderDto orderDto){ int result = billService.editBill(orderDto); if(result > 0) { return ResponseUtil.getResult(210, true, null); }else { if(result == 0) { return ResponseUtil.getResult(510, false, null); } else if (result == -1) { return ResponseUtil.getResult(510, false, null); } else if (result == -2) { return ResponseUtil.getResult(510, false, null); } else { return ResponseUtil.getResult(510, false, null); } } } // /** // * 用户对单据可兑付余额(不知道用哪) // * @param orderId // * @return // */ // @GetMapping(value = "/getCashBillInfo") // public ResponseUtil getCashBillInfo(@RequestParam String orderId){ // return ResponseUtil.returnErrorWithData(billService.getCashBillInfo(orderId)); // } /** * 用户对单据进行兑付 */ @Transactional(rollbackFor = Exception.class) @PostMapping(value = "/cashBill") public ResponseUtil cashBill(@RequestParam String billOrderActId) { //这里需要用户模块获取到用户的id 整合之前使用id 1 //分割字符串获取流转表idList List billOrderActIdList = StringDivisionUtil.stringDivision(billOrderActId); String userId = null;//用户id用session传递 int result = billService.cashBill(billOrderActIdList,"1"); if(result > 0) { return ResponseUtil.getResult(CodeEnum.COMMONS_SUCCESS.getCode(),true,null); }else { return ResponseUtil.getResult(CodeEnum.COMMONS_ERROR.getCode(), true, null); } } }