package easydo.technology.controller; import easydo.technology.components.JdbcClient; import easydo.technology.enums.MESEnum; import easydo.technology.exception.BizException; import easydo.technology.model.SalePlan; import easydo.technology.service.FlowNoService; import easydo.technology.utils.StringUtil; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.sql.DataSource; import java.sql.Connection; import java.util.List; import java.util.Map; @RestController @RequestMapping("/salePlan") public class SalePlanController { @Resource JdbcClient jdbcClient; @Resource DataSource dataSource; @Resource FlowNoService flowNoService; @RequestMapping(value = "/getList") public Object getList(@RequestBody Map map) throws Exception { List list = jdbcClient.getJdbcList(map, SalePlan.class); return new ResponseEntity<>(list, HttpStatus.OK); } @RequestMapping(value = "/getPage") public Object getPage(@RequestBody Map map) throws Exception { Connection connection = dataSource.getConnection(); try { Map recordsPage = jdbcClient.getJdbcPage(map, SalePlan.class, connection); List records = (List) recordsPage.get("records"); return new ResponseEntity<>(recordsPage, HttpStatus.OK); } catch (Exception e) { throw new BizException(e.getMessage()); } finally { connection.close(); } } @RequestMapping(value = "/save") public Object save(@RequestBody SalePlan model) throws Exception { Connection connection = dataSource.getConnection(); try { connection.setAutoCommit(false); generateCode(model, connection); jdbcClient.jdbcInsert(model, connection); connection.commit(); return new ResponseEntity<>(model, HttpStatus.OK); } catch (Exception e) { connection.rollback(); throw new BizException(e.getMessage()); } finally { connection.close(); } } @RequestMapping(value = "/update") public Object update(@RequestBody SalePlan model) throws Exception { Connection connection = dataSource.getConnection(); try { connection.setAutoCommit(false); jdbcClient.jdbcUpdateById(model, connection); connection.commit(); return new ResponseEntity<>(HttpStatus.OK); } catch (Exception e) { connection.rollback(); throw new BizException(e.getMessage()); } finally { connection.close(); } } @RequestMapping(value = "/remove") public Object deleteProgram(@RequestBody SalePlan model) throws Exception { Connection connection = dataSource.getConnection(); try { jdbcClient.jdbcRemoveById(model, connection); return new ResponseEntity<>(HttpStatus.OK); } catch (Exception e) { throw new BizException(e.getMessage()); } finally { connection.close(); } } private synchronized void generateCode(SalePlan model, Connection connection) throws Exception { if (StringUtil.isEmpty(model.getCode())) { while (true) { String flowNo = flowNoService.getFlowNo(MESEnum.FLOW_NO_TYPE_SALE_PLAN.getValue(), connection); SalePlan param = new SalePlan(); param.setCode(flowNo); int count = jdbcClient.getJdbcCount(param, connection); if (count == 0) { model.setCode(flowNo); break; } } } else { SalePlan param = new SalePlan(); param.setCode(model.getCode()); int count = jdbcClient.getJdbcCount(param, connection); if (count > 0) { throw new BizException("编号已存在,请重新填写"); } } } }