Pastebin: Java 仕事区分 ソースメモ

Format
Plain text
Post date
2016-11-30 23:23
Publication Period
Unlimited
  1. ____Action.java_____
  2. Logger logger = Logger.getGlobal();
  3. @GET
  4. @Path("/action/mworkkbn")
  5. @Produces(MediaType.APPLICATION_JSON)
  6. public HashMap<String, Object> selectmworkkbn(){
  7. logger.log(Level.INFO, "作業者情報取得API 処理開始");
  8. // トランザクションの取得
  9. TransactionManager tm = AppConfig.singleton().getTransactionManager();
  10. //返却値
  11. HashMap<String,Object> vResult = new HashMap<String,Object>();
  12. // MWorkerInfo
  13. MWorkKbnDao daoWInfo = new MWorkKbnDaoImpl();
  14. List<MWorkKbn> resInfo = tm.required(() -> {
  15. try{
  16. return daoWInfo.selectAll();
  17. }catch(Exception e){
  18. e.getStackTrace();
  19. return null ;
  20. }
  21. });
  22. vResult.put("result", (resInfo == null ? false : true)); //検索結果、1件以上取得できた場合はtrue
  23. vResult.put("data", resInfo); //検索結果
  24. // 処理終了
  25. logger.log(Level.INFO, "作業者情報取得API 処理終了");
  26. return vResult;
  27. }
  28. /**
  29. * 保存
  30. * info.get("updateCount")の存在チェックを行い、有無でInsertまたはUpdate振り分ける
  31. * @param data
  32. * @return
  33. * (登録) 0:正常/-1:MWorkerInfo重複エラー/
  34. * -10:該当グループコードなしエラー/-20:該当シフト区分なしエラー/-99:その他エラー
  35. * (更新) 1:正常/-5:MWorkerInfo更新対象存在なしエラー/-6:更新回数エラー
  36. * /-10:該当グループコードなしエラー/-20:該当シフト区分なしエラー/-99:その他エラー
  37. */
  38. @POST
  39. @Path("/pc005/execute")
  40. @Consumes(MediaType.APPLICATION_JSON)
  41. @Produces(MediaType.TEXT_PLAIN)
  42. public int execute(LinkedHashMap<String, Object> data){
  43. //初期化
  44. int vResult = -99;
  45. //引数よりデータ取得
  46. List<LinkedHashMap<String,Object>> work = Utility.autoCast(data.get("inputData"));
  47. //TODO:パラメータの中に'inputData'が存在しない場合はエラー
  48. if (work == null){
  49. vResult = -98;
  50. }
  51. // トランザクションの取得
  52. TransactionManager tm = AppConfig.singleton().getTransactionManager();
  53. vResult = tm.required(() -> {
  54. try{
  55. LinkedHashMap<String,Object> info = work.get(0);
  56. if(info.get("delFlg") != ""){
  57. //論理削除
  58. return this.deleteWorkKbn(data);
  59. }
  60. if(info.get("updateCount") == null){
  61. //登録
  62. return this.insertWorkKbn(data);
  63. }else{
  64. //更新
  65. return this.updateWorkKbn(data);
  66. }
  67. }catch(Exception e){
  68. e.getStackTrace();
  69. tm.setRollbackOnly();
  70. return -99;
  71. }
  72. });
  73. return vResult;
  74. }
  75. /* @POST
  76. @Path("/pc005/mworkkbn")
  77. @Produces(MediaType.APPLICATION_JSON)*/
  78. public int insertWorkKbn(LinkedHashMap<String , Object> data){
  79. //初期化
  80. int vResult = -99;
  81. //引数よりデータ取得
  82. List<LinkedHashMap<String,Object>> work = Utility.autoCast(data.get("inputData"));
  83. // トランザクションの取得
  84. TransactionManager tm = AppConfig.singleton().getTransactionManager();
  85. vResult = tm.required(() -> {
  86. try{
  87. LinkedHashMap<String,Object> kbn = work.get(0);
  88. String term = (String)kbn.get("term");
  89. String pgmId = (String)kbn.get("pgmId");
  90. MWorkKbnDao daoMWorkKbn = new MWorkKbnDaoImpl();
  91. //MWorkerInfo重複チェック
  92. int cnt = daoMWorkKbn.selectCountMWorkKbn((String)kbn.get("eigyoCd"), (String)kbn.get("workName"));
  93. if(cnt > 0){
  94. tm.setRollbackOnly();
  95. return -1;
  96. }
  97. //エラーなしの場合は登録
  98. MWorkKbn MWorkKbnDto = new MWorkKbn();
  99. setInsertContentsInfo(MWorkKbnDto,kbn,term,pgmId);
  100. daoMWorkKbn.insertMWorkKbn(MWorkKbnDto);
  101. }catch(Exception e){
  102. e.getStackTrace();
  103. tm.setRollbackOnly();
  104. return -99;
  105. }
  106. return 0; //エラーが発生しなかった場合は0を返す
  107. });
  108. // 処理終了
  109. logger.log(Level.INFO, "作業者情報登録 処理終了");
  110. return vResult;
  111. }
  112. /**
  113. * 作業者マスタ更新
  114. *
  115. * @return リターンコード
  116. * 1:正常/-5:MWorkerInfo更新対象存在なしエラー/-6:更新回数エラー
  117. * /-10:該当グループコードなしエラー/-20:該当シフト区分なしエラー/-99:その他エラー
  118. */
  119. public int updateWorkKbn(LinkedHashMap<String, Object> data){
  120. //初期化
  121. int vResult = -99;
  122. //引数よりデータ取得
  123. List<LinkedHashMap<String, Object>> work = Utility.autoCast(data.get("inputData"));
  124. // トランザクションの取得
  125. TransactionManager tm = AppConfig.singleton().getTransactionManager();
  126. vResult = tm.required(() -> {
  127. try{
  128. LinkedHashMap<String,Object> kbn = Utility.autoCast(work.get(0));
  129. String term = (String)kbn.get("term");
  130. String pgmId = (String)kbn.get("pgmId");
  131. MWorkKbnDao daoMWorkKbn = new MWorkKbnDaoImpl();
  132. //MWorkerInfoデータ存在チェック
  133. MWorkKbn MWorkKbnDto = daoMWorkKbn.selectMWorkKbn((String)kbn.get("eigyoCd"), (String)kbn.get("workName"));
  134. if(MWorkKbnDto == null){
  135. //更新対象存在なしのためエラー
  136. tm.setRollbackOnly();
  137. return -5;
  138. }
  139. //更新回数チェック(データ存在チェック込)
  140. if( MWorkKbnDto.getUpdateCount() != (Integer)kbn.get("updateCount")){
  141. //更新回数が異なる(他プロセスですでに更新されている)ため、エラー
  142. tm.setRollbackOnly();
  143. return -6;
  144. }
  145. //更新(スケジュールやスキルはInsertの場合もあるので、曜日毎に存在チェックが必要)
  146. //変更内容の反映
  147. setUpdateContentsInfo(MWorkKbnDto,kbn,term,pgmId);
  148. //MWorkerInfoの更新
  149. daoMWorkKbn.updateMWorkKbn(MWorkKbnDto);
  150. }catch(Exception e){
  151. e.getStackTrace();
  152. tm.setRollbackOnly();
  153. return -99;
  154. }
  155. return 0; //エラーが発生しなかった場合は0を返す
  156. });
  157. return vResult;
  158. }
  159. public int deleteWorkKbn(LinkedHashMap<String, Object> data){
  160. //初期化
  161. int vResult = -99;
  162. //引数よりデータ取得
  163. List<LinkedHashMap<String, Object>> work = Utility.autoCast(data.get("inputData"));
  164. // トランザクションの取得
  165. TransactionManager tm = AppConfig.singleton().getTransactionManager();
  166. vResult = tm.required(() -> {
  167. try{
  168. LinkedHashMap<String,Object> kbn = Utility.autoCast(work.get(0));
  169. String term = (String)kbn.get("term");
  170. String pgmId = (String)kbn.get("pgmId");
  171. MWorkKbnDao daoMWorkKbn = new MWorkKbnDaoImpl();
  172. //MWorkerInfoデータ存在チェック
  173. MWorkKbn MWorkKbnDto = daoMWorkKbn.selectMWorkKbn((String)kbn.get("eigyoCd"), (String)kbn.get("workName"));
  174. if(MWorkKbnDto == null){
  175. //更新対象存在なしのためエラー
  176. tm.setRollbackOnly();
  177. return -7;
  178. }
  179. //更新(スケジュールやスキルはInsertの場合もあるので、曜日毎に存在チェックが必要)
  180. //変更内容の反映
  181. setDelteContentsInfo(MWorkKbnDto,kbn,term,pgmId);
  182. //MWorkerInfoの更新
  183. daoMWorkKbn.deleteupdateMWorkKbn(MWorkKbnDto);
  184. }catch(Exception e){
  185. e.getStackTrace();
  186. tm.setRollbackOnly();
  187. return -99;
  188. }
  189. return 0; //エラーが発生しなかった場合は0を返す
  190. });
  191. return vResult;
  192. }
  193. /**
  194. * 登録内容の設定(MWorkerInfo)
  195. * @param dataWorkerInfo
  196. * @param term
  197. * @param pgmId
  198. * @throws InvocationTargetException
  199. * @throws IllegalAccessException
  200. */
  201. private void setInsertContentsInfo(MWorkKbn MWorkKbnDto,LinkedHashMap<String,Object> kbn,String term,String pgmId) throws IllegalAccessException, InvocationTargetException{
  202. //infoの内容をworkerInfoDtoにうつす
  203. BeanUtils.populate(MWorkKbnDto,kbn);
  204. MWorkKbnDto.setCreateTermid(term);
  205. MWorkKbnDto.setCreatePgmid(pgmId);
  206. }
  207. /**
  208. * 変更内容の反映(MWorkerInfo)
  209. * @param targetInfo
  210. * @param dataWorkerInfo
  211. * @param term
  212. * @throws InvocationTargetException
  213. * @throws IllegalAccessException
  214. * @parm pgmId
  215. */
  216. private void setUpdateContentsInfo(MWorkKbn MWorkKbnDto, LinkedHashMap<String,Object> item,String term,String pgmId) throws IllegalAccessException, InvocationTargetException {
  217. BeanUtils.populate(MWorkKbnDto,item);
  218. MWorkKbnDto.setUpdateTermid(term);
  219. MWorkKbnDto.setUpdatePgmid(pgmId);
  220. }
  221. /**
  222. * 変更内容の反映(MWorkerInfo)
  223. * @param targetInfo
  224. * @param dataWorkerInfo
  225. * @param term
  226. * @throws InvocationTargetException
  227. * @throws IllegalAccessException
  228. * @parm pgmId
  229. */
  230. private void setDelteContentsInfo(MWorkKbn MWorkKbnDto, LinkedHashMap<String,Object> item,String term,String pgmId) throws IllegalAccessException, InvocationTargetException {
  231. BeanUtils.populate(MWorkKbnDto,item);
  232. MWorkKbnDto.setUpdateTermid(term);
  233. MWorkKbnDto.setUpdatePgmid(pgmId);
  234. }
  235. }
  236. Dao.java
  237. @Select
  238. List<MWorkKbn> selectAll();
  239. @Select
  240. List<MatrixData> selectWorkerCount(String startYMD, String endYMD);
  241. @Select
  242. MWorkKbn selectMWorkKbn( String eigyoCd , String workName);
  243. /**
  244. * @param eigyoCd
  245. * @param ninuCd
  246. * @param workKbn
  247. * @return the MWorkKbn entity
  248. */
  249. @Select
  250. MWorkKbn selectById(String eigyoCd, String workKbn);
  251. /**
  252. * @param entity
  253. * @return affected rows
  254. */
  255. @Insert
  256. int insert(MWorkKbn entity);
  257. /**
  258. * @param entity
  259. * @return affected rows
  260. */
  261. @Update
  262. int update(MWorkKbn entity);
  263. /**
  264. * @param entity
  265. * @return affected rows
  266. */
  267. @Delete
  268. int delete(MWorkKbn entity);
  269. /**
  270. * DEL_FLG=' 'のMWorkKbnを取得します
  271. * @param eigyoCd
  272. * @return
  273. */
  274. @Select
  275. List<MWorkKbn> selectWorkKbn(String eigyoCd);
  276. @Select
  277. int selectCountMWorkKbn(String eigyoCd ,String workName);
  278. @Insert(sqlFile = true)
  279. int insertMWorkKbn(MWorkKbn entity);
  280. @Update(sqlFile = true)
  281. int updateMWorkKbn(MWorkKbn entity);
  282. @Update(sqlFile = true)
  283. int deleteupdateMWorkKbn( MWorkKbn entity) ;
  284. }
  285. update.sql
  286. UPDATE
  287. m_work_kbn
  288. SET
  289. del_flg = /* entity.delFlg */''
  290. , update_count = update_count + 1
  291. , update_dt = sysdate
  292. , update_termid = /* entity.updateTermid */'test'
  293. , update_pgmid = /* entity.updatePgmid */'test'
  294. WHERE
  295. eigyo_cd = /* entity.eigyoCd */'0001'
  296. AND
  297. work_name = /* entity.workName */'a'
  298. insert.sql
  299. UPDATE
  300. m_work_kbn
  301. SET
  302. del_flg = /* entity.delFlg */''
  303. , update_count = update_count + 1
  304. , update_dt = sysdate
  305. , update_termid = /* entity.updateTermid */'test'
  306. , update_pgmid = /* entity.updatePgmid */'test'
  307. WHERE
  308. eigyo_cd = /* entity.eigyoCd */'0001'
  309. AND
  310. work_name = /* entity.workName */'a'
  311. delete.sql(論理削除)
  312. UPDATE
  313. M_WORK_KBN
  314. SET
  315. del_flg = 1
  316. WHERE
  317. eigyo_cd = /* entity.eigyoCd */'0001'
  318. AND
  319. work_name = /* entity.workName */'a'
  320. html
  321. <!DOCTYPE html>
  322. <html>
  323. <head>
  324. <meta charset="utf-8" />
  325. <title>仕事区分</title>
  326. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  327. <script type="text/javascript" src="../../01_common/common.js"></script>
  328. <script type="text/javascript" src="../../01_common/const.js"></script>
  329. <script type="text/javascript" src="MWorkKbn.js"></script>
  330. </head>
  331. <body>
  332. <table id = Kbn>
  333. <thead id = "thead">
  334. <tr><td class = "eigyo_cd">営業コード</td><td><input type = "text" id = "eigyo_cd"></td></tr>
  335. <tr><td class = "work_name">作業区分名</td><td><select id = "select_work_name" ></select></td></tr>
  336. <tr><td class = "work_kbn">仕事区分</td><td><input type = "text" id = "work_kbn" ></td></tr>
  337. </thead>
  338. </table>
  339. <input type = "button" name = "button_entry" value = "登録" id = "button_entry" />
  340. <input type = "button" name = "button_update" value = "更新" id = "button_update" />
  341. <input type = "button" name = "button_deletion" value = "論理削除" id = "button_deletion" />
  342. <input type = "button" name = "button_clear" value = "入力クリア" id = "button_clear" />
  343. </body>
  344. </html>
  345. js
  346. const SCREEN_ID = 'PC005'
  347. window.onload = function(){
  348. var json_Array = [] ;
  349. var json_Kbn_Array = [] ;
  350. var select_Data_Array = [] ;
  351. var Kbn = document.getElementById( 'Kbn' ) ;
  352. var select_Data_Array = [] ;
  353. var select_Data_Arr = 0 ;
  354. var thread = document.getElementById("thread") ;
  355. var jsonData = "" ;
  356. var select_work_name = document.getElementById("select_work_name") ;
  357. var eigyo_cd = document.getElementById("eigyo_cd") ;
  358. var work_kbn = document.getElementById("work_kbn") ;
  359. var button_entry = document.getElementById("button_entry") ;
  360. var button_update = document.getElementById("button_update") ;
  361. var button_deletion = document.getElementById("button_deletion") ;
  362. var button_clear = document.getElementById("button_clear") ;
  363. doAjax() ;
  364. function doAjax(){
  365. $.ajax({
  366. url: 'http://localhost:8080/PACLibrary/api/action/mworkkbn' ,
  367. type: 'GET',
  368. dataType: 'json',
  369. })
  370. .done(succes)
  371. .fail(error) ;
  372. function succes(jsonData , json_Array , json_Kbn_Array , select_Data_Array , select_Data_Arr , button_deletion , button_entry , button_update ){
  373. if(jsonData.result == true && Object.keys(jsonData).length > 0){
  374. alert( jsonData.result ) ;
  375. alert("OK!") ;
  376. select_Data_Array = [] ;
  377. select_Data_Arr = 0 ;
  378. select_data( jsonData , select_Data_Array , select_Data_Arr ) ;
  379. common.createSelectWorkKbn( jsonData , select_work_name , json_Array , json_Kbn_Array ) ;
  380. }else{
  381. alert("NO!") ;
  382. }
  383. return jsonData ;
  384. }
  385. function error(jsonData){
  386. alert('ERROR');
  387. }
  388. }
  389. function select_data( jsonData , select_Data_Array , select_Data_Arr ){
  390. for( var k = 0 ; k < jsonData.data.length ; k++ ){
  391. select_Data_Array[select_Data_Arr] = {
  392. 'WorkName' : jsonData.data[k].workName
  393. , 'DeleteFlag' : jsonData.data[k].delFlg
  394. , 'UpdateCount' : jsonData.data[k].updateCount
  395. }
  396. select_Data_Arr++ ;
  397. }
  398. return select_Data_Array ;
  399. }
  400. /**
  401. * 保存
  402. *
  403. */
  404. button_entry.onclick = function(e){
  405. var Entry_Anser = confirm("登録処理を行います。よろしいですか?") ;
  406. if( Entry_Anser == true ){
  407. alert( "登録処理を行います。") ;
  408. doSave( select_Data_Array )
  409. } else {
  410. alert("登録処理を中止します。") ;
  411. }
  412. }
  413. button_update.onclick = function(e){
  414. var Update_Anser = confirm("更新処理を行います。よろしいですか?") ;
  415. if( Update_Anser == true ){
  416. alert("更新処理を行います。") ;
  417. doSave( select_Data_Array ) ;
  418. } else {
  419. alert("更新処理を中止します。") ;
  420. }
  421. }
  422. button_deletion.onclick = function(e){
  423. var Delete_Anser = confirm("論理削除処理を行います。よろしいですか?") ;
  424. if( Delete_Anser == true ){
  425. alert("論理削除処理を行います。") ;
  426. doSave( select_Data_Array ) ;
  427. } else {
  428. alert("論理削除処理を中止します。") ;
  429. }
  430. }
  431. button_clear.onclick = function(e){
  432. var clear_Anser = confirm("入力クリアを行います。よろしいですか?") ;
  433. if( clear_Anser == true ){
  434. alert("入力クリアを行います。") ;
  435. eigyo_cd.value = "" ;
  436. work_kbn.value = "" ;
  437. }
  438. }
  439. /**
  440. * 保存処理
  441. *
  442. */
  443. function doSave( select_Data_Array ){
  444. // ↓入力チェック
  445. if( eigyo_cd.value == "" || work_kbn.value == ""){
  446. alert("文字が入力されていません。処理を中止します。") ;
  447. }
  448. var workKbn = new Object;
  449. workKbn['eigyoCd'] = eigyo_cd.value ;
  450. workKbn['workKbn'] = work_kbn.value ;
  451. workKbn['workName'] = select_work_name.value ;
  452. var jsonData = new Object();
  453. jsonData['inputData'] = new Array();
  454. jsonData['inputData'].push(workKbn);
  455. $.ajax({
  456. url: API_PATH + '/pc005/execute',
  457. type: 'POST',
  458. data: JSON.stringify(jsonData, null, ""),
  459. contentType: 'application/JSON',
  460. dataType : 'JSON',
  461. })
  462. .done(saveDone)
  463. .fail(saveFail);
  464. /**
  465. * 保存成功
  466. *
  467. */
  468. function saveDone(result){
  469. switch(result){
  470. case 0:
  471. alert("正常に登録完了しました\n再表示します");
  472. //再表示
  473. doAjax( jsonData ) ;
  474. break;
  475. case 1:
  476. alert("正常に更新完了しました\n再表示します");
  477. //再表示
  478. doAjax( jsonData ) ;
  479. break;
  480. case -1:
  481. alert("すでに登録されています");
  482. break;
  483. case -5:
  484. alert("更新対象データが存在していません");
  485. break;
  486. case -6:
  487. alert("更新対象データがすでに別プロセスで更新されています");
  488. break;
  489. case -7:
  490. alert("論理削除対象データが存在していません");
  491. break;
  492. case -10:
  493. alert("該当するグループコードが存在しないため保存できませんでした。");
  494. break;
  495. case -20:
  496. alert("該当するシフト区分が存在しないため保存できませんでした。");
  497. break;
  498. case -98:
  499. alert("パラメータエラー");
  500. break;
  501. case -99:
  502. alert("保存に失敗しました");
  503. break;
  504. }
  505. }
  506. }
  507. /**
  508. * 保存失敗
  509. *
  510. */
  511. function saveFail(result){
  512. alert("予期せぬエラーが発生しました。");
  513. console.log(result);
  514. }
  515. }
Download Printable view

URL of this paste

Embed with JavaScript

Embed with iframe

Raw text