class="java" name="code"><%@ 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 class="title">
<table cellspacing="0px" width="100%">
<%@ include file="/common/jsp/title.jsp"%>
<tr class="title_under">
<td style="padding-center: 100px;" align="right" colspan="7"><a
href="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 class="conditionBgColor">
<div class="conditon" >
<%@ 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" class="title_td">決算年月</td>
<td width="8%" class="background" style=text-align:right align="center"><s:property value="ksanyymm"/></td>
<td colspan="1"> </td>
</tr>
<tr>
<td width="35%"> </td>
<td width="7%" class="title_td">用紙種別</td>
<td width="8%"><s:textfield size="11" 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:property
value="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 class="buyy_result" 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">class="title_td_0402_1" </s:if><s:else> class="title_td"</s:else> >
<s:radio name="checkedyosimekacode" 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" class="title_td_0402_1" align="center"></td>
<td width="120" align="center"><div align="left">は登録済み</div></td>
<td width="21"><div align="right">※</div></td>
<td width="20"class="title_td_0402_2" 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 class="buyy_result" 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%" class="list_header">用紙種別略称</th>
<th width="16%" class="list_header">(参考)デリバリー表</th>
<th width="16%" class="list_header">工場受入連数</th>
<th width="16%" class="list_header">仕入連数</th>
<th width="16%" class="list_header">白損返品連数</th>
<th width="16%" class="list_header">実購入連数</th>
</tr>
</table>
<div id="buis_searchList" class="buis_searchList" 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}"> class="line1" </s:if><s:else> class="line" </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}"> class="line1" </s:if><s:else> class="line" </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>
service
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 lastupdttime
from
TB_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 from
TB_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">
update
TB_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">
update
TB_YK0300TR
set
HKSNHNPNRNSU = #{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">
update
TB_YK0300TR
set
SIRERNSU = #{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">
select
count(A.SHA_CODE)
from
TB_YK0300TR A
where
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">
select
distinct
A.YOSIMEKACODE as yosimekacode,
M1.YOSIMEKANAME as yosimekaname,
sum(A.SIRERNSU) as sirernsutotal
from
TB_YK0300TR A,
TB_YK0090MT M1
where
A.SHA_CODE = #{shacode,jdbcType=CHAR}
AND A.KONYYYMM= #{ksanyymm ,jdbcType=CHAR}
AND A.YOSISYBTCODE = #{yosisybtcode,jdbcType=VARCHAR}
AND A.YOSIMEKACODE = M1.YOSIMEKACODE
AND A.JUNNO = '3'
group by
A.YOSIMEKACODE,
M1.YOSIMEKANAME
order by
A.YOSIMEKACODE
</select>
<!-- BUYK0402_仕入連数照合(本社購買部門)選択ボタン処理SQL -->
<select id="QTB_YK0300TRS004" parameterType="java.util.HashMap" resultType="jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockingSerialNumberMatchingDetailDownDto">
select
A.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 realbuyserialnumber
from
TB_YK0300TR A,
(select
sum(NYUKPLANRNSU ) as NYUKPLANRNSU
from
TB_YK0260TR
where
SHA_CODE = #{shacode,jdbcType=CHAR} AND
substr(KONYPLANYMD,1,6) = #{ksanyymm ,jdbcType=CHAR} AND
DUMMYKUBN = '0' AND
YOSISYBTCODE =#{yosisybtcode,jdbcType=VARCHAR} AND
YOSIMEKACODE =#{checkedyosimekacode,jdbcType=VARCHAR}
)B,
TB_YK0030MT M1
where
A.SHA_CODE = #{shacode,jdbcType=CHAR} AND
A.KONYYYMM = #{ksanyymm ,jdbcType=CHAR} AND
A.YOSISYBTCODE =#{yosisybtcode,jdbcType=VARCHAR} AND
A.YOSISYBTCODE = M1.YOSISYBTCODE AND
A.MKRIHKSNKRKSRNSU > 0
group by
A.YOSISYBTCODE
,M1.YOSISYBTRYAKNAME
,A.SIRERNSU
,A.HKSNHNPNRNSU
,A.JUNNO
,B.NYUKPLANRNSU
order by
A.YOSISYBTCODE
</select>
<!-- BUYK0402_仕入連数照合(本社購買部門)在庫管理表出力ボタン処理SQL -->
<select id="QTB_YK0300TRS005" parameterType="java.util.HashMap" resultType="jp.co.asahi_np.biz.bus.online.yk.buyk0402.dto.StockManageTablePrintDto">
select
A.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 hksnhnpnrnsu
from
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.YOSISYBTCODE
where
A.SHA_CODE =#{shacode,jdbcType=CHAR} AND
A.KONYYYMM = #{ksanyymm ,jdbcType=CHAR} AND
A.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>
Model
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;
}
}
action
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;
}
}
pup画面のjsp
<%@ 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 class="title" 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 class="title_under">
<td style="padding-right: 100px;" 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 class="conditon" style="width:820px;"><div>
<%@ include file="/common/jsp/message.jsp"%></div>
<table class="conditon_margin1">
<tr>
<td width="20"> </td>
<td width="88" ><strong>検索条件:</strong></td>
<td width="100" align="center" class="title_td">用紙区分</td>
<td width="10%">
<!-- 一覧画面の場合、用紙区分リスト無効 -->
<s:if test="dataList != null && !dataList.isEmpty">
<s:select list="yosiKbnList" 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 class="buyk_result">
<table id="search_result_table_header" style="width:820px;">
<tr class="listHeaderHeight">
<th class="list_header" width="7%" height="36"></th>
<th class="list_header" width="15%" height="36">種別コード</th>
<th class="list_header" width="15%" height="36">用紙区分コード</th>
<th class="list_header" width="15%" height="36">種別略称名</th>
<th class="list_header" width="15%" height="36">種別名</th>
</tr>
</table>
<div id="buyk_searchList" class="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}"> class="line1" </s:if><s:else> class="line" </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>