日本华人论坛 程序编写7



日本 - package jp.co.ji.jbaas.util.gamen.ota;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;

import com.fasterxml.jackson.core.type.TypeReference;

import jp.co.ji.jbaas.Config;
import jp.co.ji.jbaas.LogicMap;
import jp.co.ji.jbaas.common.CodeConst;
import jp.co.ji.jbaas.common.CommonConstant;
import jp.co.ji.jbaas.common.MapKeyConst;
import jp.co.ji.jbaas.context.RequestContext;
import jp.co.ji.jbaas.dao.CommonDAO;
import jp.co.ji.jbaas.dao.DAOFactory;
import jp.co.ji.jbaas.logic.ILogic;
import jp.co.ji.jbaas.logic.database.basic.UDCT00790B03Logic;
import jp.co.ji.jbaas.util.common.ConvertUtil;
import jp.co.ji.jbaas.util.common.DateUtil;
import jp.co.ji.jbaas.util.common.LogicUtil;
import jp.co.ji.jbaas.util.common.MapUtil;
import jp.co.ji.jbaas.util.common.StringUtil;
import jp.co.ji.model.fusss.common.TUploadshorui;
import jp.co.ji.model.fusss.common.TUploadshoruiExample;
import jp.co.ji.model.fusss.common.TUploadshoruiKey;
import jp.co.ji.model.fusss.ota.TKeiyakukessaijoho;
import jp.co.ji.model.fusss.ota.TKeiyakukessaijohoExample;
import jp.co.ji.model.fusss.ota.TKeiyakushorui;
import jp.co.ji.model.fusss.ota.TKeiyakushoruiExample;
import jp.co.ji.model.fusss.ota.TKeiyakushoruiKey;
import jp.co.ji.model.fusss.ota.TKeiyakushoruimeisai;
import jp.co.ji.model.fusss.ota.TKeiyakushoruimeisaiExample;
import jp.co.ji.model.fusss.ota.TKeiyakushoruimeisaiKey;
import jp.co.ji.model.fusss.ota.TKeiyakushosai;

/**
* upload共通ユーティリティ
*
* @author NSD
*
*/
public final class UploadCommonUtil extends MapUtil {

    /**
     * ログの定義
     */
    private static Logger logger = Logger.getLogger(UploadCommonUtil.class);

    //======================================================
    // 業務関連
    //======================================================

    /**
     * アップロード書類一覧取得
     * @param keiyakuShoNo 契約証番号
     * @param sosaNO 操作番号
     * @return アップロード書類情報
     * @throws Exception
     */
    public static List<TUploadshorui> selectUploadshorui(String keiyakuShoNo, Long sosaNO)
            throws Exception {

        TUploadshoruiExample example = new TUploadshoruiExample();
        //        TUploadshoruiExample.Criteria criteria = example.createCriteria();
        //        criteria.andKeiyakuShoNOEqualTo(keiyakuShoNo);
        //        criteria.andSosaNOEqualTo(sosaNO);

        List<TUploadshorui> list =
                DAOFactory.getDAO(DAOFactory.FUSSS).selectList("jp.co.ji.sql.basic.fusss.ota.TUploadshoruiMapper.selectByExample", example);

        return list;

    }

    /**
     * 契約書類情報を取得
     *
     * @param keiyakuShoNo 契約証番号
     * @param sosaNO 操作番号
     * @param shoruiCd 書類コード
     * @param hihokenshaNo 被保険者番号
     * @return 契約書類情報
     * @throws Exception
     */
    public static List<TKeiyakushorui> selectKeiyakushoruiList(String keiyakuShoNo, Long sosaNO, String shoruiCd, Integer hihokenshaNo)
            throws Exception {

        TKeiyakushoruiExample example = new TKeiyakushoruiExample();
        TKeiyakushoruiExample.Criteria criteria = example.createCriteria();
        criteria.andKeiyakuShoNOEqualTo(keiyakuShoNo);
        criteria.andSosaNOEqualTo(sosaNO);

        if (StringUtil.isNotEmpty(shoruiCd)) {
            criteria.andShoruiCDEqualTo(shoruiCd);
        }
        if (hihokenshaNo != null) {
            criteria.andHihokenshaNOEqualTo(hihokenshaNo);
        }

        List<TKeiyakushorui> list =
                DAOFactory.getDAO(DAOFactory.FUSSS).selectList("jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruiMapper.selectByExample", example);

        return list;

    }

    /**
     * 主キーにより契約書類を検索
     *
     * @param key 契約書類テーブルBean
     * @return resultBean 結果Bean
     * @throws Exception
     */
    public static TKeiyakushorui selectKeiyakushorui(TKeiyakushoruiKey key)
            throws Exception {

        CommonDAO dao = DAOFactory.getDAO(DAOFactory.FUSSS);

        TKeiyakushorui keiyakushorui = dao.selectOne(
                "jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruiMapper.selectByPrimaryKey", key);

        return keiyakushorui;

    }

    /**
     *  契約書類テーブルを更新
     *
     * @param keiyakushorui 契約書類
     * @return 更新件数
     * @throws Exception
     */
    public static int updateKeiyakushorui(TKeiyakushorui keiyakushorui)
            throws Exception {

        CommonDAO dao = DAOFactory.getDAO(DAOFactory.FUSSS);

        int updatedCount = dao.update(
                "jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruiMapper.updateByPrimaryKeySelective", keiyakushorui);

        if (updatedCount == 0) {
            logger.error("契約書類更新レコードが見つかりませんでした!");

        }

        return updatedCount;
    }

