日本华人论坛 程序编写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
 ·日本中文新闻 日本26年新成人预估仅109万 与去年并列历史第二低
·日本中文新闻 日本皇居新年参贺突发裸奔事件 男子涉公然猥亵被捕
·日本中文新闻 印度宣布超越日本成为全球第四大经济体
·日本留学生活 在熟悉的城市,遇見不一樣的感受
·日本留学生活 求购一些水电燃气话费等公共料金请求书
·日本华人网络交流 制造信息垃圾的产业,这种现象在日本尤其普遍。
·日本华人网络交流 美军入侵 委内瑞拉领空 并非零伤亡
·日本华人网络交流 年末采购食品,恰时间就能全半价。
 ·中文新闻 马丁·克鲁内斯 (Martin Clunes) 在新剧中变身休·爱德华兹 (Huw Edw
·中文新闻 当朋友们讲述他们对他们的阴谋感到震惊以及他们如何向他们隐

日语考试

旅行管理

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

日语考试

募集一起备考FP考试

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

日语考试

行政书士资格考试

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

日语考试

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

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

日语考试

找个小伙伴一起学习java

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

日语考试

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

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