PushController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375
  1. package com.lemon.lifecenter.controller;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import org.json.JSONObject;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.transaction.annotation.Propagation;
  10. import org.springframework.transaction.annotation.Transactional;
  11. import org.springframework.web.bind.annotation.ModelAttribute;
  12. import org.springframework.web.bind.annotation.RequestMapping;
  13. import org.springframework.web.bind.annotation.RequestMethod;
  14. import org.springframework.web.bind.annotation.RequestParam;
  15. import org.springframework.web.bind.annotation.ResponseBody;
  16. import org.springframework.web.servlet.ModelAndView;
  17. import com.lemon.lifecenter.common.LifeCenterConfigVO;
  18. import com.lemon.lifecenter.common.LifeCenterController;
  19. import com.lemon.lifecenter.common.LifeCenterFunction;
  20. import com.lemon.lifecenter.common.LifeCenterPaging;
  21. import com.lemon.lifecenter.common.LifeCenterSessionController;
  22. import com.lemon.lifecenter.dto.PatientDTO;
  23. import com.lemon.lifecenter.dto.PushDTO;
  24. import com.lemon.lifecenter.service.PatientService;
  25. import com.lemon.lifecenter.service.PushService;
  26. @Controller
  27. @RequestMapping( "/push" )
  28. public class PushController extends LifeCenterController {
  29. @Autowired
  30. private PushService pushService;
  31. @Autowired
  32. private PatientService patientService;
  33. @Autowired
  34. private LifeCenterConfigVO config;
  35. private LifeCenterPaging paging;
  36. @RequestMapping( "/list" )
  37. public ModelAndView list( @ModelAttribute("dto") final PushDTO dto,
  38. @RequestParam(value="page", required=false, defaultValue="1") int page,
  39. @RequestParam(value="y", required=false, defaultValue="") String y,
  40. @RequestParam(value="m", required=false, defaultValue="") String m,
  41. HttpServletRequest request,HttpServletResponse response ) {
  42. String nowYear = LifeCenterFunction.getNow( "yyyy" );
  43. String nowMonth = LifeCenterFunction.getNow( "MM" );
  44. if( y.equals( "" ) ) {
  45. y = nowYear;
  46. }
  47. if( m.equals( "" ) ) {
  48. m = nowMonth;
  49. }
  50. System.err.println( "sendType : " + dto.getSendType() );
  51. dto.setLimit( ( Integer.valueOf( page ) - 1 ) * config.pageDataSize );
  52. dto.setLimitMax( config.pageDataSize );
  53. dto.setYm( y + "" + m );
  54. int total = pushService.selectPushResultTableCount(dto);
  55. if( total > 0 ) {
  56. total = pushService.selectPushListTotal(dto);
  57. }
  58. List<PushDTO> pushList = new ArrayList<PushDTO>();
  59. if( total > 0 ) {
  60. pushList = pushService.selectPushListData(dto);
  61. }
  62. ModelAndView mv = setMV("push/list");
  63. String param = "y=" + y + "&m=" + m + "&sendType=" + dto.getSendType() + "&targetType=" + dto.getTargetType() + "&startDate=" + dto.getStartDate() + "&endDate=" + dto.getEndDate() + "&q=" + dto.getQ() + "&searchType=" + dto.getSearchType();
  64. paging = LifeCenterPaging.getInstance();
  65. paging.paging(config, total, page, param);
  66. mv.addObject( "paging", paging );
  67. mv.addObject( "total", total );
  68. mv.addObject( "pushList", pushList );
  69. mv.addObject( "q", dto.getQ() );
  70. mv.addObject( "searchType", dto.getSearchType() );
  71. mv.addObject( "targetType", dto.getTargetType() );
  72. mv.addObject( "sendType", dto.getSendType() );
  73. mv.addObject( "startDate", dto.getStartDate() );
  74. mv.addObject( "endDate", dto.getEndDate() );
  75. mv.addObject( "nowYear", nowYear );
  76. mv.addObject( "nowMonth", nowMonth );
  77. mv.addObject( "y", y );
  78. mv.addObject( "m", m );
  79. mv.addObject( "ym", y+""+m );
  80. return mv;
  81. }
  82. @RequestMapping( "/send" )
  83. public ModelAndView send( HttpServletRequest request,HttpServletResponse response ) {
  84. String sesCenterCode = LifeCenterSessionController.getSession( request, "sesCenterCode" );
  85. String sesGroupIdx = LifeCenterSessionController.getSession( request, "sesGroupIdx" );
  86. PatientDTO dto = new PatientDTO();
  87. dto.setCenterCode( Integer.parseInt( sesCenterCode ) );
  88. dto.setGroupIdx( Integer.valueOf( sesGroupIdx ) );
  89. dto.setState( "H" );
  90. int total = patientService.selectPatientCount(dto);
  91. List<PatientDTO> result = new ArrayList<PatientDTO>();
  92. if (total > 0) {
  93. dto.setLimit( 0 );
  94. dto.setLimitMax( total );
  95. result = patientService.selectPatientList(dto);
  96. }
  97. ModelAndView mv = setMV("push/send");
  98. mv.addObject( "total", total );
  99. mv.addObject( "patientList", result );
  100. return mv;
  101. }
  102. @RequestMapping( value="/getPushResultList", method = RequestMethod.POST )
  103. @ResponseBody
  104. public String getPushResultList(
  105. @RequestParam(value="resultType", required=true ) String resultType,
  106. @RequestParam(value="logIdx", required=true ) int logIdx,
  107. @RequestParam(value="pushIdx", required=true ) int pushIdx,
  108. @RequestParam(value="ym", required=true ) String ym ) {
  109. PushDTO dto = new PushDTO();
  110. dto.setPushIdx( pushIdx );
  111. dto.setLogIdx( logIdx );
  112. dto.setYm( ym );
  113. int total = pushService.selectPushResultTableCount(dto);
  114. JSONObject object = new JSONObject();
  115. if( resultType.toLowerCase().equals( "success" ) ) {
  116. dto.setState( "C" );
  117. dto.setSuccessYn( "Y" );
  118. } else if( resultType.toLowerCase().equals( "fail" ) ) {
  119. dto.setState( "C" );
  120. dto.setSuccessYn( "N" );
  121. } else if( resultType.toLowerCase().equals( "wait" ) ) {
  122. dto.setState( "W" );
  123. dto.setSuccessYn( "" );
  124. }
  125. if( total != 0 ) {
  126. total = pushService.selectPushResultTotal(dto);
  127. }
  128. List<PushDTO> result = new ArrayList<PushDTO>();
  129. if( total > 0 ) {
  130. result = pushService.selectPushResultList(dto);
  131. }
  132. object.put( "total" , total );
  133. object.put( "result" , result );
  134. return object.toString();
  135. }
  136. @RequestMapping( value="/send/insert", method=RequestMethod.POST )
  137. @Transactional(propagation=Propagation.REQUIRED)
  138. public String insertPushData(
  139. @ModelAttribute("dto") final PushDTO dto,
  140. @RequestParam(value="patientIdx", required=false, defaultValue="") String[] patientIdx,
  141. HttpServletRequest request,HttpServletResponse response ) {
  142. int sesCenterCode = Integer.valueOf( LifeCenterSessionController.getSession( request, "sesCenterCode" ) ) ;
  143. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  144. String remoteIp = LifeCenterFunction.getRemoteAddr( request );
  145. dto.setCenterCode( sesCenterCode );
  146. dto.setSender( sesId );
  147. dto.setSenderIp( remoteIp );
  148. dto.setSendState( "W" );
  149. pushService.insertPushData(dto);
  150. if( dto.getSelectType().equals( "PATIENT" ) && dto.getTargetType().equals( "P" ) ) {
  151. for( int i = 0; i < patientIdx.length; i ++ ) {
  152. dto.setPatientIdx( Integer.valueOf( patientIdx[i] ) );
  153. pushService.insertPushTargetTemp(dto);
  154. }
  155. }
  156. if( dto.getSendType().equals( "D" ) ) {
  157. return "redirect:/push/list";
  158. } else {
  159. return "redirect:/push/schedule/list";
  160. }
  161. }
  162. @RequestMapping( value="/schedule/update", method=RequestMethod.POST )
  163. @Transactional(propagation=Propagation.REQUIRED)
  164. public String updatePushData(
  165. @ModelAttribute("dto") final PushDTO dto,
  166. @RequestParam(value="patientIdx", required=false, defaultValue="") String[] patientIdx,
  167. HttpServletRequest request,HttpServletResponse response ) {
  168. String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  169. dto.setUpdateBy( sesId );
  170. pushService.updatePushData(dto);
  171. if( dto.getSelectType().equals( "PATIENT" ) && dto.getTargetType().equals( "P" ) ) {
  172. pushService.deletePushTargeTemp(dto);
  173. for( int i = 0; i < patientIdx.length; i ++ ) {
  174. dto.setPatientIdx( Integer.valueOf( patientIdx[i] ) );
  175. pushService.insertPushTargetTemp(dto);
  176. }
  177. }
  178. if( dto.getSendType().equals( "D" ) ) {
  179. return "redirect:/push/list";
  180. } else {
  181. return "redirect:/push/schedule/list";
  182. }
  183. }
  184. @RequestMapping( value="/schedule/delete", method=RequestMethod.POST )
  185. @Transactional(propagation=Propagation.REQUIRED)
  186. public String deletePushData(
  187. @ModelAttribute("dto") final PushDTO dto,
  188. HttpServletRequest request,HttpServletResponse response ) {
  189. pushService.deletePushTargeTemp(dto);
  190. pushService.deletePushData(dto);
  191. return "redirect:/push/schedule/list";
  192. }
  193. @RequestMapping( "schedule/info" )
  194. public ModelAndView info( @RequestParam( value="pushIdx", required=true ) int pushIdx,
  195. HttpServletRequest request,HttpServletResponse response ) {
  196. PushDTO dto = new PushDTO();
  197. dto.setPushIdx( pushIdx );
  198. int total = pushService.selectPushScheduleOneCount(dto);
  199. int patientTotal = 0;
  200. List<PushDTO> patientList = new ArrayList<PushDTO>();
  201. if( total > 0 ) {
  202. dto = pushService.selectPushScheduleOneData(dto);
  203. if( dto.getTargetType().equals( "P" ) ) {
  204. patientTotal = pushService.selectPushTargetTempCount(dto);
  205. if( patientTotal > 0 ) {
  206. patientList = pushService.selectPushTargetTempList(dto);
  207. }
  208. }
  209. }
  210. ModelAndView mv = setMV("push/info");
  211. mv.addObject( "total", total );
  212. mv.addObject( "result", dto );
  213. mv.addObject( "patientTotal", patientTotal );
  214. mv.addObject( "patientList", patientList );
  215. return mv;
  216. }
  217. @RequestMapping( value="/schedule/edit", method=RequestMethod.POST )
  218. public ModelAndView edit( @RequestParam( value="pushIdx", required=true ) int pushIdx,
  219. HttpServletRequest request,HttpServletResponse respons ) {
  220. String sesCenterCode = LifeCenterSessionController.getSession( request, "sesCenterCode" );
  221. String sesGroupIdx = LifeCenterSessionController.getSession( request, "sesGroupIdx" );
  222. PatientDTO pdto = new PatientDTO();
  223. pdto.setCenterCode( Integer.parseInt( sesCenterCode ) );
  224. pdto.setGroupIdx( Integer.valueOf( sesGroupIdx ) );
  225. pdto.setState( "H" );
  226. int patientAllTotal = patientService.selectPatientCount(pdto);
  227. List<PatientDTO> patientAllList = new ArrayList<PatientDTO>();
  228. if (patientAllTotal > 0) {
  229. pdto.setLimit( 0 );
  230. pdto.setLimitMax( patientAllTotal );
  231. patientAllList = patientService.selectPatientList(pdto);
  232. }
  233. PushDTO dto = new PushDTO();
  234. dto.setPushIdx( pushIdx );
  235. int total = pushService.selectPushScheduleOneCount(dto);
  236. int patientTotal = 0;
  237. List<PushDTO> patientList = new ArrayList<PushDTO>();
  238. ArrayList<String> checkList = new ArrayList<String>();
  239. if( total > 0 ) {
  240. dto = pushService.selectPushScheduleOneData(dto);
  241. if( dto.getTargetType().equals( "P" ) ) {
  242. patientTotal = pushService.selectPushTargetTempCount(dto);
  243. if( patientTotal > 0 ) {
  244. patientList = pushService.selectPushTargetTempList(dto);
  245. for( PushDTO p : patientList ) {
  246. checkList.add( String.valueOf( p.getPatientIdx() ) );
  247. }
  248. }
  249. }
  250. }
  251. ModelAndView mv = setMV("push/edit");
  252. mv.addObject( "total", total );
  253. mv.addObject( "result", dto );
  254. mv.addObject( "patientTotal", patientTotal );
  255. mv.addObject( "patientList", patientList );
  256. mv.addObject( "checkList", checkList );
  257. mv.addObject( "patientAllTotal", patientAllTotal );
  258. mv.addObject( "patientAllList", patientAllList );
  259. return mv;
  260. }
  261. @RequestMapping( "/schedule/list" )
  262. public ModelAndView schedule( HttpServletRequest request,HttpServletResponse response ) {
  263. int sesCenterCode = Integer.valueOf( LifeCenterSessionController.getSession( request, "sesCenterCode" ) ) ;
  264. //String sesId = LifeCenterSessionController.getSession( request, "sesId" );
  265. PushDTO dto = new PushDTO();
  266. dto.setCenterCode( sesCenterCode );
  267. int total = pushService.selectPushScheduleCount(dto);
  268. List<PushDTO> scheduleList = new ArrayList<PushDTO>();
  269. if( total > 0 ) {
  270. scheduleList = pushService.selectPushScheduleList(dto);
  271. }
  272. ModelAndView mv = setMV("push/schedule");
  273. mv.addObject( "total", total );
  274. mv.addObject( "scheduleList", scheduleList );
  275. return mv;
  276. }
  277. }