    /**
     * アップロード書類登録
     * @param shoruiList アップロード書類情報
     * @return 更新後書類リスト
     * @throws Exception
     */
    public static List<TUploadshorui> insertUploadShorui(List<TUploadshorui> shoruiList)
            throws Exception {

        // アップロード書類
        final ILogic logic = LogicMap.getLogic(LogicUtil.getLogicKeyByClass(UDCT00790B03Logic.class));

        List<Map<String, String>> localParamMap = ConvertUtil.convertToMapList(shoruiList);

        Map<String, Object> logicResultMap = new HashMap<String, Object>();

        LogicUtil.executeLogicSetResultMap(logic, localParamMap, logicResultMap);

        // 登録情報
        final List<TUploadshorui> outShoruiList =
                ConvertUtil.convert(localParamMap,
                        new TypeReference<List<TUploadshorui>>() {
                        });

        return outShoruiList;

    }

    /**
     *  契約_書類明細登録
     *
     * @param keiyakushoruimeisai 契約書類明細
     * @return 更新件数
     * @throws Exception
     */
    public static int insertKeiyakushoruimeisai(TKeiyakushoruimeisai keiyakushoruimeisai)
            throws Exception {

        CommonDAO dao = DAOFactory.getDAO(DAOFactory.FUSSS);

        int insertCount = dao.insert(
                "jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruimeisaiMapper.insert", keiyakushoruimeisai);

        return insertCount;
    }

    /**
     * アップロード必要書類の取得
     * @param formMap フォームマップ
     * @param keiyakushoNo 契約証番号
     * @param sosaNo 操作番号
     * @param systemCd システムコード
     * @throws Exception
     */
    public static void setUploadHitsuyouSyoruiList(Map<String, Object> formMap, String keiyakushoNo, String sosaNo, String systemCd)
            throws Exception {
        List<Map<String, Object>> list = DAOFactory.getDAO(DAOFactory.FUSSS).selectList(
                "jp.co.ji.sql.custom.fusss.ota.BA110UploadSelectMapper.uploadHitsuyouSyoruiList",
                new HashMap<String, Object>() {
                    {
                        put(MapKeyConst.KEIYAKUSHONO_DB, keiyakushoNo);
                        put(MapKeyConst.SOSANO_DB, sosaNo);
                        put(MapKeyConst.SYSTEMCD_DB, systemCd);
                    }
                });
        formMap.put("uploadHitsuyouSyoruiList", list);
    }

    /**
     * アップロード書類一覧の取得
     * @param formMap フォームマップ
     * @param keiyakushoNo 契約証番号
     * @param sosaNo 操作番号
     * @throws Exception
     */
    public static void setUploadSyoruiList(Map<String, Object> formMap, String keiyakushoNo, String sosaNo) throws Exception {
        List<Map<String, Object>> list = DAOFactory.getDAO(DAOFactory.FUSSS).selectList(
                "jp.co.ji.sql.custom.fusss.ota.BA110UploadSelectMapper.uploadSyoruiList",
                new HashMap<String, Object>() {
                    {
                        put(MapKeyConst.KEIYAKUSHONO_DB, keiyakushoNo);
                        put(MapKeyConst.SOSANO_DB, sosaNo);
                    }
                });
        formMap.put("uploadSyoruiList", list);
    }

    /**
     * アップロード書類一覧(必要書類以外)の取得
     * @param formMap フォームマップ
     * @param keiyakushoNo 契約証番号
     * @param sosaNo 操作番号
     * @throws Exception
     */
    public static void setUploadSyoruiHitsuyouIgaiList(Map<String, Object> formMap, String keiyakushoNo, String sosaNo) throws Exception {
        List<Map<String, Object>> list = DAOFactory.getDAO(DAOFactory.FUSSS).selectList(
                "jp.co.ji.sql.custom.fusss.ota.BA110UploadSelectMapper.uploadSyoruiHitsuyouIgaiList",
                new HashMap<String, Object>() {
                    {
                        put(MapKeyConst.KEIYAKUSHONO_DB, keiyakushoNo);
                        put(MapKeyConst.SOSANO_DB, sosaNo);
                    }
                });
        formMap.put("uploadSyoruiHitsuyouIgaiList", list);
    }

    /**
     * アップロード履歴の取得
     * @param formMap フォームマップ
     * @param keiyakushoNo 契約証番号
     * @param sosaNo 操作番号
     * @throws Exception
     */
    public static void setUploadRirekiList(Map<String, Object> formMap, String keiyakushoNo, String sosaNo) throws Exception {
        List<Map<String, Object>> list = DAOFactory.getDAO(DAOFactory.FUSSS).selectList(
                "jp.co.ji.sql.custom.fusss.ota.BA110UploadSelectMapper.uploadRirekiList",
                new HashMap<String, Object>() {
                    {
                        put(MapKeyConst.KEIYAKUSHONO_DB, keiyakushoNo);
                        put(MapKeyConst.SOSANO_DB, sosaNo);
                    }
                });
        formMap.put("uploadRirekiList", list);
    }

