struts2 jsp画面 list値のkeep と listの項目の判断 popupサンプル
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" isELIgnored="false"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"><%@ taglib prefix="s" uri="/struts-tags"%><%@ taglib prefix="sj" uri="/struts-jquery-tags"%><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><meta http-equiv="x-ua-compatible" content="ie=7" /><%@ include file="/common/jsp/yk_head.jsp"%><script type='text/javascript'>//呼出元アクションvar myaction;/*actionを呼び出す*/function submitDataForm(action) {document.searchModelForm.action = action;formSubmit(action, document.searchModelForm);}/*画面初期設定*/function setColumnInit() {// 画面サイズ変更resizeResultDivHeight();}// 用紙種別function openWindowYosisybt() {var action = "/yk/PaperKindPopupInit?";// 子画面を呼び出して、戻り値を取得するopenModalWindow(action,"dialogWidth=820px;dialogHeight=625px;status:false;");}/*画面パラメーター設定*/function setYosisybt(yosisybtcode,yosikbn_code, yosisybtname,yosisybtryakname) {document.getElementById("yosisybtcode").value = yosisybtcode;document.getElementById("yosisybtnameLbl").innerHTML = yosisybtname;document.getElementById("yosisybtname").value = yosisybtname;document.getElementById("yosikbn_code").value = yosikbn_code;document.getElementById("yosisybtryakname").value = yosisybtryakname;}</script><title><s:property value="title" /></title></head><body onload="resizeResultDivHeight();setErrControls(document.searchModelForm, '<s:property value="errControls"/>');setColumnInit();"><div width="100%"><%@ include file="/common/jsp/title.jsp"%><tr align="right" colspan="7"><ahref="javascript:formSubmit('<s:property value="backAction"/>', document.searchModelForm);">呼出し元へ</a></td></tr></table></div><div id="contents_0402" > <s:form id="searchModelForm" name="searchModelForm" theme="simple"> <div > <%@ include file="/common/jsp/message.jsp"%> <table style="width: 100%"> <tr> <td width="35%" height="20" ><div align="right"><strong>検索条件:</strong></div></td> <td width="7%" align="center" style=text-align:right align="center"><s:property value="ksanyymm"/></td><td colspan="1"> </td> </tr> <tr><td width="35%"> </td><td width="7%" name="yosisybtcode"id="yosisybtcode" onblur="checkNumber(yosisybtcode,3,0,0,0)"></s:textfield></td><td width="8%" ><input name="search2" type="button" value="検索" onclick="openWindowYosisybt();" /><label id="yosisybtnameLbl"><s:propertyvalue="yosisybtname" /></label></td> <td > </td> </tr> </table><p></p> <table cellspacing="0" cellpadding="0" style="width:1000px;"> <tr> <td width="70%" > </td> <td> <input type="button" value=" 実行 " id="searchBtn" onclick="submitDataForm('/yk/StockingSerialNumberMatchingSearch');"/> <input type="button" id="printBtn" value="在庫管理表出力" onclick="submitDataForm('/yk/StockManageTablePrint');"/> </td> </tr> </table> </div> </div> <s:if test="updetailCount > 0 "> <div style="border-style: solid; border-width: 0px 0px 1px 0px;background-color: #FDEDDF;"> <table style="width: 100%;border: 0" > <tr > <td width="10"> </td> <s:iterator value="upDataList" var="detail" status="stat" > <td width="10%" <s:if test="upDataList[%{#stat.index}].colorchangeflg"></s:if><s:else> list="#{'yosimekacode':'yosimekaname'} " listKey="yosimekacode"listValue="yosimekaname" value=""></s:radio> </td></s:iterator> <td width="10"> </td> <td > <input type="button" value=" 選択 " id="selectBtn" onclick="submitDataForm('/yk/StockingSerialNumberMatchingSelect');"/></td> </tr> </table> <table width="100%" > <tr> <td width="600"></td> <td width="21"><div align="right">※</div></td> <td width="20" align="center"></td> <td width="120" align="center"><div align="left">は登録済み</div></td> <td width="21"><div align="right">※</div></td> <td width="20"align="center"> </td> <td width="100" align="center"><div align="left">は未登録</div></td> <td width="200"></td> </tr> <tr> <td colspan="8"> </td> <td ><input type="button" value=" 確 認 " id="confirmBtn" onclick="submitDataForm('/yk/StockingSerialNumberMatchingConfirm');"/> </td> <td width="50"><input type="button" value=" 登 録 " id="registerBtn" onclick="submitDataForm('/yk/StockingSerialNumberMatchingRegister');"/></td> <td width="100" > </td> </tr> </table> </div> </s:if> <s:if test="downDetailCount > 0 "> <div style="border-style: solid; border-width: 0px 0px 1px 0px;background-color: #FDEDDF;"> <table id="search_result_table_header" style="width:820px;margin-left: 25%"> <tr> <th width="20%" style="min-width:720px;max-width:820px;border-width: 0px;margin-left: 25%"> <table style="width:820px;margin-top:-3px;"> <s:iterator value="downDataList" status="stat" var="detail"> <tr <s:if test="%{#stat.index % 2 != 0}"> </s:if><s:else> </s:else>> <td width="20%" ><s:property value="#detail.yosisybtryakname" /></td> <td width="16%" align="right"><s:property value="%{formatNumber(#detail.deliveryserialnumber)}" /></td> <td width="16%" align="right"><s:property value="%{formatNumber(#detail.kojoukirrnsutotal)}" /></td> <td width="16%" align="right" ><s:textfield name="dataList[%{#stat.index}].sirernsu" id="dataList[%{#stat.index}].sirernsu" value="%{formatNumber(#detail.sirernsu)}" size="10" onblur="checkNumber(this, 9, 2, 0, 0)"/></td> <td width="16%" align="right"><s:property value="%{formatNumber(#detail.hksnhnpnrnsu)}" /></td> <td width="16%" align="right"><s:property value="%{formatNumber(#detail.realbuyserialnumber)}" /></td> <s:hidden name="downDataList[%{#stat.index}].yosisybtcode" value="%{#detail.yosisybtcode}"/> <s:hidden name="downDataList[%{#stat.index}].yosisybtryakname" value="%{#detail.yosisybtryakname}"/> <s:hidden name="downDataList[%{#stat.index}].deliveryserialnumber" value="%{#detail.deliveryserialnumber}"/> <s:hidden name="downDataList[%{#stat.index}].kojoukirrnsutotal" value="%{#detail.kojoukirrnsutotal}"/> <s:hidden name="downDataList[%{#stat.index}].hksnhnpnrnsu" value="%{#detail.hksnhnpnrnsu}"/> <s:hidden name="downDataList[%{#stat.index}].realbuyserialnumber" value="%{#detail.realbuyserialnumber}"/> </tr> </s:iterator> <tr <s:if test="%{downDetailCount % 2 != 0}"> </s:if><s:else> </s:else>> <td width="20%" >合計</td> <td width="16%" align="right"><s:property value="totaldeliveryserialnumber" /></td> <td width="16%" align="right"><s:property value="totalkojoukirrnsutotal" /></td> <td width="16%" align="right" ><s:property value="totalsirernsu" /></td> <td width="16%" align="right"><s:property value="totalhksnhnpnrnsu"/></td> <td width="16%" align="right"><s:property value="totalrealbuyserialnumber" /></td> <s:hidden name="totaldeliveryserialnumber" value="totaldeliveryserialnumber"/> <s:hidden name="totalkojoukirrnsutotal" value="totalkojoukirrnsutotal"/> <s:hidden name="totalsirernsu" value="totalsirernsu" /> <s:hidden name="totalhksnhnpnrnsu" value="totalhksnhnpnrnsu" /> <s:hidden name="totalrealbuyserialnumber" value="totalrealbuyserialnumber"/> </tr> </table> </div> </div> </s:if> <input type="hidden" id="detailCount" name="detailCount" value="<s:property value="detailCount"/>" /> <input type="hidden" id="yosisybtname" name="yosisybtname"value="<s:property value="yosisybtname"/>" /><input type="hidden" id="yosikbn_code" name="yosikbn_code" value="<s:property value="yosikbn_code"/>" /> <input type="hidden" id="yosisybtryakname" name="yosisybtryakname"value="<s:property value="yosisybtryakname"/>" /><input type="hidden" id="ksanyymm" name="ksanyymm" value="<s:property value="ksanyymm"/>" /> <%@ include file="/common/jsp/common_hidden_controls.jsp"%> </s:form> </div></body></html>
package jp.co.asahi_np.biz.bus.online.yk.buyk0402.service;import static jp.co.asahi_np.biz.bus.common.constant.ComConst.RESULT_SUCCESS;import java.math.BigDecimal;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.HashMap;import java.util.List;import jp.co.asahi_np.biz.bus.common.asposecells.BorderWrapper;import jp.co.asahi_np.biz.bus.common.asposecells.CellsWrapper;import jp.co.asahi_np.biz.bus.common.asposecells.StyleWrapper;import jp.co.asahi_np.biz.bus.common.asposecells.WorkbookWrapper;import jp.co.asahi_np.biz.bus.common.asposecells.WorksheetWrapper;import jp.co.asahi_np.biz.bus.common.asposecells.definition.BackgroundTypeDef;import jp.co.asahi_np.biz.bus.common.asposecells.definition.BorderTypeDef;import jp.co.asahi_np.biz.bus.common.asposecells.definition.CellBorderTypeDef;import jp.co.asahi_np.biz.bus.common.asposecells.definition.ColorDef;import jp.co.asahi_np.biz.bus.common.constant.MessageConst;import jp.co.asahi_np.biz.bus.common.exception.ApplicationException;import jp.co.asahi_np.biz.bus.common.exception.BUException;import jp.co.asahi_np.biz.bus.common.function.ConsumptionTax;import jp.co.asahi_np.biz.bus.common.function.ConsumptionTaxFunc;import jp.co.asahi_np.biz.bus.common.service.BaseService;import jp.co.asahi_np.biz.bus.common.spool.CommonSpool;import jp.co.asahi_np.biz.bus.common.spool.DataFileType;import jp.co.asahi_np.biz.bus.common.utility.CheckUtil;import jp.co.asahi_np.biz.bus.common.utility.FileUtil;import jp.co.asahi_np.biz.bus.common.utility.XMLLoader;import jp.co.asahi_np.biz.bus.online.is.constant.ISMessagaeConst;import jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockManageTablePrintDto;import jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockingSerialNumberMatchingDetailDownDto;import jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockingSerialNumberMatchingDetailUpDto;import jp.co.asahi_np.biz.bus.online.yk.buyk0402.model.StockingSerialNumberMatchingModel;import jp.co.asahi_np.biz.bus.online.yk.constant.YKConst;import jp.co.asahi_np.biz.bus.online.yk.constant.YKMessagaeConst;import jp.co.asahi_np.biz.bus.online.yk.dto.Yk0120mtDto;/**. * *仕入連数照合(本社購買部門) 画面初期化/検索処理用サービスクラス * */public class StockingSerialNumberMatchingService extends BaseService { /** *actionFlagフラグ_検索処理。 */ private static final String ACTIONFLAG_ONE = "1"; /** * パス。 */ private static final String TEMP_PATH = "//Common/TempPath"; /** * 幅:10。 */ private static final Double WIDTH10 = 10e0; /** * 幅:25。 */ private static final Double WIDTH25 = 25e0; /** * 仕入連数照合(本社購買部門)画面初期化処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ public String initExecute(StockingSerialNumberMatchingModel searchModel) throws BUException { // ログを出力 logger.writeStartLog(" 「仕入連数照合(本社購買部門)」画面初期化処理_開始"); //決算年月項目設定 getKsanyymm(searchModel); // 検索件数に"0"を設定する searchModel.setUpdetailCount(YKConst.SEARCH_COUNT_LONG_ZERO); searchModel.setDownDetailCount(YKConst.SEARCH_COUNT_LONG_ZERO); // ログを出力 logger.writeEndLog(" 「仕入連数照合(本社購買部門)」画面初期化処理_終了"); return RESULT_SUCCESS; } /** * 実行ボタン押下処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ public String searchExecute(StockingSerialNumberMatchingModel searchModel) throws BUException { // ログを出力 logger.writeStartLog("実行ボタン押下処理_開始(SearchExecute)"); // 明細一覧検索を行う doSearch(searchModel); // ログを出力 logger.writeEndLog("実行ボタン押下処理_終了(SearchExecute)"); return RESULT_SUCCESS; } /** * 実行ボタン押下検索処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ private String doSearch(StockingSerialNumberMatchingModel searchModel) throws BUException { //自動生成されたメソッド?スタブ XMLLoader xmlLoader = new XMLLoader(); //未来年月はエラー if (this.getLongDiffDays(searchModel.getKsanyymm())) { throw new ApplicationException(YKMessagaeConst.MSG_ID_E_YK_ME440048, new String[] { "" }, new String[] { "searchBtn" }); } // 最大件数を取得する long maxCount = xmlLoader.getMaxDisplayCnt(searchModel.getScreenId()); //検索パラメータ HashMap<String, String> condition = new HashMap<String, String>(); //決算年月日 condition.put("ksanyymm", searchModel.getKsanyymm()); //用紙種別コード condition.put("yosisybtcode", searchModel.getYosisybtcode()); //セッションのログイン社コード condition.put("shacode", searchModel.getCompanyCode()); // データを取得する List<StockingSerialNumberMatchingDetailUpDto> dbDataList = dao.queryForList(StockingSerialNumberMatchingDetailUpDto.class, "QTB_YK0300TRS003", condition); // テーブル件数 long selectCount = dbDataList.size(); // 検索件数が0件の場合 if (selectCount == YKConst.SEARCH_COUNT_LONG_ZERO) { // 検索件数設定(0件設定:明細一覧出ない) searchModel.setUpdetailCount(YKConst.SEARCH_COUNT_LONG_ZERO); // エラーメッセージ出力 throw new ApplicationException(MessageConst.MSG_ID_E_NOT_MATCH_CONDITION, new String[] { "" }, new String[] { "searchBtn" }); } // 最大件数より大きい場合 if (selectCount > maxCount) { // 検索件数設定(0件と見做す:明細一覧出ない) searchModel.setUpdetailCount(YKConst.SEARCH_COUNT_LONG_ZERO); throw new ApplicationException(ISMessagaeConst.MSG_ID_E_IS_ME200008, new String[] { "" }, new String[] { "searchBtn" }); } List<StockingSerialNumberMatchingDetailUpDto> upDataList = null; if (dbDataList != null && dbDataList.size() > 0) { upDataList = new ArrayList<StockingSerialNumberMatchingDetailUpDto>(); for (StockingSerialNumberMatchingDetailUpDto dto : dbDataList) { if (dto.getSirernsutotal().doubleValue() > 0) { dto.setColorchangeflg(true); } else { dto.setColorchangeflg(false); } upDataList.add(dto); } } // 明細一覧設定 searchModel.setUpDataList(upDataList); // 検索件数設定 searchModel.setUpdetailCount(selectCount); return RESULT_SUCCESS; } /** * 選択ボタン押下処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ public String selectExecute(StockingSerialNumberMatchingModel searchModel) throws BUException { // ログを出力 logger.writeStartLog("選択ボタン押下処理_開始(SearchExecute)"); // 画面各プロダウンの設定 getKsanyymm(searchModel); // 選択ボタン押下処理を行う doSelect(searchModel); // ログを出力 logger.writeEndLog("選択ボタン押下処理_終了(SearchExecute)"); return RESULT_SUCCESS; } /** * 選択ボタン押下検索処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ private String doSelect(StockingSerialNumberMatchingModel searchModel) throws BUException { //自動生成されたメソッド?スタブ XMLLoader xmlLoader = new XMLLoader(); // 最大件数を取得する long maxCount = xmlLoader.getMaxDisplayCnt(searchModel.getScreenId()); if (searchModel.getCheckedyosimekacode() == null) { // エラーメッセージ出力 throw new ApplicationException(YKMessagaeConst.MSG_ID_E_YK_ME440047, new String[] { "" }, new String[] { "selectBtn" }); } //検索パラメータ HashMap<String, String> condition = new HashMap<String, String>(); //決算年月日 condition.put("ksanyymm", searchModel.getKsanyymm()); //用紙種別コード condition.put("yosisybtcode", searchModel.getYosisybtcode()); //セッションのログイン社コード condition.put("shacode", searchModel.getCompanyCode()); condition.put("checkedyosimekacode", searchModel.getCheckedyosimekacode()); // データを取得する List<StockingSerialNumberMatchingDetailDownDto> dbDataList = dao.queryForList(StockingSerialNumberMatchingDetailDownDto.class, "QTB_YK0300TRS004", condition); // テーブル件数 long selectCount = dbDataList.size(); // 検索件数が0件の場合 if (selectCount == YKConst.SEARCH_COUNT_LONG_ZERO) { // 検索件数設定(0件設定:明細一覧出ない) searchModel.setDownDetailCount(YKConst.SEARCH_COUNT_LONG_ZERO); // エラーメッセージ出力 throw new ApplicationException(MessageConst.MSG_ID_E_NOT_MATCH_CONDITION, new String[] { "" }, new String[] { "selectBtn" }); } // 最大件数より大きい場合 if (selectCount > maxCount) { // 検索件数設定(0件と見做す:明細一覧出ない) searchModel.setDownDetailCount(YKConst.SEARCH_COUNT_LONG_ZERO); throw new ApplicationException(ISMessagaeConst.MSG_ID_E_IS_ME200008, new String[] { "" }, new String[] { "selectBtn" }); } List<StockingSerialNumberMatchingDetailDownDto> downDataList = null; //明細部(下段)リストに仕入連数合計 BigDecimal totalsirernsu = BigDecimal.valueOf(0.0); //明細部(下段)リストに白損返品連数合計 BigDecimal totalhksnhnpnrnsu = BigDecimal.valueOf(0.0); //明細部(下段)リストに工場受入連数合計 BigDecimal totalkojoukirrnsutotal = BigDecimal.valueOf(0.0); //明細部(下段)リストに実購入連数合計 BigDecimal totalrealbuyserialnumber = BigDecimal.valueOf(0.0); //明細部(下段)リストにデリバリー連数合計 BigDecimal totaldeliveryserialnumber = BigDecimal.valueOf(0.0); if (dbDataList != null && dbDataList.size() > 0) { downDataList = new ArrayList<StockingSerialNumberMatchingDetailDownDto>(); for (StockingSerialNumberMatchingDetailDownDto dto : dbDataList) { totalsirernsu = totalsirernsu.add(dto.getSirernsu()); totalhksnhnpnrnsu = totalhksnhnpnrnsu.add(dto.getHksnhnpnrnsu()); totalkojoukirrnsutotal = totalkojoukirrnsutotal.add(dto.getKojoukirrnsutotal()); totalrealbuyserialnumber = totalrealbuyserialnumber.add(dto.getRealbuyserialnumber()); totaldeliveryserialnumber = totaldeliveryserialnumber.add(dto.getDeliveryserialnumber()); if (dto.getSirernsu().intValue() == 0) { //仕入連数(0の場合、工場受入連数の設定する) dto.setSirernsu(dto.getKojoukirrnsutotal()); } if (dto.getKojoukirrnsutotal() != dto.getDeliveryserialnumber()) { dto.setColorchangeflg(true); } else { dto.setColorchangeflg(false); } downDataList.add(dto); } } // 明細一覧設定 searchModel.setDownDataList(downDataList); // 検索件数設定 searchModel.setDownDetailCount(selectCount); searchModel.setTotaldeliveryserialnumber(totaldeliveryserialnumber); searchModel.setTotalhksnhnpnrnsu(totalhksnhnpnrnsu); searchModel.setTotalkojoukirrnsutotal(totalkojoukirrnsutotal); searchModel.setTotalrealbuyserialnumber(totalrealbuyserialnumber); searchModel.setTotalsirernsu(totalsirernsu); return RESULT_SUCCESS; } /** * 確認ボタン押下処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ public String confirmExecute(StockingSerialNumberMatchingModel searchModel) throws BUException { // ログを出力 logger.writeStartLog("確認ボタン押下処理_開始(SearchExecute)"); // 画面各プロダウンの設定 getKsanyymm(searchModel); // 確認ボタン押下処理を行う doConfirm(searchModel); // ログを出力 logger.writeEndLog("確認ボタン押下処理_終了(SearchExecute)"); return RESULT_SUCCESS; } /** * 確認ボタン押下処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ private String doConfirm(StockingSerialNumberMatchingModel searchModel) throws BUException { List<StockingSerialNumberMatchingDetailDownDto> downDataList = null; //明細部(下段)リストに仕入連数合計 BigDecimal totalsirernsu = BigDecimal.valueOf(0.0); //明細部(下段)リストに白損返品連数合計 BigDecimal totalhksnhnpnrnsu = BigDecimal.valueOf(0.0); //明細部(下段)リストに工場受入連数合計 BigDecimal totalkojoukirrnsutotal = BigDecimal.valueOf(0.0); //明細部(下段)リストに実購入連数合計 BigDecimal totalrealbuyserialnumber = BigDecimal.valueOf(0.0); //明細部(下段)リストにデリバリー連数合計 BigDecimal totaldeliveryserialnumber = BigDecimal.valueOf(0.0); //実購入連数 BigDecimal realbuyserialnumber = BigDecimal.valueOf(0.0); if (searchModel.getDownDataList() != null && searchModel.getDownDataList().size() > 0) { downDataList = new ArrayList<StockingSerialNumberMatchingDetailDownDto>(); for (StockingSerialNumberMatchingDetailDownDto dto : searchModel.getDownDataList()) { //実購入連数=仕入連数 - 白損返品連数 realbuyserialnumber = dto.getSirernsu().subtract(dto.getHksnhnpnrnsu()); dto.setRealbuyserialnumber(realbuyserialnumber); if (dto.getKojoukirrnsutotal() != dto.getDeliveryserialnumber()) { dto.setColorchangeflg(true); } else { dto.setColorchangeflg(false); } totalsirernsu = totalsirernsu.add(dto.getSirernsu()); totalhksnhnpnrnsu = totalhksnhnpnrnsu.add(dto.getHksnhnpnrnsu()); totalkojoukirrnsutotal = totalkojoukirrnsutotal.add(dto.getKojoukirrnsutotal()); totalrealbuyserialnumber = totalrealbuyserialnumber.add(realbuyserialnumber); totaldeliveryserialnumber = totaldeliveryserialnumber.add(dto.getDeliveryserialnumber()); downDataList.add(dto); } } // 明細一覧設定 searchModel.setDownDataList(downDataList); // 検索件数設定 long selectCount = searchModel.getDownDataList().size(); searchModel.setDownDetailCount(selectCount); searchModel.setTotaldeliveryserialnumber(totaldeliveryserialnumber); searchModel.setTotalhksnhnpnrnsu(totalhksnhnpnrnsu); searchModel.setTotalkojoukirrnsutotal(totalkojoukirrnsutotal); searchModel.setTotalrealbuyserialnumber(totalrealbuyserialnumber); searchModel.setTotalsirernsu(totalsirernsu); // 明細一覧設定 searchModel.setDownDataList(downDataList); return RESULT_SUCCESS; } /** * 「仕入連数照合(本社購買部門)」 登録用処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ public String registerExecute(StockingSerialNumberMatchingModel searchModel) throws BUException { // ログを出力 logger.writeStartLog("「仕入連数照合(本社購買部門)」 登録用処理_開始(SearchExecute)"); // 画面各プロダウンの設定 getKsanyymm(searchModel); // 登録を行う doRegister(searchModel); searchExecute(searchModel); // ログを出力 logger.writeEndLog("「仕入連数照合(本社購買部門)」 登録用処理_終了(SearchExecute)"); return RESULT_SUCCESS; } /** * 「仕入連数照合(本社購買部門)」 登録用処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ private String doRegister(StockingSerialNumberMatchingModel searchModel) throws BUException { //検索パラメータ HashMap<String, Object> condition = new HashMap<String, Object>(); //用紙種別コード condition.put("yosisybtcode", searchModel.getYosisybtcode()); //用紙区分コード condition.put("yosikbn_code", searchModel.getYosikbn_code()); //画面明細部(上段).用紙メーカーコード condition.put("yosimekacode", searchModel.getCheckedyosimekacode()); //割戻区分と用紙単価の取得 Yk0120mtDto yk0120mtDto = dao.queryForObject(Yk0120mtDto.class, "QTB_YK0120MTS004", condition); //割戻区分 String wmdskbn = yk0120mtDto.getWmdskbn(); //用紙単価 Integer yositank = yk0120mtDto.getYositank(); //代理店コード取得 String yosidrtncode = dao.queryForObject(String.class, "QTB_YK0140MTS004", condition); //決算年月日 condition.put("ksanyymm", searchModel.getKsanyymm()); //セッションのログイン社コード condition.put("shacode", searchModel.getCompanyCode()); //セッションのユーザーID condition.put("lastupdtuserid", searchModel.getUserId()); for (StockingSerialNumberMatchingDetailDownDto dto : searchModel.getDownDataList()) { //DB更新を行う //在庫管理DBの対象データの更新を行う。 //仕入連数=画面明細部(下段).仕入連数 condition.put("sirernsu", dto.getSirernsu()); dao.update("QTB_YK0300TRU002", condition); //「支払DB」テーブルと代理店別支払DBテーブル更新を行う。 //消費税金額を初期化 BigDecimal excisetax = BigDecimal.valueOf(0); //購入金額を初期化 BigDecimal konykngk = BigDecimal.valueOf(0); //割戻区分 condition.put("wmdskbn", wmdskbn); //代理店コード(代理店別支払DBテーブル更新用) condition.put("yosidrtnccide", yosidrtncode); //用紙単価 =引数.用紙単価 condition.put("yositank", yositank); //白損返品連数 =画面明細部(下段).白損返品連数 condition.put("hksnhnpnrnsu", dto.getHksnhnpnrnsu()); //購入連数=画面明細部(下段).実購入連数 condition.put("konyrnsu", dto.getRealbuyserialnumber()); //購入金額=購入連数*用紙単価 konykngk = dto.getRealbuyserialnumber().multiply(new BigDecimal(yositank.toString())); condition.put("konykngk", konykngk); //消費税金額の取得 excisetax = this.getExcisetax(konykngk); //購入消費税額=引数.購入消費税額 condition.put("yosikonyszeigaku", excisetax); //税込金額 =購入金額+購入消費税額 condition.put("yosizikmkonykngk", konykngk.add(excisetax)); //DBに支払データ存在するかどうか 判断 Long selectcount_yk0520tr = dao.queryForObject(Long.class, "QTB_YK0520TRS006", condition); if (selectcount_yk0520tr > 0) { //「支払DB」テーブルUpdate dao.update("QTB_YK0520TRU002", condition); //代理店別支払DB削除 dao.delete("QTB_YK0310TRD001", condition); //「代理店別支払DB」テーブルInsert dao.insert("QTB_YK0310TRI002", condition); } else { //「支払DB」テーブルInsert dao.insert("QTB_YK0520TRI002", condition); //「代理店別支払DB」テーブルInsert dao.insert("QTB_YK0310TRI002", condition); } } return RESULT_SUCCESS; } /** * 「仕入連数照合(本社購買部門)」 在庫管理表出力ボタン処理。 * * @param searchModel 画面属性 * @return String アクション戻り値 * @throws BUException エラーException */ public String printExecute(StockingSerialNumberMatchingModel model) throws BUException { logger.writeStartLog("在庫管理表出力処理開始"); // 保存先フォルダの読み込み XMLLoader xmlLoader = new XMLLoader(); String path = xmlLoader.getValue(TEMP_PATH); // ファイル名 String fileName = CommonSpool.getFileName(DataFileType.EXCEL, YKConst.FORM_ID_BUYK0402); // ファイルパス String filePath = FileUtil.concatFilePathName(path, fileName); // Excel作成 WorkbookWrapper workbook = new WorkbookWrapper(); workbook.createWorkbook(); // ヘッダーの出力 workbook = this.writeHeader(workbook, model); //明細 データ行の出力 workbook = this.writeData(workbook, model); // Excelの保存 workbook.save(filePath); // ダウンロード処理を実行 FileUtil.filedownload(path, fileName); FileUtil.deleteFile(filePath, FileUtil.getLocalOsName()); logger.writeEndLog("在庫管理表出力処理終了"); return RESULT_SUCCESS; } /** * 明細部 出力Excelファイル内容書き出し処理。 * * @param workbook WorkbookWrapper * @param model HmShoBunruiModel * @return WorkbookWrapper 設定後のExcelオブジェクト * @throws BUException エラーException */ private WorkbookWrapper writeData(WorkbookWrapper workbook, StockingSerialNumberMatchingModel searchModel) throws BUException { //検索パラメータ HashMap<String, String> condition = new HashMap<String, String>(); //決算年月日 condition.put("ksanyymm", searchModel.getKsanyymm()); //用紙種別コード condition.put("yosisybtcode", searchModel.getYosisybtcode()); //セッションのログイン社コード condition.put("shacode", searchModel.getCompanyCode()); // 明細部データを取得する List<StockManageTablePrintDto> dbDataList = dao.queryForList(StockManageTablePrintDto.class, "QTB_YK0300TRS005", condition); // ワークシート取得 WorksheetWrapper worksheet = new WorksheetWrapper(); worksheet.getWorksheets(workbook); worksheet.getWorksheet(0); // セルを操作するための準備 CellsWrapper cells = new CellsWrapper(); cells.getCells(worksheet); // データ出力 int row = 4; for (StockManageTablePrintDto dto : dbDataList) { int colum = 0; // 仕入連数 cells.setCellValue(row, colum, searchModel.formatNumber(dto.getSirernsu().toString())); colum++; // 工場受入連数 cells.setCellValue(row, colum, searchModel.formatNumber(dto.getKojoukirrnsutotal().toString())); colum++; // 前月工場残 cells.setCellValue(row, colum, searchModel.formatNumber(dto.getPremouthfactoryremaining().toString())); colum++; // 工場受入連数 cells.setCellValue(row, colum, searchModel.formatNumber(dto.getKojoukirrnsutotal().toString())); colum++; // 工場払出連数 cells.setCellValue(row, colum, searchModel.formatNumber(dto.getKojohdsirnsutotal().toString())); colum++; // 工場在庫連数 cells.setCellValue(row, colum, searchModel.formatNumber(dto.getKojozikornsu().toString())); colum++; // 白損返品連数 cells.setCellValue(row, colum, searchModel.formatNumber(dto.getHksnhnpnrnsu().toString())); colum++; row++; } // データを戻す return workbook; } /** * 出力Excelファイルヘッダー書き出し処理。 * * @param workbook WorkbookWrapper * @return WorkbookWrapper 設定後のExcelオブジェクト * @throws BUException エラーException */ private WorkbookWrapper writeHeader(WorkbookWrapper workbook, StockingSerialNumberMatchingModel searchModel) throws BUException { // ワークシート作成 WorksheetWrapper worksheet = new WorksheetWrapper(); worksheet.getWorksheets(workbook); worksheet.getWorksheet(0); // セルを操作するための準備 CellsWrapper cells = new CellsWrapper(); cells.getCells(worksheet); // スタイル作成処理 StyleWrapper headerStyle = new StyleWrapper(); headerStyle.createStyle(workbook); // 表題行の出力 cells.setCellValue(0, 0, "【在庫管理表】"); // 罫線 BorderWrapper border = new BorderWrapper(); border.setBorderType(headerStyle, BorderTypeDef.TOP_BORDER, ColorDef.BLACK, CellBorderTypeDef.THIN); border.setBorderType(headerStyle, BorderTypeDef.RIGHT_BORDER, ColorDef.BLACK, CellBorderTypeDef.THIN); border.setBorderType(headerStyle, BorderTypeDef.BOTTOM_BORDER, ColorDef.BLACK, CellBorderTypeDef.THIN); border.setBorderType(headerStyle, BorderTypeDef.LEFT_BORDER, ColorDef.BLACK, CellBorderTypeDef.THIN); // 背景色設定 headerStyle.setPattern(BackgroundTypeDef.SOLID); headerStyle.setForegroundColor(ColorDef.YELLOW_GREEN); // ヘッダ行の出力 List<Double> width = Arrays.asList(WIDTH10, WIDTH25, WIDTH25, WIDTH25, WIDTH25, WIDTH25, WIDTH25); List<String> header = Arrays.asList("社", "年月", " 帳票出力日付、時刻 ", "種別"); for (int colum = 0; colum < header.size(); colum++) { cells.setColumWidth(colum, width.get(colum)); cells.setCellValue(1, colum, header.get(colum)); headerStyle.setStyle(cells, 1, colum); } //システム日時を取得 Calendar calendar = java.util.Calendar.getInstance(); SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // ヘッダ行の値出力 List<String> headerData = Arrays.asList(searchModel.getCompanyCode(), searchModel.getKsanyymm(), format.format(calendar.getTime()), searchModel.getYosisybtname()); for (int colum = 0; colum < headerData.size(); colum++) { cells.setColumWidth(colum, width.get(colum)); cells.setCellValue(2, colum, headerData.get(colum)); headerStyle.setStyle(cells, 2, colum); } // 明細ヘッダ行の出力 List<String> detailPartheader = Arrays.asList("仕入", "工場受入", " 前月工場残 ", "工場受入", "払出連数", "工場在庫", "白損残"); for (int colum = 0; colum < detailPartheader.size(); colum++) { cells.setCellValue(3, colum, detailPartheader.get(colum)); headerStyle.setStyle(cells, 3, colum); } // データを戻す return workbook; } /** * 決算年月項目設定。 * * @param searchModel 「仕入連数照合(本社購買部門)」画面属性 * @throws BUException エラーException */ private void getKsanyymm(StockingSerialNumberMatchingModel searchModel) throws BUException { logger.writeTraceLog("決算年月項目設定_開始"); if (searchModel.getActionFlg() == null || searchModel.getActionFlg().equals(ACTIONFLAG_ONE)) { Calendar cal = Calendar.getInstance(); int y = cal.get(Calendar.YEAR); String ksanyymm = dao.queryForObject(String.class, "QTB_YK0010MTS007", String.valueOf(y)); //決算年月設定 searchModel.setKsanyymm(ksanyymm); } logger.writeTraceLog("決算年月項目設定_終了"); } /**両日の差 * @param startDate * @param nowDate * @return */ private boolean getLongDiffDays(String startDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyyMM"); //システム時間を取得 Calendar cal = Calendar.getInstance(); String now = formatter.format(cal.getTime()); return Integer.parseInt(startDate) - Integer.parseInt(now) > 0; } /** * 画面チェック処理。 * * @param searchModel 登録画面属性 * @throws ApplicationException エラーException * @throws BUException エラーException */ public void searchValidate(StockingSerialNumberMatchingModel searchModel) throws ApplicationException, BUException { // ログを出力 logger.writeStartLog("画面チェック処理_開始"); // 本社未選択はエラー if (CheckUtil.isNullOrEmpty(searchModel.getCompanyCode())) { // 画面各プロダウン再設定 getKsanyymm(searchModel); throw new ApplicationException(MessageConst.MSG_ID_E_NO_INPUT, new String[] { "本社コード" }, new String[] { "sha_code" }); } // ログを出力 logger.writeEndLog("画面チェック処理_開始"); } /** * 購入消費税を算出処理。 * * @param inputBaseprice 金額 * @throws BUException エラーException */ private BigDecimal getExcisetax(BigDecimal inputBaseprice) throws BUException { //共通機能にて消費税の取得 ConsumptionTax consumptionTax = new ConsumptionTax(); // 消費税計算(String 設定課税区分, String 基準日, String 摘要コード, BigDecimal 基準料金) consumptionTax = ConsumptionTaxFunc.getConsumptionTax("3", "", "", inputBaseprice); return consumptionTax.getExcisetax(); }}
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="jp.co.asahi_np.biz.bus.online.yk.map.YK0300TR"><!--***********************************************************************--><!--*" 共通SQL IDブロック "*--><!--***********************************************************************--><!-- 在庫管理DB汎用SQL --><sql id="SELECT_TB_YK0300TR_ALL"> select SHA_CODE,KONYYYMM,JUNNO,YOSIKBN_CODE,YOSIMEKACODE,YOSISYBTCODE,SIRERNSU,HKSNHNPNRNSU,KOJOUKIRRNSU,KOJOHDSIRNSU,KOJOZIKORNSU,MKRIHKSNKRKSRNSU,CRATUSERID,to_char(CRATTIME, 'yyyy/mm/dd hh24:mi:ss.ff3') as crattime,LASTUPDTUSERID,to_char(LASTUPDTTIME, 'yyyy/mm/dd hh24:mi:ss.ff3') as lastupdttimefromTB_YK0300TR</sql><sql id="WHERE_TB_YK0300TR_WITH_KEY"> where SHA_CODE= #{sha_code,jdbcType=CHAR}and KONYYYMM = #{konyyymm ,jdbcType=CHAR}and JUNNO= #{junno,jdbcType=CHAR}and YOSIKBN_CODE= #{yosikbn_code,jdbcType=CHAR}and YOSIMEKACODE= #{yosimekacode,jdbcType=VARCHAR}and YOSISYBTCODE= #{yosisybtcode,jdbcType=VARCHAR}</sql><!--***********************************************************************--><!--*" Insertブロック 採番ID:QTB_YK0300TRI001~ "*--><!--***********************************************************************--><!-- 在庫管理DB挿入SQL --><insert id="QTB_YK0300TRI000" parameterType ="jp.co.asahi_np.biz.bus.online.yk.dto.Yk0300trDto"> insert into TB_YK0300TR( SHA_CODE,KONYYYMM,JUNNO,YOSIKBN_CODE,YOSIMEKACODE,YOSISYBTCODE,SIRERNSU,HKSNHNPNRNSU,KOJOUKIRRNSU,KOJOHDSIRNSU,KOJOZIKORNSU,MKRIHKSNKRKSRNSU,CRATUSERID,CRATTIME,LASTUPDTUSERID,LASTUPDTTIME ) values ( #{sha_code,jdbcType=CHAR},#{konyyymm ,jdbcType=CHAR},#{junno,jdbcType=CHAR},#{yosikbn_code,jdbcType=CHAR},#{yosimekacode,jdbcType=VARCHAR},#{yosisybtcode,jdbcType=VARCHAR},#{sirernsu ,jdbcType=NUMERIC},#{hksnhnpnrnsu,jdbcType=NUMERIC},#{kojoukirrnsu ,jdbcType=NUMERIC},#{kojohdsirnsu ,jdbcType=NUMERIC},#{kojozikornsu ,jdbcType=NUMERIC},#{mkrihksnkrksrnsu,jdbcType=NUMERIC},#{cratuserid,jdbcType=CHAR},SYSTIMESTAMP(3),#{lastupdtuserid,jdbcType=CHAR},SYSTIMESTAMP(3) )</insert><!-- 在庫管理DB挿入SQL --><insert id="QTB_YK0300TRI001" parameterType ="hashmap"> insert into TB_YK0300TR( SHA_CODE,KONYYYMM,JUNNO,YOSIKBN_CODE,YOSIMEKACODE,YOSISYBTCODE,SIRERNSU,HKSNHNPNRNSU,KOJOUKIRRNSU,KOJOHDSIRNSU,KOJOZIKORNSU,MKRIHKSNKRKSRNSU,CRATUSERID,CRATTIME,LASTUPDTUSERID,LASTUPDTTIME ) values ( #{shacode,jdbcType=CHAR},#{ksanyymm ,jdbcType=CHAR},'3',#{yosikbncode,jdbcType=CHAR},#{yosimekacode,jdbcType=VARCHAR},#{yosisybtcode,jdbcType=VARCHAR},0,#{hksnhnpnrnsu,jdbcType=NUMERIC},0,0,0,#{mkrihksnkrksrnsu,jdbcType=NUMERIC},#{lastupdtuserid,jdbcType=CHAR},SYSTIMESTAMP(3),#{lastupdtuserid,jdbcType=CHAR},SYSTIMESTAMP(3) )</insert><!--***********************************************************************--><!--*" Deleteブロック 採番ID:QTB_YK0300TRD001~ "*--><!--***********************************************************************--><!-- 在庫管理DB削除SQL --><delete id="QTB_YK0300TRD000" parameterType="jp.co.asahi_np.biz.bus.online.yk.dto.Yk0300trDto"> delete fromTB_YK0300TR<include refid="WHERE_TB_YK0300TR_WITH_KEY" /></delete><!--***********************************************************************--><!--*" Updateブロック 採番ID:QTB_YK0300TRU001~ "*--><!--***********************************************************************--><!-- 在庫管理DB更新SQL --><update id="QTB_YK0300TRU000" parameterType="jp.co.asahi_np.biz.bus.online.yk.dto.Yk0300trDto"> updateTB_YK0300TR set SHA_CODE= #{sha_code,jdbcType=CHAR},KONYYYMM = #{konyyymm ,jdbcType=CHAR},JUNNO= #{junno,jdbcType=CHAR},YOSIKBN_CODE= #{yosikbn_code,jdbcType=CHAR},YOSIMEKACODE= #{yosimekacode,jdbcType=VARCHAR},YOSISYBTCODE= #{yosisybtcode,jdbcType=VARCHAR},SIRERNSU = #{sirernsu ,jdbcType=NUMERIC},HKSNHNPNRNSU= #{hksnhnpnrnsu,jdbcType=NUMERIC},KOJOUKIRRNSU = #{kojoukirrnsu ,jdbcType=NUMERIC},KOJOHDSIRNSU = #{kojohdsirnsu ,jdbcType=NUMERIC},KOJOZIKORNSU = #{kojozikornsu ,jdbcType=NUMERIC},MKRIHKSNKRKSRNSU= #{mkrihksnkrksrnsu,jdbcType=NUMERIC},LASTUPDTUSERID= #{lastupdtuserid,jdbcType=CHAR},LASTUPDTTIME= SYSTIMESTAMP(3)<include refid="WHERE_TB_YK0300TR_WITH_KEY" /></update><!-- 在庫管理DB更新SQL --><update id="QTB_YK0300TRU001" parameterType="hashmap"> updateTB_YK0300TR setHKSNHNPNRNSU = #{hksnhnpnrnsu ,jdbcType=NUMERIC},MKRIHKSNKRKSRNSU= #{mkrihksnkrksrnsu ,jdbcType=NUMERIC},LASTUPDTUSERID= #{lastupdtuserid,jdbcType=CHAR},LASTUPDTTIME= SYSTIMESTAMP(3)where JUNNO = '3' <if test="shacode !=null and shacode != ''"> and SHA_CODE = #{shacode} </if><if test="ksanyymm !=null and ksanyymm != ''"> and KONYYYMM = #{ksanyymm} </if> <if test="yosikbncode !=null and yosikbncode != ''"> and YOSIKBN_CODE = #{yosikbncode} </if> <if test="yosimekacode !=null and yosimekacode != ''"> and YOSIMEKACODE = #{yosimekacode} </if> <if test="yosisybtcode !=null and yosisybtcode != ''"> and YOSISYBTCODE = #{yosisybtcode} </if></update><!-- BUYK0402_仕入連数照合(本社購買部門)在庫管理DB更新SQL --><update id="QTB_YK0300TRU002" parameterType="java.util.HashMap"> updateTB_YK0300TR setSIRERNSU = #{sirernsu,jdbcType=NUMERIC},LASTUPDTUSERID= #{lastupdtuserid,jdbcType=CHAR},LASTUPDTTIME= SYSTIMESTAMP(3)where JUNNO = '3'and SHA_CODE = #{shacode,jdbcType=CHAR}and KONYYYMM = #{ksanyymm,jdbcType=CHAR}and YOSIMEKACODE = #{yosimekacode,jdbcType=VARCHAR}and YOSISYBTCODE = #{yosisybtcode,jdbcType=VARCHAR}and YOSIKBN_CODE=#{yosikbn_code,jdbcType=CHAR}</update><!--***********************************************************************--><!--*" Selectブロック 採番ID:QTB_YK0300TRS001~ "*--><!--***********************************************************************--><!-- 在庫管理DB全件選択SQL --><select id="QTB_YK0300TRS000" resultType="jp.co.asahi_np.biz.bus.online.yk.dto.Yk0300trDto"><include refid="SELECT_TB_YK0300TR_ALL" /></select><!-- 在庫管理DB一件選択SQL --><select id="QTB_YK0300TRS001" parameterType="jp.co.asahi_np.biz.bus.online.yk.dto.Yk0300trDto" resultType="jp.co.asahi_np.biz.bus.online.yk.dto.Yk0300trDto"><include refid="SELECT_TB_YK0300TR_ALL" /><include refid="WHERE_TB_YK0300TR_WITH_KEY" /></select><!-- 在庫管理DB件数SQL --><select id="QTB_YK0300TRS002" parameterType="hashmap" resultType="java.lang.Long">selectcount(A.SHA_CODE)fromTB_YK0300TR Awhere A.JUNNO = '3' <if test="shacode !=null and shacode != ''"> and A.SHA_CODE = #{shacode} </if><if test="ksanyymm !=null and ksanyymm != ''"> and A.KONYYYMM = #{ksanyymm} </if> <if test="yosikbncode !=null and yosikbncode != ''"> and A.YOSIKBN_CODE = #{yosikbncode} </if> <if test="yosimekacode !=null and yosimekacode != ''"> and A.YOSIMEKACODE = #{yosimekacode} </if> <if test="yosisybtcode !=null and yosisybtcode != ''"> and A.YOSISYBTCODE = #{yosisybtcode} </if></select><!-- BUYK0402_仕入連数照合(本社購買部門)実行ボタン処理SQL --><select id="QTB_YK0300TRS003" parameterType="java.util.HashMap" resultType="jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockingSerialNumberMatchingDetailUpDto">selectdistinctA.YOSIMEKACODE as yosimekacode,M1.YOSIMEKANAME as yosimekaname,sum(A.SIRERNSU) as sirernsutotalfromTB_YK0300TR A,TB_YK0090MT M1whereA.SHA_CODE = #{shacode,jdbcType=CHAR}ANDA.KONYYYMM= #{ksanyymm ,jdbcType=CHAR}ANDA.YOSISYBTCODE = #{yosisybtcode,jdbcType=VARCHAR}ANDA.YOSIMEKACODE = M1.YOSIMEKACODEANDA.JUNNO = '3'group byA.YOSIMEKACODE,M1.YOSIMEKANAMEorder byA.YOSIMEKACODE</select><!-- BUYK0402_仕入連数照合(本社購買部門)選択ボタン処理SQL --><select id="QTB_YK0300TRS004" parameterType="java.util.HashMap" resultType="jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockingSerialNumberMatchingDetailDownDto">selectA.YOSISYBTCODE as yosisybtcode,M1.YOSISYBTRYAKNAME as yosisybtryakname,sum(A.KOJOUKIRRNSU) as kojoukirrnsutotal, decode(A.JUNNO, '3', A.SIRERNSU,'') as sirernsu , decode(A.JUNNO, '3', A.HKSNHNPNRNSU,'') as hksnhnpnrnsu ,B.NYUKPLANRNSU as deliveryserialnumber,A.SIRERNSU-A.HKSNHNPNRNSU as realbuyserialnumberfromTB_YK0300TR A,(select sum(NYUKPLANRNSU ) as NYUKPLANRNSU fromTB_YK0260TRwhereSHA_CODE = #{shacode,jdbcType=CHAR} ANDsubstr(KONYPLANYMD,1,6) = #{ksanyymm ,jdbcType=CHAR} ANDDUMMYKUBN = '0' ANDYOSISYBTCODE =#{yosisybtcode,jdbcType=VARCHAR} AND YOSIMEKACODE =#{checkedyosimekacode,jdbcType=VARCHAR})B,TB_YK0030MT M1whereA.SHA_CODE = #{shacode,jdbcType=CHAR} ANDA.KONYYYMM = #{ksanyymm ,jdbcType=CHAR} ANDA.YOSISYBTCODE =#{yosisybtcode,jdbcType=VARCHAR} ANDA.YOSISYBTCODE = M1.YOSISYBTCODE AND A.MKRIHKSNKRKSRNSU > 0 group byA.YOSISYBTCODE,M1.YOSISYBTRYAKNAME,A.SIRERNSU,A.HKSNHNPNRNSU,A.JUNNO,B.NYUKPLANRNSUorder byA.YOSISYBTCODE</select><!-- BUYK0402_仕入連数照合(本社購買部門)在庫管理表出力ボタン処理SQL --><select id="QTB_YK0300TRS005" parameterType="java.util.HashMap" resultType="jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockManageTablePrintDto">selectA.SHA_CODE as sha_code,A.KONYYYMM as konyyymm ,A.YOSISYBTCODE as yosisybtcode,M1.YOSISYBTNAME as yosisybtname,A.SIRERNSU as sirernsu,sum(A.KOJOUKIRRNSU) as kojoukirrnsutotal ,B.KOJOZIKORNSU as premouthfactoryremaining,sum(A.KOJOHDSIRNSU ) as kojohdsirnsutotal , decode(A.JUNNO, '3', A.SIRERNSU,'' ) as sirernsu , decode(A.JUNNO, '3', A.HKSNHNPNRNSU ,'') as hksnhnpnrnsufrom TB_YK0300TR A left outer join TB_YK0300TR B on A.SHA_CODE = B.SHA_CODE and decode(substr(A.KONYYYMM-1,5,2), '00', substr(A.KONYYYMM,1,4)-1||'12', A.KONYYYMM-1)=B.KONYYYMM and A.YOSISYBTCODE = B.YOSISYBTCODE and B.JUNNO ='3' left outer join TB_YK0030MT M1 on A.YOSISYBTCODE = M1.YOSISYBTCODEwhereA.SHA_CODE =#{shacode,jdbcType=CHAR} ANDA.KONYYYMM = #{ksanyymm ,jdbcType=CHAR} ANDA.YOSISYBTCODE =#{yosisybtcode,jdbcType=VARCHAR} group by A.SHA_CODE, A.KONYYYMM,A.YOSISYBTCODE,M1.YOSISYBTNAME ,A.SIRERNSU,B.KOJOZIKORNSU,A.JUNNO,A.HKSNHNPNRNSU</select></mapper>
package jp.co.asahi_np.biz.bus.online.yk.buyk0402.model;import java.math.BigDecimal;import java.text.DecimalFormat;import java.util.List;import jp.co.asahi_np.biz.bus.common.model.CommonModel;import jp.co.asahi_np.biz.bus.common.utility.CheckUtil;import jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockManageTablePrintDto;import jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockingSerialNumberMatchingDetailDownDto;import jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockingSerialNumberMatchingDetailUpDto;/** * 「仕入連数照合(本社購買部門)」検索用Modelクラス。 */public class StockingSerialNumberMatchingModel extends CommonModel { /** 処理フラグ。 */ private String actionFlg; /**決算年月。*/ private String ksanyymm; /** 検索件数。**/ private long updetailCount; /** 検索件数。**/ private long downDetailCount; /** 用紙種別コード。**/ private String yosisybtcode; /** 用紙種別名。**/ private String yosisybtname; /** 用紙区分コード。**/ private String yosikbn_code; /** 用紙種別略称名。**/ private String yosisybtryakname; /** 明細部(上段)リスト。**/ private List<StockingSerialNumberMatchingDetailUpDto> upDataList; private String checkedyosimekacode; /** 明細部(下段)リスト。**/ private List<StockingSerialNumberMatchingDetailDownDto> downDataList; /** 在庫管理表出力リスト。**/ private List<StockManageTablePrintDto> printDataList; /**明細部(下段)リストに仕入連数合計*/ private BigDecimal totalsirernsu; /**明細部(下段)リストに白損返品連数合計*/ private BigDecimal totalhksnhnpnrnsu; /**明細部(下段)リストに工場受入連数合計*/ private BigDecimal totalkojoukirrnsutotal; /**明細部(下段)リストに実購入連数合計*/ private BigDecimal totalrealbuyserialnumber; /**明細部(下段)リストにデリバリー連数合計*/ private BigDecimal totaldeliveryserialnumber; /** * フォーマットする。 * @param s フォーマット前の項目 * @return s フォーマット後の値 */ public String formatNumber(String s) { if (CheckUtil.isNullOrEmpty(s)) { return s; } s = s.replaceAll(",", "").trim(); Double ret = Double.parseDouble(s); DecimalFormat fmt = new DecimalFormat("####,###,###,##0.00"); return fmt.format(ret); } /** * @return actionFlg */ public String getActionFlg() { return actionFlg; } /** * @param actionFlg セットする actionFlg */ public void setActionFlg(String actionFlg) { this.actionFlg = actionFlg; } /** * @return ksanyymm */ public String getKsanyymm() { return ksanyymm; } /** * @param ksanyymm セットする ksanyymm */ public void setKsanyymm(String ksanyymm) { this.ksanyymm = ksanyymm; } /** * @return updetailCount */ public long getUpdetailCount() { return updetailCount; } /** * @param updetailCount セットする updetailCount */ public void setUpdetailCount(long updetailCount) { this.updetailCount = updetailCount; } /** * @return downDetailCount */ public long getDownDetailCount() { return downDetailCount; } /** * @param downDetailCount セットする downDetailCount */ public void setDownDetailCount(long downDetailCount) { this.downDetailCount = downDetailCount; } /** * @return yosisybtcode */ public String getYosisybtcode() { return yosisybtcode; } /** * @param yosisybtcode セットする yosisybtcode */ public void setYosisybtcode(String yosisybtcode) { this.yosisybtcode = yosisybtcode; } /** * @return yosisybtname */ public String getYosisybtname() { return yosisybtname; } /** * @param yosisybtname セットする yosisybtname */ public void setYosisybtname(String yosisybtname) { this.yosisybtname = yosisybtname; } /** * @return upDataList */ public List<StockingSerialNumberMatchingDetailUpDto> getUpDataList() { return upDataList; } /** * @param upDataList セットする upDataList */ public void setUpDataList(List<StockingSerialNumberMatchingDetailUpDto> upDataList) { this.upDataList = upDataList; } /** * @return checkedyosimekacode */ public String getCheckedyosimekacode() { return checkedyosimekacode; } /** * @param checkedyosimekacode セットする checkedyosimekacode */ public void setCheckedyosimekacode(String checkedyosimekacode) { this.checkedyosimekacode = checkedyosimekacode; } /** * @return downDataList */ public List<StockingSerialNumberMatchingDetailDownDto> getDownDataList() { return downDataList; } /** * @param downDataList セットする downDataList */ public void setDownDataList(List<StockingSerialNumberMatchingDetailDownDto> downDataList) { this.downDataList = downDataList; } /** * @return printDataList */ public List<StockManageTablePrintDto> getPrintDataList() { return printDataList; } /** * @param printDataList セットする printDataList */ public void setPrintDataList(List<StockManageTablePrintDto> printDataList) { this.printDataList = printDataList; } /** * @return totalsirernsu */ public BigDecimal getTotalsirernsu() { return totalsirernsu; } /** * @param totalsirernsu セットする totalsirernsu */ public void setTotalsirernsu(BigDecimal totalsirernsu) { this.totalsirernsu = totalsirernsu; } /** * @return totalhksnhnpnrnsu */ public BigDecimal getTotalhksnhnpnrnsu() { return totalhksnhnpnrnsu; } /** * @param totalhksnhnpnrnsu セットする totalhksnhnpnrnsu */ public void setTotalhksnhnpnrnsu(BigDecimal totalhksnhnpnrnsu) { this.totalhksnhnpnrnsu = totalhksnhnpnrnsu; } /** * @return totalkojoukirrnsutotal */ public BigDecimal getTotalkojoukirrnsutotal() { return totalkojoukirrnsutotal; } /** * @param totalkojoukirrnsutotal セットする totalkojoukirrnsutotal */ public void setTotalkojoukirrnsutotal(BigDecimal totalkojoukirrnsutotal) { this.totalkojoukirrnsutotal = totalkojoukirrnsutotal; } /** * @return totalrealbuyserialnumber */ public BigDecimal getTotalrealbuyserialnumber() { return totalrealbuyserialnumber; } /** * @param totalrealbuyserialnumber セットする totalrealbuyserialnumber */ public void setTotalrealbuyserialnumber(BigDecimal totalrealbuyserialnumber) { this.totalrealbuyserialnumber = totalrealbuyserialnumber; } /** * @return totaldeliveryserialnumber */ public BigDecimal getTotaldeliveryserialnumber() { return totaldeliveryserialnumber; } /** * @param totaldeliveryserialnumber セットする totaldeliveryserialnumber */ public void setTotaldeliveryserialnumber(BigDecimal totaldeliveryserialnumber) { this.totaldeliveryserialnumber = totaldeliveryserialnumber; } /** * @return yosikbn_code */ public String getYosikbn_code() { return yosikbn_code; } /** * @param yosikbn_code セットする yosikbn_code */ public void setYosikbn_code(String yosikbn_code) { this.yosikbn_code = yosikbn_code; } /** * @return yosisybtryakname */ public String getYosisybtryakname() { return yosisybtryakname; } /** * @param yosisybtryakname セットする yosisybtryakname */ public void setYosisybtryakname(String yosisybtryakname) { this.yosisybtryakname = yosisybtryakname; }}
package jp.co.asahi_np.biz.bus.online.yk.buyk0402.action;import static jp.co.asahi_np.biz.bus.common.constant.ComConst.RESULT_INPUT;import static jp.co.asahi_np.biz.bus.common.constant.ComConst.RESULT_SUCCESS;import jp.co.asahi_np.biz.bus.common.action.YKAbstractAction;import jp.co.asahi_np.biz.bus.common.exception.BUException;import jp.co.asahi_np.biz.bus.online.yk.buyk0402.model.StockingSerialNumberMatchingModel;import jp.co.asahi_np.biz.bus.online.yk.buyk0402.service.StockingSerialNumberMatchingService;import jp.co.asahi_np.biz.bus.online.yk.constant.YKConst;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;import com.opensymphony.xwork2.ModelDriven;/** * Resultアノテーションの設定。 */@Results({ @Result(name = RESULT_SUCCESS, location = "BUYK04021D.jsp"), @Result(name = RESULT_INPUT, location = "BUYK04021D.jsp")})/****「仕入連数照合(本社購買部門)」画面初期化処理用ACTIONクラス。**/@Action("/StockingSerialNumberMatchingInit")public class StockingSerialNumberMatchingInitAction extends YKAbstractAction implements ModelDriven<StockingSerialNumberMatchingModel> { /** *actionFlagフラグ_初期処理。 */ private static final String ACTIONFLAG_ONE = "1"; /** *Modelインスタンス。 */ private StockingSerialNumberMatchingModel searchModel = new StockingSerialNumberMatchingModel(); /** *Serviceインスタンス。 */ private StockingSerialNumberMatchingService service; /** * @return searchModel */ public StockingSerialNumberMatchingModel getModel() { return searchModel; } /** * @param searchModel 画面属性 */ public void setModel(StockingSerialNumberMatchingModel searchModel) { this.searchModel = searchModel; } @Override protected String doExecute() throws BUException { // ログを出力 logger.writeStartLog("「 仕入連数照合(本社購買部門)」画面初期化処理_開始"); searchModel.setScreenId(YKConst.FORM_ID_BUYK0402); searchModel.setTitle(YKConst.FORM_TITLE_BUYK0402); // actionFlagの設定 searchModel.setActionFlg(ACTIONFLAG_ONE); //画面初期化処理を行う service = new StockingSerialNumberMatchingService(); String result = service.initExecute(searchModel); // ログを出力 logger.writeEndLog("「 仕入連数照合(本社購買部門」一覧画面初期化処理_終了"); return result; }}
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" isELIgnored="false"%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"><%@ taglib prefix="s" uri="/struts-tags"%><%@ taglib prefix="sj" uri="/struts-jquery-tags"%><head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><meta http-equiv="x-ua-compatible" content="ie=7" /><%@ include file="/common/jsp/yk_head.jsp"%><script type='text/javascript'>function submitForm(action) {document.searchModelForm.action = action;formSubmit(action, document.searchModelForm);}/*actionを呼び出す*/function submitDataForm(action) {document.searchModelForm.action = action;formSubmit(action, document.searchModelForm);}function selectRecord(yosisybtcode,yosikbn_code, yosisybtname,yosisybtryakname) {window.dialogArguments.setYosisybt(yosisybtcode,yosikbn_code, yosisybtname,yosisybtryakname);window.close();}</script><title><s:property value="title" /></title></head><body onload="resizeResultDivHeight();setErrControls(document.searchModelForm, '<s:property value="errControls"/>');"><div style="height:34px;"><table cellspacing="0px" width="100%"><tr><td width="83"> </td> <td width="88"><s:property value="screenId" /></td> <td width="564" align="center"><strong><s:property value="title" /></strong></td> <td width="261"> </td> </tr> <tr align="right" colspan="7"><a href="javascript:submitForm('/yk/PaperKindPopupInit')">1ステップ戻る</a> <a href="#" onclick="window.close();">呼出元画面へ</a></td> </tr> </table></div><div id="contents_popup" style="top:35px;"> <s:form id="searchModelForm" name="searchModelForm" theme="simple"> <div style="width:820px;"><div><%@ include file="/common/jsp/message.jsp"%></div> <table ><strong>検索条件:</strong></td><td width="100" align="center" id="yosiKbnCode" name="yosiKbnCode" value="yosiKbnCode" listKey="key" listValue="value" disabled="true"></s:select><s:hidden name="yosiKbnCode" /></s:if><s:else><s:select list="yosiKbnList" id="yosiKbnCode" name="yosiKbnCode" value="yosiKbnCode" listKey="key" listValue="value"></s:select></s:else></td> <td width="573"><!-- 一覧画面の場合、対象表示ボタン無効 --><s:if test="dataList != null && !dataList.isEmpty"><input type="button" id="search" value="対象表示" onclick="submitDataForm('/yk/PaperKindPopupSearch')" disabled="disabled"/></s:if><s:else><input type="button" id="search" value="対象表示" onclick="submitDataForm('/yk/PaperKindPopupSearch')" /></s:else></td><td width="8%"> </td></tr> </table> </div><!--conditon--> <%@ include file="/common/jsp/common_hidden_controls.jsp"%> <s:if test="dataList != null && !dataList.isEmpty"> <div style="width:820px;"> <tr width="7%" height="36"></th> <th width="15%" height="36">種別コード</th> <th width="15%" height="36">用紙区分コード</th> <th width="15%" height="36">種別略称名</th> <th width="15%" height="36">種別名</th> </tr> </table> <div id="buyk_searchList" style="min-width:720px;max-width:820px;border-width: 0px;height:335px;"> <table id="search_result_table" style="width:820px;"> <s:iterator value="dataList" status="stat" var="detail"> <tr <s:if test="%{#stat.index % 2 != 0}"> </s:if><s:else> </s:else>><td width="7%" align="center" height="20"><input type="button" value="選択" id="select" onclick="javascript:selectRecord('<s:property value="#detail.yosisybtcode" />','<s:property value="#detail.yosikbn_code" />', '<s:property value="#detail.yosisybtname" />','<s:property value="#detail.yosisybtryakname" />')" /></td> <td width="15%" align="center"><s:property value="#detail.yosisybtcode" /></td> <td width="15%" align="center"><s:property value="#detail.yosikbn_code" /></td> <td width="15%" align="center"><s:property value="#detail.yosisybtryakname" /></td> <td width="15%" align="center"><s:property value="#detail.yosisybtname" /></td> </tr></s:iterator> </table> </div> </div> </s:if></s:form></div></body></html>