    /**
     * 書類情報登録
     * @param formMap フォーム
     * @param isShinki 新規アップロード:true、修正:false
     * @throws Exception
     */
    public static void insertShoruiInfo(Map<String, Object> formMap, boolean isShinki) throws Exception {

        // フォーム情報から取得契約詳細
        final TKeiyakushosai keiyakuShosai = ConvertUtil.convert(formMap.get(MapKeyConst.MKSHOSAI),
                new TypeReference<TKeiyakushosai>() {
                });

        List<TUploadshorui> shoruiList = new ArrayList<TUploadshorui>();

        // ファイルアップロードリスト
        List<Map<String, Object>> uplaodList = getMapValue("fileInfoList", formMap);

        for (Map<String, Object> uplaod : uplaodList) {

            TUploadshorui shorui = new TUploadshorui();

            // クライアントファイル名
            String clientFileName = getString("clientFileName", uplaod);

            // ファイル(バイナリ)
            String fileBinary = getString("fileBinary", uplaod);

            // システム日付
            String sysDateStr = DateUtil.dateToString(DateUtil.now(), DateUtil.YYYYMMDDHHMMSSSSS);

            // 拡張子
            String extension = clientFileName.substring(clientFileName.lastIndexOf("."));

            // 保存先ディレクトリ
            String path = Config.getParameter(Config.UPLOAD_SHORUI_PATH);

            // サーバ保存ファイル名
            String serverFileName = path + keiyakuShosai.getKeiyakuShoNO() + "_"
                    + keiyakuShosai.getSosaNO() + "_" + sysDateStr + extension;

            shorui.setClientGawaFileMei(clientFileName);
            shorui.setUploadFileMei(serverFileName);
            shorui.setLineCD(CodeConst.LineCd.ATTEND);
            shorui.setUploadShoruiTsuban(Long.parseLong(sysDateStr));
            shoruiList.add(shorui);

            // ファイル保存
            UploadCommonUtil.writeBytesToFile(fileBinary, serverFileName);
        }

        // 書類アップロード登録
        UploadCommonUtil.insertUploadShorui(shoruiList);

        // 被保険者選択リスト
        List<Map<String, Object>> hihokenshaList = getMapValue("selectKeiyakuHihokenshaList", formMap);

        String sysDateStr = "";
        if (isShinki) {
            sysDateStr = DateUtil.dateToString(DateUtil.now(), DateUtil.YYYYMMDDHHMMSSSSS);
        } else {
            sysDateStr = getString("modifyTsuban", formMap);
        }

        for (TUploadshorui bean : shoruiList) {

            int hihokenshaCnt = 0;
            // アップロードされた書類分処理を行う
            for (Map<String, Object> hihokenshaMap : hihokenshaList) {

                // 選択された被保険者分、契約書類明細へ登録を行う
                if (getMapValue("sentakuFlg", hihokenshaMap) != null && getMapValue("sentakuFlg", hihokenshaMap).equals("on")) {
                    TKeiyakushoruimeisai keiyakuMeisai = new TKeiyakushoruimeisai();

                    keiyakuMeisai.setKeiyakuShoNO(keiyakuShosai.getKeiyakuShoNO());
                    keiyakuMeisai.setSosaNO(keiyakuShosai.getSosaNO());
                    keiyakuMeisai.setShoruiCD(getMapValue("selectShoruiCd", formMap));
                    keiyakuMeisai.setShoruiHyojiMeisho(getMapValue("shoruiHyojiMeisho", formMap));
                    keiyakuMeisai.setHihokenshaNO(getInteger("hihokenshaNO", hihokenshaMap));
                    keiyakuMeisai.setUploadShoruiTsuban(bean.getUploadShoruiTsuban());
                    keiyakuMeisai.setDojiUploadTsuban(Long.parseLong(sysDateStr));
                    keiyakuMeisai.setKakuninKBN("1");
                    keiyakuMeisai.setShoruiUploadDate(DateUtil.now());
                    keiyakuMeisai.setShoruiUploadTantosha((String) RequestContext.getUserInfo().get("userName"));
                    keiyakuMeisai.setTokkiJiko(getMapValue("tokkiJiko", formMap));

                    UploadCommonUtil.insertKeiyakushoruimeisai(keiyakuMeisai);

                    // 必要書類の場合に契約書類を更新
                    if (!"00".equals(getString("selectShoruiCd", formMap))) {
                        TKeiyakushoruiKey key = new TKeiyakushoruiKey();
                        key.setKeiyakuShoNO(keiyakuShosai.getKeiyakuShoNO());
                        key.setSosaNO(keiyakuShosai.getSosaNO());
                        key.setShoruiCD(getMapValue("selectShoruiCd", formMap));
                        key.setHihokenshaNO(getInteger("hihokenshaNO", hihokenshaMap));

                        TKeiyakushorui keiyakuShorui = selectKeiyakushorui(key);
                        // 確認区分:1(未確認)
                        keiyakuShorui.setKakuninKBN("1");
                        // 契約書類更新
                        UploadCommonUtil.updateKeiyakushorui(keiyakuShorui);
                    }

                    hihokenshaCnt++;
                }
            }

            // 被保険者が選択されていない場合、必要書類以外のアップロード
            // 被保険者番号をintのMAX値に設定
            if (hihokenshaCnt == 0) {
                TKeiyakushoruimeisai keiyakuMeisai = new TKeiyakushoruimeisai();

                keiyakuMeisai.setKeiyakuShoNO(keiyakuShosai.getKeiyakuShoNO());
                keiyakuMeisai.setSosaNO(keiyakuShosai.getSosaNO());
                keiyakuMeisai.setShoruiCD(getMapValue("selectShoruiCd", formMap));
                keiyakuMeisai.setShoruiHyojiMeisho(getMapValue("shoruiHyojiMeisho", formMap));
                keiyakuMeisai.setHihokenshaNO(Integer.MAX_VALUE);
                keiyakuMeisai.setUploadShoruiTsuban(bean.getUploadShoruiTsuban());
                keiyakuMeisai.setDojiUploadTsuban(Long.parseLong(sysDateStr));
                keiyakuMeisai.setKakuninKBN("1");
                keiyakuMeisai.setShoruiUploadDate(DateUtil.now());
                keiyakuMeisai.setShoruiUploadTantosha((String) RequestContext.getUserInfo().get("userName"));
                keiyakuMeisai.setTokkiJiko(getMapValue("tokkiJiko", formMap));

                UploadCommonUtil.insertKeiyakushoruimeisai(keiyakuMeisai);
            }
        }
    }

    /**
     * 確認完了【JI】
     * @param formMap フォーム
     * @throws Exception
     */
    public static void kakuninKanryoJi(Map<String, Object> formMap) throws Exception {

        String hitsuyouShoruiFlg = getMapValue("hitsuyouShoruiFlg", formMap);

        String key = "";

        if (hitsuyouShoruiFlg.equals(CommonConstant.FLAG_ON)) {
            // 必要書類
            key = "uploadSyoruiDispList";
        } else {
            // 必要書類以外
            key = "uploadSyoruiHitsuyouIgaiDispList";
        }

        List<Map<String, Object>> uploadSyoruiDispList = getMapValue(key, formMap);

        for (Map<String, Object> uploadSyoruiMap : uploadSyoruiDispList) {

            // チェックボックスONの場合
            if (StringUtil.isNotEmpty(getMapValue("checkType", uploadSyoruiMap))) {

                // 契約書類明細から更新対象を取得
                List<TKeiyakushoruimeisai> list = selectKeiyakushoruimeisaiListForDojitsuban(getLong("dojiUploadTsuban", uploadSyoruiMap));

                for (TKeiyakushoruimeisai bean : list) {
                    // 確認済み
                    bean.setKakuninKBN("2");
                    bean.setShoruiKakuninDate(DateUtil.now());
                    bean.setShoruiKakuninTantosha((String) RequestContext.getUserInfo().get("userName"));
                    updateKeiyakushoruimeisai(bean);
                }
            }
        }

    }

    /**
     * ファイル保存
     * @param fileEncodeStr フォームエンコード文字列
     * @param fileDest 保存先ファイル名(フルパス)
     * @throws Exception
     */
    public static void writeBytesToFile(String fileEncodeStr, String fileDest) throws Exception {

        byte[] bFile = Base64.getDecoder().decode(fileEncodeStr);

        try (FileOutputStream fileOuputStream = new FileOutputStream(fileDest)) {
            fileOuputStream.write(bFile);
        } catch (IOException e) {
            throw e;
        }

    }

    /**
     * 履歴情報削除
     * @param formMap フォーム
     * @throws Exception
     */
    public static void deleteRireki(Map<String, Object> formMap) throws Exception {

        List<Map<String, Object>> uploadSyoruiDispList = getMapValue("uploadRirekiDispList", formMap);

        for (Map<String, Object> uploadSyoruiMap : uploadSyoruiDispList) {

            // チェックボックスONの場合
            if (StringUtil.isNotEmpty(getMapValue("checkType", uploadSyoruiMap))) {

                // 契約書類明細から更新対象を取得
                List<TKeiyakushoruimeisai> list = selectKeiyakushoruimeisaiListForDojitsuban(getLong("dojiUploadTsuban", uploadSyoruiMap));

                for (TKeiyakushoruimeisai bean : list) {
                    // 削除済み
                    bean.setKakuninKBN("4");
                    bean.setShoruiSakujoDate(DateUtil.now());
                    bean.setShoruiSakujoTantosha((String) RequestContext.getUserInfo().get("userName"));
                    updateKeiyakushoruimeisai(bean);

                    // 書類削除
                    TUploadshoruiKey key = new TUploadshorui();
                    key.setUploadShoruiTsuban(bean.getUploadShoruiTsuban());
                    TUploadshorui shorui = selectUploadShorui(key);

                    deleteFile(shorui.getUploadFileMei());
                }
            }
        }

    }

    /**
     * 書類情報削除
     * @param formMap フォーム
     * @throws Exception
     */
    public static void deleteShoruiInfo(Map<String, Object> formMap) throws Exception {

        // 前回アップロードリスト
        List<Map<String, Object>> zenkaiUploadList = getMapValue("zenkaiUploadList", formMap);

        for (Map<String, Object> beanMap : zenkaiUploadList) {

            // 削除対象の場合
            if (CommonConstant.FLAG_ON.equals(getString("deleteFlg", beanMap))) {

                // 書類明細取得
                List<TKeiyakushoruimeisai> list = selectKeiyakushoruimeisaiList(getLong("uploadShoruiTsuban", beanMap));

                for (TKeiyakushoruimeisai bean : list) {
                    // 書類明細削除
                    deleteKeiyakuShoruimeisai(bean);

                    TUploadshoruiKey shorui = new TUploadshoruiKey();
                    shorui.setUploadShoruiTsuban(bean.getUploadShoruiTsuban());

                    // アップロード書類削除
                    int cnt = deleteUploadShorui(shorui);

                    // 削除されたらファイルも削除
                    if (cnt > 0) {
                        deleteFile(getString("uploadFileMei", beanMap));
                    }
                }
            }
        }
    }

    /**
     * 書類情報紐付き解除
     * @param formMap フォーム
     * @throws Exception
     */
    public static void kaijoShoruiInfo(Map<String, Object> formMap) throws Exception {

        // 同時通番単位で契約書類を取得
        List<TKeiyakushoruimeisai> list = selectKeiyakushoruimeisaiListForDojitsuban(getLong("modifyTsuban", formMap));

        // 被保険者選択リスト
        List<Map<String, Object>> hihokenshaList = getMapValue("selectKeiyakuHihokenshaList", formMap);

        // 選択リストループ
        for (Map<String, Object> hihokenshaMap : hihokenshaList) {

            if (getMapValue("sentakuFlg", hihokenshaMap) == null || getMapValue("sentakuFlg", hihokenshaMap).equals("")) {
                // 未選択
                for (TKeiyakushoruimeisai bean : list) {
                    // 契約書類明細に存在する被保険者は削除する
                    if (bean.getHihokenshaNO().toString().equals(getString("hihokenshaNO", hihokenshaMap))) {
                        deleteKeiyakuShoruimeisai(bean);
                        break;
                    }
                }

            } else {
                boolean isExist = false;
                // 選択されていてる場合
                for (TKeiyakushoruimeisai bean : list) {
                    // 契約書類明細に存在する場合は更新する
                    if (bean.getHihokenshaNO().toString().equals(getString("hihokenshaNO", hihokenshaMap))) {

                        bean.setShoruiHyojiMeisho(getMapValue("shoruiHyojiMeisho", formMap));
                        bean.setTokkiJiko(getMapValue("tokkiJiko", formMap));
                        bean.setKakuninKBN("1");

                        updateKeiyakushoruimeisai(bean);
                        isExist = true;
                        break;
                    }
                }
                // 契約書類明細に存在しない場合は新規登録を行う
                if (!isExist) {
                    TKeiyakushoruimeisai bean = list.get(0);
                    TKeiyakushoruimeisai toroku = new TKeiyakushoruimeisai();

                    toroku.setKeiyakuShoNO(bean.getKeiyakuShoNO());
                    toroku.setSosaNO(bean.getSosaNO());
                    toroku.setShoruiCD(bean.getShoruiCD());
                    toroku.setShoruiHyojiMeisho(bean.getShoruiHyojiMeisho());
                    toroku.setHihokenshaNO(getInteger("hihokenshaNO", hihokenshaMap));
                    toroku.setUploadShoruiTsuban(bean.getUploadShoruiTsuban());
                    toroku.setDojiUploadTsuban(bean.getDojiUploadTsuban());
                    toroku.setKakuninKBN("1");
                    toroku.setShoruiUploadDate(bean.getShoruiUploadDate());
                    toroku.setTokkiJiko(bean.getTokkiJiko());

                    insertKeiyakushoruimeisai(toroku);
                }

            }
        }

    }

    /**
     * アップロード書類明細取得
     * @param keiyakuShoruiMeisai アップロード書類明細
     * @return アップロード書類明細
     * @throws Exception
     */
    public static List<TKeiyakushoruimeisai> selectKeiyakushoruimeisaByKey(TKeiyakushoruimeisai keiyakuShoruiMeisai)
            throws Exception {

        TKeiyakushoruimeisaiExample example = new TKeiyakushoruimeisaiExample();
        TKeiyakushoruimeisaiExample.Criteria criteria = example.createCriteria();
        criteria.andKeiyakuShoNOEqualTo(keiyakuShoruiMeisai.getKeiyakuShoNO());
        criteria.andSosaNOEqualTo(keiyakuShoruiMeisai.getSosaNO());
        criteria.andShoruiCDEqualTo(keiyakuShoruiMeisai.getShoruiCD());
        criteria.andHihokenshaNOEqualTo(keiyakuShoruiMeisai.getHihokenshaNO());
        if (keiyakuShoruiMeisai.getUploadShoruiTsuban() != null) {
            criteria.andUploadShoruiTsubanEqualTo(keiyakuShoruiMeisai.getUploadShoruiTsuban());
        }
        List<TKeiyakushoruimeisai> list =
                DAOFactory.getDAO(DAOFactory.FUSSS).selectList("jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruimeisaiMapper.selectByExample", example);

        return list;

    }

    /**
     * アップロード書類明細取得
     * @param keiyakuShoruiMeisai アップロード書類明細
     * @return アップロード書類明細
     * @throws Exception
     */
    public static List<TKeiyakushoruimeisai> selectKeiyakushoruimeisai(TKeiyakushoruimeisai keiyakuShoruiMeisai)
            throws Exception {

        TKeiyakushoruimeisaiExample example = new TKeiyakushoruimeisaiExample();
        TKeiyakushoruimeisaiExample.Criteria criteria = example.createCriteria();
        criteria.andKeiyakuShoNOEqualTo(keiyakuShoruiMeisai.getKeiyakuShoNO());
        criteria.andSosaNOEqualTo(keiyakuShoruiMeisai.getSosaNO());

        List<TKeiyakushoruimeisai> list =
                DAOFactory.getDAO(DAOFactory.FUSSS).selectList("jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruimeisaiMapper.selectByExample", example);

        return list;

    }

    /**
     * アップロード書類明細取得
     * @param tsuban アップロード通番
     * @return アップロード書類明細
     * @throws Exception
     */
    public static List<TKeiyakushoruimeisai> selectKeiyakushoruimeisaiList(Long tsuban)
            throws Exception {

        TKeiyakushoruimeisaiExample example = new TKeiyakushoruimeisaiExample();
        TKeiyakushoruimeisaiExample.Criteria criteria = example.createCriteria();
        criteria.andUploadShoruiTsubanEqualTo(tsuban);

        List<TKeiyakushoruimeisai> list =
                DAOFactory.getDAO(DAOFactory.FUSSS).selectList("jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruimeisaiMapper.selectByExample", example);

        return list;

    }

    /**
     * アップロード書類明細取得
     * @param tsuban アップロード通番
     * @return アップロード書類明細
     * @throws Exception
     */
    public static List<TKeiyakushoruimeisai> selectKeiyakushoruimeisaiListForDojitsuban(Long tsuban)
            throws Exception {

        TKeiyakushoruimeisaiExample example = new TKeiyakushoruimeisaiExample();
        TKeiyakushoruimeisaiExample.Criteria criteria = example.createCriteria();
        criteria.andDojiUploadTsubanEqualTo(tsuban);

        List<TKeiyakushoruimeisai> list =
                DAOFactory.getDAO(DAOFactory.FUSSS).selectList("jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruimeisaiMapper.selectByExample", example);

        return list;

    }

    /**
     * アップロード書類明細を更新
     *
     * @param bean アップロード書類明細
     * @return 更新件数
     * @throws Exception
     */
    public static int updateKeiyakushoruimeisai(TKeiyakushoruimeisai bean)
            throws Exception {

        return DAOFactory.getDAO(DAOFactory.FUSSS).update(
                "jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruimeisaiMapper.updateByPrimaryKeySelective", bean);

    }

    /**
     * アップロード書類明細削除
     * @param bean アップロード書類キー情報
     * @return 削除件数
     * @throws Exception
     */
    public static int deleteKeiyakuShoruimeisai(TKeiyakushoruimeisaiKey bean)
            throws Exception {

        return DAOFactory.getDAO(DAOFactory.FUSSS).delete("jp.co.ji.sql.basic.fusss.ota.TKeiyakushoruimeisaiMapper.deleteByPrimaryKey", bean);

    }

    /**
     * アップロード書類取得
     * @param bean アップロード書類キー情報
     * @return アップロード書類
     * @throws Exception
     */
    public static TUploadshorui selectUploadShorui(TUploadshoruiKey bean)
            throws Exception {

        return DAOFactory.getDAO(DAOFactory.FUSSS).selectOne("jp.co.ji.sql.basic.fusss.common.TUploadshoruiMapper.selectByPrimaryKey", bean);

    }

    /**
     * アップロード書類削除
     * @param bean アップロード書類キー情報
     * @return 削除件数
     * @throws Exception
     */
    public static int deleteUploadShorui(TUploadshoruiKey bean)
            throws Exception {

        return DAOFactory.getDAO(DAOFactory.FUSSS).delete("jp.co.ji.sql.basic.fusss.common.TUploadshoruiMapper.deleteByPrimaryKey", bean);

    }

    /**
     * ファイル削除
     * @param filePath ファイルパス
     * @throws Exception
     */
    public static void deleteFile(String filePath)
            throws Exception {

        File file = new File(filePath);
        if (file.exists()) {
            file.delete();
        }
    }

    /**
     * 契約内容変更依頼
     * @param formMap フォーム
     * @param isDbToroku DB登録:true、form格納:false
     * @throws Exception
     */
    public static void keiyakunaiyoHenkoIrai(Map<String, Object> formMap, boolean isDbToroku) throws Exception {

        // フォーム情報から取得契約詳細
        final TKeiyakushosai keiyakuShosai = ConvertUtil.convert(formMap.get(MapKeyConst.MKSHOSAI),
                new TypeReference<TKeiyakushosai>() {
                });

        // 異動可否リスト
        List<Map<String, Object>> idokahiInfoList = getMapValue("idokahiInfoList", formMap);

        // 書類明細保持用リスト
        List<TKeiyakushoruimeisai> shoruiMeisaiListForSave = new ArrayList<TKeiyakushoruimeisai>();

        // アップロード書類保持用リスト
        List<TUploadshorui> shoruiListForSave = new ArrayList<TUploadshorui>();

        for (Map<String, Object> idokahiInfo : idokahiInfoList) {

            // アップロードしたファイルがなければ処理しない
            List<Map<String, Object>> list = getMapValue("fileInfoList", idokahiInfo);
            if (list.size() == 0) {
                continue;
            }

            List<TKeiyakushoruimeisai> shoruiMeisaiList = ConvertUtil.convert(idokahiInfo.get("hihokenshaShoruiList"),
                    new TypeReference<List<TKeiyakushoruimeisai>>() {
                    });

            List<Map<String, Object>> uplaodList = getMapValue("fileInfoList", idokahiInfo);

            List<TUploadshorui> shoruiList = new ArrayList<TUploadshorui>();

            for (Map<String, Object> uplaod : uplaodList) {

                TUploadshorui shorui = new TUploadshorui();

                // クライアントファイル名
                String clientFileName = getString("clientFileName", uplaod);

                // ファイル(バイナリ)
                String fileBinary = getString("fileBinary", uplaod);

                // システム日付(アップロード書類通番)
                String sysDateStr = DateUtil.dateToString(DateUtil.now(), DateUtil.YYYYMMDDHHMMSSSSS);

                // 拡張子
                String extension = clientFileName.substring(clientFileName.lastIndexOf("."));

                // 保存先ディレクトリ
                String path = Config.getParameter(Config.UPLOAD_SHORUI_PATH);

                // サーバ保存ファイル名
                String serverFileName = path + keiyakuShosai.getKeiyakuShoNO() + "_"
                        + keiyakuShosai.getSosaNO() + "_" + sysDateStr + extension;

                shorui.setClientGawaFileMei(clientFileName);
                shorui.setUploadFileMei(serverFileName);
                shorui.setLineCD(CodeConst.LineCd.ATTEND);
                shorui.setUploadShoruiTsuban(Long.parseLong(sysDateStr));

                shoruiList.add(shorui);

                if (!isDbToroku) {
                    shoruiListForSave.add(shorui);
                }

                // ファイル保存
                UploadCommonUtil.writeBytesToFile(fileBinary, serverFileName);

                for (TKeiyakushoruimeisai shoruiMeisai : shoruiMeisaiList) {
                    // 契約証番号
                    shoruiMeisai.setKeiyakuShoNO(keiyakuShosai.getKeiyakuShoNO());
                    // 操作番号
                    shoruiMeisai.setSosaNO(keiyakuShosai.getSosaNO());
                    // 確認区分
                    shoruiMeisai.setKakuninKBN("1");
                    // アップロード日時
                    shoruiMeisai.setShoruiUploadDate(DateUtil.now());
                    // アップロード通番
                    shoruiMeisai.setUploadShoruiTsuban(Long.parseLong(sysDateStr));
                    // 同時アップロード通番
                    shoruiMeisai.setDojiUploadTsuban(Long.parseLong(sysDateStr));

                    if (isDbToroku) {
                        UploadCommonUtil.insertKeiyakushoruimeisai(shoruiMeisai);
                    } else {
                        shoruiMeisaiListForSave.add(shoruiMeisai);
                    }
                }
            }

            if (isDbToroku) {
                // 書類アップロード登録
                UploadCommonUtil.insertUploadShorui(shoruiList);
            }
        }

        if (!isDbToroku) {

            // 契約書類明細
            formMap.put(MapKeyConst.MKKEIYAKUSHORUIMEISAILIST,
                    ConvertUtil.convertToMapList(shoruiMeisaiListForSave));

            // アップロード書類
            formMap.put(MapKeyConst.MKUPLOADSHORUILIST,
                    ConvertUtil.convertToMapList(shoruiListForSave));
        }
    }

    /**
     * ファイルがアップロードされたかを確認する
     * @param formMap フォーム
     * @return true:ファイルあり、false:ファイルなし
     * @throws Exception
     */
    public static boolean isUpload(Map<String, Object> formMap) throws Exception {
        boolean rtn = true;

        // ファイルアップロードリスト
        List<Map<String, Object>> uplaodList = getMapValue("fileInfoList", formMap);

        if (uplaodList.size() == 0) {
            rtn = true;
        }

        return rtn;
    }

    /**
     * 拡張子チェック
     * @param formMap フォーム
     * @return true:指定された拡張子、false:指定された拡張子以外
     * @throws Exception
     */
    public static boolean validateExtension(Map<String, Object> formMap) throws Exception {
        boolean rtn = true;

        // ファイルアップロードリスト
        List<Map<String, Object>> uplaodList = getMapValue("fileInfoList", formMap);

        // 比較対象拡張子
        String[] fileExtension = getString("uploadFileExtension", formMap).split(",");

        for (Map<String, Object> uplaod : uplaodList) {
            // クライアントファイル名
            String clientFileName = getString("clientFileName", uplaod);

            String[] uploadFileExtension = clientFileName.split("\\.");
            String tmpFileExtension = uploadFileExtension[uploadFileExtension.length - 1].toLowerCase();

            if (uploadFileExtension.length < 2 || !Arrays.asList(fileExtension).contains(tmpFileExtension)) { // ファイル拡張子チェック
                rtn = false;
                break;
            }
        }

        return rtn;
    }

    /**
     * 契約決済情報を取得
     *
     * @param formMap フォームマップ
     * @param keiyakuShoNo 契約証番号
     * @param sosaNO 操作番号
     * @throws Exception
     */
    public static void setKeiyakukessaiList(Map<String, Object> formMap, String keiyakuShoNo, String sosaNO)
            throws Exception {

        TKeiyakukessaijohoExample example = new TKeiyakukessaijohoExample();
        TKeiyakukessaijohoExample.Criteria criteria = example.createCriteria();
        criteria.andKeiyakuShoNOEqualTo(keiyakuShoNo);
        criteria.andSosaNOEqualTo(Long.parseLong(sosaNO));

        List<TKeiyakukessaijoho> list =
                DAOFactory.getDAO(DAOFactory.FUSSS).selectList("jp.co.ji.sql.basic.fusss.ota.TKeiyakukessaijohoMapper.selectByExample", example);

        formMap.put("keiyakuKessaiJohoList", list);

    }

    /**
     * 名簿ファイル保存
     * @param formMap フォーム
     * @return ファイルアップロード名のリスト
     * @throws Exception
     */
    public static List<Map<String, Object>> saveMeiboInfo(Map<String, Object> formMap) throws Exception {

        // フォーム情報から取得契約詳細
        final TKeiyakushosai keiyakuShosai = ConvertUtil.convert(formMap.get(MapKeyConst.MKSHOSAI),
                new TypeReference<TKeiyakushosai>() {
                });

        // ファイルアップロードリスト
        List<Map<String, Object>> uplaodList = getMapValue("fileInfoList", formMap);

        // ファイル名リスト
        List<Map<String, Object>> fileNameList = new ArrayList<Map<String, Object>>();
        Map<String, Object> fileNameMap = new HashMap<String, Object>();

        for (Map<String, Object> uplaod : uplaodList) {

            // クライアントファイル名
            String clientFileName = getString("clientFileName", uplaod);

            // ファイル(バイナリ)
            String fileBinary = getString("fileBinary", uplaod);

            // システム日付
            String sysDateStr = DateUtil.dateToString(DateUtil.now(), DateUtil.YYYYMMDDHHMMSSSSS);

            // 拡張子
            String extension = clientFileName.substring(clientFileName.lastIndexOf("."));

            // ファイル名
            String tourNO = "";
            int index = 0;
            if (clientFileName.contains("ルーミング")) {
                index = clientFileName.indexOf("(");
                tourNO = clientFileName.substring(0, index).replace("ルーミング", "");
            }

            // 保存先ディレクトリ
            String path = Config.getParameter(Config.UPLOAD_SHORUI_PATH);

            // サーバ保存ファイル名
            String serverFileName = path + keiyakuShosai.getKeiyakuShoNO() + "_"
                    + keiyakuShosai.getSosaNO() + "_" + sysDateStr + extension;

            fileNameMap = new HashMap<String, Object>();
            fileNameMap.put("fileName", keiyakuShosai.getKeiyakuShoNO() + "_" + keiyakuShosai.getSosaNO() + "_" + sysDateStr + extension);
            fileNameMap.put("tourNO", tourNO);

            fileNameList.add(fileNameMap);

            // ファイル保存
            UploadCommonUtil.writeBytesToFile(fileBinary, serverFileName);
        }

        return fileNameList;
    }
}



日本 Japan
 ·日本留学生活 求个大阪合租
·日本留学生活 自家房招租求
·日本留学生活 东京地区出9成新lv钱包
·日本育儿教育 孩子从国内过来如何学习日语
·日本育儿教育 明年四月横滨招月嫂
·日本育儿教育 请问咋让娃突破识字关?感谢分享中文共读和学习经验的妈妈
 ·中文新闻 东区明星迈克尔·格列柯,53 岁,将在第一次出生两年后第二次
·中文新闻 《爱情岛》明星卡米拉·瑟洛和杰米·朱维特在透露即将迎来第三

日语考试

旅行管理

华人网出套资格考试用书,课本4本,习题6本,CD课时9张,16小时左右。7千出。位置东京,上板桥车站附近,东武东上线上,池袋,山手线上交易。微信qzq20198 评论 1111111 ...

日语考试

募集一起备考FP考试

华人网情况介绍‘ 本人打算明年1月先考3级 之后考2级想找小伙伴一起学习。 我滴情况是,社会人30代前半,人品端正热爱学习和户外运动 想持续保持学习和进步。 坐标最好是东京靠埼玉, ...

日语考试

行政书士资格考试

华人网今年十一月份打算考行政书士资格,有没有一起考试的小伙伴,可以加我微信,大家一起分享学习经验。同时更加欢迎考过的前辈给予指导!万分感谢! ...

日语考试

1v1辅导研究计划书(情报,通信专业)

华人网教育背景:985计算机+早大情报 辅导经历:曾在东京知名的理工孰任教,教授课程包括《高等数学》,《线性代数》,《形式语言》,《数理统计》,曾1v1辅导过多名学生的研究计划书。 ...

日语考试

找个小伙伴一起学习java

华人网准备明年入职,有资料可以共享给你,我是基本0开始的所以想互相监督,约定线上固定时间,守时素质高的,日语太差的别了,一起学习 评论 留下你的V我加你。举个例子,约定好每周 ...

日语考试

求书 ソーシャルワーク基盤と専門職

华人网求书 ソーシャルワーク基盤と専門職 评论 这本书应该是日本学校的教材,而且好像是较新版本,LZ是不是觉得这里比去书店找能更快找到? 评论 学校要用的书想便宜点买个二手的 ...