package com.jasamedika.medifirst2000.service.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jasamedika.medifirst2000.converter.BaseConverterImpl;
import com.jasamedika.medifirst2000.converter.base.BaseVoConverter;
import com.jasamedika.medifirst2000.dao.CekListGedungBangunanDao;
import com.jasamedika.medifirst2000.dao.CekListGedungBangunanDetailDao;
import com.jasamedika.medifirst2000.dao.CekListGedungBangunanHeaderDao;
import com.jasamedika.medifirst2000.dao.PlanningPelayananDao;
import com.jasamedika.medifirst2000.dao.PlanningPelayananPetugasDao;
import com.jasamedika.medifirst2000.dao.RegistrasiAsetDao;
import com.jasamedika.medifirst2000.dao.StrukOrderDao;
import com.jasamedika.medifirst2000.dao.StrukPlanningDao;
import com.jasamedika.medifirst2000.dao.custom.StrukOrderDaoCustom;
import com.jasamedika.medifirst2000.entities.AsalSukuCadang;
import com.jasamedika.medifirst2000.entities.CekListGedungBangunan;
import com.jasamedika.medifirst2000.entities.CekListGedungBangunanDetail;
import com.jasamedika.medifirst2000.entities.CekListGedungBangunanHeader;
import com.jasamedika.medifirst2000.entities.IpsrsPemeriksaanAlat;
import com.jasamedika.medifirst2000.entities.KelompokTransaksi;
import com.jasamedika.medifirst2000.entities.OrderPelayanan;
import com.jasamedika.medifirst2000.entities.Pegawai;
import com.jasamedika.medifirst2000.entities.Pemeriksaan;
import com.jasamedika.medifirst2000.entities.PlanningPelayanan;
import com.jasamedika.medifirst2000.entities.PlanningPelayananPetugas;
import com.jasamedika.medifirst2000.entities.RegistrasiAset;
import com.jasamedika.medifirst2000.entities.Rekanan;
import com.jasamedika.medifirst2000.entities.RekananSkKontrak;
import com.jasamedika.medifirst2000.entities.RekananSkKontrakDetail;
import com.jasamedika.medifirst2000.entities.Ruangan;
import com.jasamedika.medifirst2000.entities.StatusPekerjaan;
import com.jasamedika.medifirst2000.entities.StrukOrder;
import com.jasamedika.medifirst2000.entities.StrukPlanning;
import com.jasamedika.medifirst2000.service.CekListGedungBangunanHeaderService;
import com.jasamedika.medifirst2000.service.LoginUserService;
import com.jasamedika.medifirst2000.service.StrukOrderService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.AsalSukuCadangVO;
import com.jasamedika.medifirst2000.vo.CekListGedungBangunanDetailVO;
import com.jasamedika.medifirst2000.vo.CekListGedungBangunanHeaderVO;
import com.jasamedika.medifirst2000.vo.CekListGedungBangunanVO;
import com.jasamedika.medifirst2000.vo.OrderPelayananVO;
import com.jasamedika.medifirst2000.vo.PegawaiVO;
import com.jasamedika.medifirst2000.vo.PemeliharaanVO;
import com.jasamedika.medifirst2000.vo.PemeriksaanVO;
import com.jasamedika.medifirst2000.vo.PenjadwalanDetailVO;
import com.jasamedika.medifirst2000.vo.PenjadwalanHeaderVO;
import com.jasamedika.medifirst2000.vo.PlanningPelayananPetugasVO;
import com.jasamedika.medifirst2000.vo.RegistrasiAsetVO;
import com.jasamedika.medifirst2000.vo.RekananSkKontrakDetailVO;
import com.jasamedika.medifirst2000.vo.RekananSkKontrakVO;
import com.jasamedika.medifirst2000.vo.RekananVO;
import com.jasamedika.medifirst2000.vo.RuanganVO;
import com.jasamedika.medifirst2000.vo.StatusPekerjaanVO;
import com.jasamedika.medifirst2000.vo.StrukOrderVO;


@Service("CekListGedungBangunanHeaderService")
public class CekListGedungBangunanHeaderServiceImpl extends BaseVoServiceImpl implements CekListGedungBangunanHeaderService {
	private static final Logger LOG = LoggerFactory.getLogger(CekListGedungBangunanHeaderServiceImpl.class);
	
	@Autowired
	private CekListGedungBangunanHeaderDao cekListGedungBangunanHeaderDao;
	
	@Autowired
	private CekListGedungBangunanDetailDao cekListGedungBangunanDetailDao;
	
	@Autowired
	private BaseVoConverter<CekListGedungBangunanVO,CekListGedungBangunan> CekListGedungBangunanConverter;
	
	@Autowired
	private BaseVoConverter<StrukOrderVO, StrukOrder> strukOrderConverter;
	
	@Autowired
	private BaseVoConverter<OrderPelayananVO, OrderPelayanan> orderPelayananConverter;
	
	@Autowired
	private StrukOrderService strukOrderService;
	
	@Autowired
	private LoginUserService loginUserService;
	
	@Autowired
	private BaseConverterImpl<RuanganVO, Ruangan> ruanganConverter;
	
	@Autowired
	private RegistrasiAsetDao registrasiAsetDao;
	
	@Autowired
	private BaseConverterImpl<PegawaiVO, Pegawai> pegawaiConverter;
	
	@Autowired
	private PlanningPelayananPetugasDao planningPelayananPetugasDao;
	
	@Autowired
	private StrukOrderDao strukOrderDao;
	
	@Autowired
	private StrukPlanningDao strukPlanningDao;
	
	@Autowired
	private BaseConverterImpl<RekananVO, Rekanan> rekananConverter;
	
	@Autowired
	private PlanningPelayananDao planningPelayananDao;
	
	@Autowired
	private StrukOrderDaoCustom strukOrderDaoCustom;
	
	@Autowired
	private CekListGedungBangunanDao cekListGedungBangunanDao;
	
	@Autowired
	private BaseConverterImpl<RekananSkKontrakDetailVO, RekananSkKontrakDetail> rekananSkKontrakDetailConverter;
	
	@Autowired
	private BaseConverterImpl<RekananSkKontrakVO, RekananSkKontrak> rekananSkKontrakConverter;
	
	@Autowired
	private BaseConverterImpl<StatusPekerjaanVO, StatusPekerjaan> statusPekerjaanConverter;
	
	@Autowired
	private BaseConverterImpl<AsalSukuCadangVO, AsalSukuCadang> asalSukuCadangConverter;
	
	@Override
	public Map<String, Object> saveTrans(CekListGedungBangunanHeaderVO vo) {
		Map<String, Object> result = new HashMap<String, Object>();
		
		OrderPelayanan orderPelayanan = this.cekListGedungBangunanHeaderDao.getOrderPelayanByNoRec(vo.getOrderPelayananId());
		CekListGedungBangunanHeader cekListGedungHeader = new CekListGedungBangunanHeader();
		cekListGedungHeader.setKeterangan(vo.getKeterangan());
		cekListGedungHeader.setTanggal(vo.getTanggal());
		cekListGedungHeader.setOrderPelayanan(orderPelayanan);
		cekListGedungHeader.setStrukOrder(orderPelayanan.getNoOrder());
		CekListGedungBangunanHeader cekResult = this.cekListGedungBangunanHeaderDao.save(cekListGedungHeader);
		
		if(CommonUtil.isNotNullOrEmpty(cekListGedungHeader)){
			
			for(CekListGedungBangunanDetailVO cekListDetailVO : vo.getCekListGedungDetail()){
				CekListGedungBangunanDetail cekListDetail = new CekListGedungBangunanDetail();
				//CekListGedungBangunanDetail cekListDetail = this.cekListGedungBangunanDetailDao.findOne(cekListDetailVO.getNoRec());
				cekListDetail.setCekListGedungBangunanHeader(cekListGedungHeader);
				cekListDetail.setCekListGedungBangunan(CekListGedungBangunanConverter.transferVOToModel(cekListDetailVO.getCekListGedungBangunan(), new CekListGedungBangunan()));
				cekListDetail.setKeterangan(cekListDetailVO.getKeterangan());
				cekListDetail.setKondisi(cekListDetailVO.getKondisi());
				cekListGedungBangunanDetailDao.save(cekListDetail);
			}
			
		}
		
		if(CommonUtil.isNotNullOrEmpty(cekResult)){
			result.put("noRec", cekListGedungHeader.getNoRec());
		}
		
		return result;
	}

	@Override
	public Map<String, Object> saveCekListMasterToJadwalGedung(CekListGedungBangunanHeaderVO vo) {
		Map<String, Object> result = new HashMap<>();
		
		CekListGedungBangunanHeader cekListGedungBangunanHeader = new CekListGedungBangunanHeader();
		OrderPelayanan orderPelayanan = this.cekListGedungBangunanHeaderDao.getOrderPelayanByNoRec(vo.getOrderPelayananId());
		cekListGedungBangunanHeader.setOrderPelayanan(orderPelayanan);
		cekListGedungBangunanHeader.setStrukOrder(orderPelayanan.getNoOrder());
		cekListGedungBangunanHeader.setKeterangan(vo.getKeterangan());
		cekListGedungBangunanHeader.setTanggal(vo.getTanggal());
		CekListGedungBangunanHeader resultCekList = this.cekListGedungBangunanHeaderDao.save(cekListGedungBangunanHeader);
		
		if(CommonUtil.isNotNullOrEmpty(cekListGedungBangunanHeader)){
			List<CekListGedungBangunan> listData = this.cekListGedungBangunanHeaderDao.getCekList();
			
			for(CekListGedungBangunan mappingdata : listData){
				CekListGedungBangunanDetail cekListGedungBangunanDetail = new CekListGedungBangunanDetail();
				cekListGedungBangunanDetail.setCekListGedungBangunanHeader(cekListGedungBangunanHeader);
				cekListGedungBangunanDetail.setCekListGedungBangunan(mappingdata);
				cekListGedungBangunanDetail = this.cekListGedungBangunanDetailDao.save(cekListGedungBangunanDetail);	
			}
		}
		
		if(CommonUtil.isNotNullOrEmpty(resultCekList)){
			result.put("noRec", cekListGedungBangunanHeader.getNoRec());
		}
		return result;
	}

	/*
	 * Simpan Data Jadwal Pemeliharaan Gedung
	 * Save cek list data maintenance gedung
	 * created by iwankasan
	 * date : 21.01.2018
	 */
	@Override
	public Map<String, Object> savePenjadwalanGedung(CekListGedungBangunanHeaderVO vo) {
		if(CommonUtil.isNotNullOrEmpty(vo.getPenjadwalanKerjaDetail())){
			for(PenjadwalanDetailVO penjadwalanDetail:vo.getPenjadwalanKerjaDetail()){

				StrukOrder strukOrder=new StrukOrder();
				String noUrut=strukOrderService.formatNoUrut("Order Perbaikan", "PBK");
				strukOrder.setNoOrder(noUrut);
				strukOrder.setStatusEnabled(true);
				strukOrder.setNoOrderIntern(noUrut);
				strukOrder.setTglOrder(vo.getTglOrder());
				strukOrder.setQtyJenisProduk(0.0);
				strukOrder.setQtyProduk(0.0);
				strukOrder.setTotalBeaMaterai(0.0);
				strukOrder.setTotalHargaSatuan(0.0);
				strukOrder.setTotalBiayaKirim(0.0);
				strukOrder.setTotalBiayaTambahan(0.0);
				strukOrder.setTotalDiscount(0.0);
				strukOrder.setTotalHarusDibayar(0.0);
				strukOrder.setTotalPph(0.0);
				strukOrder.setTotalPpn(0.0);
				strukOrder.setPegawaiOrder(loginUserService.getLoginUser().getPegawai());
				strukOrder.setIsDelivered((byte) 1);
				strukOrder.setKeteranganLainnya(vo.getKeteranganOrder());
				if(penjadwalanDetail.getJenisPenjadwalan().equals("PEMELIHARAAN")){
					strukOrder.setKeteranganOrder("Jadwal Pemeliharaan");
				}else if(penjadwalanDetail.getJenisPenjadwalan().equals("KONTRAK SERVICE")){
					strukOrder.setKeteranganOrder("Jadwal Kontrak Service");
				}else if(penjadwalanDetail.getJenisPenjadwalan().equals("KALIBRASI")){
					strukOrder.setKeteranganOrder("Jadwal Kalibrasi");
				}
				KelompokTransaksi kelompokTransaksi = new KelompokTransaksi();
				kelompokTransaksi.setId(Integer.parseInt(GetSettingDataFixed("kelompokTransaksiPermintaanPerbaikanIpsrs")));
				strukOrder.setKelompokTransaksi(kelompokTransaksi);
				
				if(CommonUtil.isNotNullOrEmpty(vo.getRuanganTujuan())){
					strukOrder.setRuanganTujuan(ruanganConverter.transferVOToModel(vo.getRuanganTujuan(),new Ruangan()));
				}
				if(CommonUtil.isNotNullOrEmpty(vo.getRuanganAsal())){
					strukOrder.setRuangan(ruanganConverter.transferVOToModel(vo.getRuanganAsal(),new Ruangan()));
				}
				
				OrderPelayanan orderPelayanan=new OrderPelayanan();
				//if(CommonUtil.isNotNullOrEmpty(vo.getRegistrasiAset())){
					
				//}
				orderPelayanan.setNoOrder(strukOrder);
				orderPelayanan.setQtyProduk(0.0);				
				orderPelayanan.setQtyStokCurrent(0.0);
				orderPelayanan.setStrukOrder(strukOrder);
				orderPelayanan.setStatusEnabled(true);
				orderPelayanan.setQtyProdukRetur(0.0);
				orderPelayanan.setIsCito((byte) 1);
				orderPelayanan.setTglPelayanan(strukOrder.getTglOrder());
				if(CommonUtil.isNotNullOrEmpty(vo.getRegistrasiAset())){
					RegistrasiAset registrasiAset=registrasiAsetDao.findById(vo.getRegistrasiAset().getNoRec());
					orderPelayanan.setRegistrasiAset(registrasiAset);
					if(CommonUtil.isNotNullOrEmpty(registrasiAset.getProduk())){
						orderPelayanan.setProduk(registrasiAset.getProduk());
						if(CommonUtil.isNotNullOrEmpty(orderPelayanan.getProduk().getSatuanStandar())){
							orderPelayanan.setSatuanStandar(orderPelayanan.getProduk().getSatuanStandar());
						}
					}
				}
				
				
				if(CommonUtil.isNotNullOrEmpty(vo.getRuanganTujuan())){
					orderPelayanan.setRuanganTujuan(ruanganConverter.transferVOToModel(vo.getRuanganTujuan(),new Ruangan()));
				}
				if(CommonUtil.isNotNullOrEmpty(vo.getRuanganAsal())){
					orderPelayanan.setRuangan(ruanganConverter.transferVOToModel(vo.getRuanganAsal(),new Ruangan()));
				}
				
				
				orderPelayanan.setHasilKonversi(0.0);
				strukOrder.getOrderPelayanan().add(orderPelayanan);
				
				strukOrder=strukOrderDao.save(strukOrder);
			
				if(CommonUtil.isNotNullOrEmpty(penjadwalanDetail.getPegawai())){
					PlanningPelayananPetugas planningPelayananPetugas=new PlanningPelayananPetugas();
					planningPelayananPetugas.setPegawai(pegawaiConverter.transferVOToModel(penjadwalanDetail.getPegawai(), new Pegawai()));
					planningPelayananPetugas.setIsPetugasPepJawab((byte) 0);
					planningPelayananPetugas.setTglPelayanan(new Date());
					planningPelayananPetugas.setTglPlanning(new Date());
					planningPelayananPetugas.setStrukOrder(strukOrder);
					planningPelayananPetugasDao.save(planningPelayananPetugas);
				}
				
				StrukPlanning strukPlanning=new StrukPlanning();
				if(penjadwalanDetail.getJenisPenjadwalan().equals("PEMELIHARAAN")){
					strukPlanning.setDeskripsiplanning("Jadwal Pemeliharaan");
					strukPlanning.setNamaplanning("Jadwal Pemeliharaan");
				}else if(penjadwalanDetail.getJenisPenjadwalan().equals("KONTRAK SERVICE")){
					strukPlanning.setDeskripsiplanning("Jadwal Kontrak Service");
					strukPlanning.setNamaplanning("Jadwal Kontrak Service");
				}else if(penjadwalanDetail.getJenisPenjadwalan().equals("KALIBRASI")){
					strukPlanning.setDeskripsiplanning("Jadwal Kalibrasi");
					strukPlanning.setNamaplanning("Jadwal Kalibrasi");
				}
				strukPlanning.setKdalamattujuan(null);
				strukPlanning.setKdasalanggaran(null);
				strukPlanning.setKddokumensk(null);
				strukPlanning.setKdjenisanggaran(null);
				strukPlanning.setKdjenistempat(null);
				strukPlanning.setKdkelompoktransaksi(null);
				strukPlanning.setKdpegawaipjawab(null);
				strukPlanning.setKdpegawaipjawabevaluasi(null);
				strukPlanning.setKdperiodeaccount(null);
				strukPlanning.setKdProfile((short) 0);
				if(CommonUtil.isNotNullOrEmpty(vo.getRuanganTujuan())){
					strukPlanning.setKdruangan(ruanganConverter.transferVOToModel(vo.getRuanganTujuan(),new Ruangan()));
				}
				if(CommonUtil.isNotNullOrEmpty(vo.getRuanganAsal())){
					strukPlanning.setKdruanganasal(ruanganConverter.transferVOToModel(vo.getRuanganAsal(),new Ruangan()));
				}
				strukPlanning.setTglplanning(penjadwalanDetail.getTglPemeliharaan());
				strukPlanning.setTglpegajuan(new Date());
				
				if(CommonUtil.isNotNullOrEmpty(penjadwalanDetail.getRekanan())){
					strukPlanning.setKdrekanan(rekananConverter.transferVOToModel(penjadwalanDetail.getRekanan(), new Rekanan()));
				}
				StatusPekerjaan statusPekerjaan=new StatusPekerjaan();
				statusPekerjaan.setId(3);
				strukPlanning.setStatusPekerjaan(statusPekerjaan);
				strukPlanning=strukPlanningDao.save(strukPlanning);
				
				PlanningPelayanan planningPelayanan=new PlanningPelayanan();
				planningPelayanan.setKdProfile((short) 0);
				planningPelayanan.setStrukOrder(strukOrder);
				planningPelayanan.setTglPlanningAkhir(new Date());
				planningPelayanan.setTglPlanning(vo.getTglOrder());
				planningPelayanan.setQtyProdukRetur(0.0);
				if(CommonUtil.isNotNullOrEmpty(vo.getRegistrasiAset())){
					RegistrasiAset registrasiAset=registrasiAsetDao.findById(vo.getRegistrasiAset().getNoRec());
					planningPelayanan.setRegistrasiAset(registrasiAset);
					if(CommonUtil.isNotNullOrEmpty(registrasiAset.getProduk())){
						planningPelayanan.setProduk(registrasiAset.getProduk());
					}
				}
				planningPelayanan.setTglPelayanan(new Date());
				planningPelayanan.setQtyProdukExec(0.0);
				planningPelayananDao.save(planningPelayanan);
				
				if(penjadwalanDetail.getJenisPenjadwalan().equals("PEMELIHARAAN")){
					CekListGedungBangunanHeader cekListGedungBangunanHeader = new CekListGedungBangunanHeader();
					cekListGedungBangunanHeader.setStrukOrder(strukOrder);
					cekListGedungBangunanHeader.setOrderPelayanan(orderPelayanan);
					cekListGedungBangunanHeader.setTanggal(vo.getTglOrder());
					cekListGedungBangunanHeader.setKeterangan(vo.getKeterangan());
					cekListGedungBangunanHeader = this.cekListGedungBangunanHeaderDao.save(cekListGedungBangunanHeader);
					
					if(CommonUtil.isNotNullOrEmpty(cekListGedungBangunanHeader)){
						List<CekListGedungBangunan> listData = this.cekListGedungBangunanHeaderDao.getCekList();
						for(CekListGedungBangunan mappingData:listData){
							CekListGedungBangunanDetail cekListGedungBangunanDetail = new CekListGedungBangunanDetail();
							cekListGedungBangunanDetail.setCekListGedungBangunanHeader(cekListGedungBangunanHeader);
							cekListGedungBangunanDetail.setCekListGedungBangunan(mappingData);
							cekListGedungBangunanDetail = this.cekListGedungBangunanDetailDao.save(cekListGedungBangunanDetail);
						}
					}

				}
			}
		}
		
		Map<String,Object> result=new HashMap<String,Object>();
		
		return result;
	}

	@Override
	public Map<String, Object> getCekListPemeliharanGedungByNoRec(String noRec) {
		Map<String,Object> data=new HashMap<>();
		data.put("header", this.strukOrderDaoCustom.getInformasiPerbaikanHeader(noRec));
		data.put("detail", this.strukOrderDaoCustom.getInformasiPerbaikanDetail(noRec));
		data.put("teknisi", this.planningPelayananPetugasDao.getTeknisi(noRec));
		data.put("parameter", this.cekListGedungBangunanHeaderDao.getCekListGedungHeaderByStrukOrder(noRec).get(0));
		//data.put("pemeriksaan", this.cekListGedungBangunanHeaderDao.pemeriksaanDao.findByStrukOrder(noRec));
		
		
		List<Map<String, Object>> listData = new ArrayList<>();
		
		try {
			Map<String, Object> dataParent = new HashMap<>();
			List<Map<String, Object>> parentList = new ArrayList<>();
			List<Map<String, Object>> parent = this.cekListGedungBangunanDao.getCekListGedungBangunanParent();
			for(Map<String, Object> mapdata:parent){
				if(CommonUtil.isNotNullOrEmpty(data)){
					Map<String, Object> tempMap = new HashMap<>();
					//List<Map<String, Object>> child = this.cekListGedungBangunanDao.getCekListGedungBangunanChild((Integer)mapdata.get("id"));
					List<Map<String, Object>> child = this.cekListGedungBangunanHeaderDao.getPemeriksaanDetailByStrukOrder(noRec, (Integer)mapdata.get("id"));
					tempMap.put("id", mapdata.get("id"));
					tempMap.put("name", mapdata.get("namaExternal"));
					tempMap.put("detail", child);
					parentList.add(tempMap);
				}
			}
			dataParent.put("pemeliharaan", parentList);
			listData.add(dataParent);
			
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		data.put("loadcekListData", listData);

		return data;
	}
	
	@Override
	public Map<String, Object> savePemeliharaanGedung(CekListGedungBangunanHeaderVO vo) {
		StrukOrder strukOrder=strukOrderDao.findByNoRec(vo.getStrukOrderid());
		strukOrder.setKeteranganLainnya(vo.getKeteranganRespon());
		strukOrderDao.save(strukOrder);
		List<StrukPlanning> strukPlanningList=strukPlanningDao.findByNoRecStrukOrder(vo.getStrukOrderid());
		StrukPlanning strukPlanning=strukPlanningList.get(0);
		strukPlanning.setNamarekanan(vo.getNamaTeknisi());
		
		if(CommonUtil.isNotNullOrEmpty(vo.getRekananSkKontrakDetail())){
			strukPlanning.setRekananSkKontrakDetail(rekananSkKontrakDetailConverter.transferVOToModel(vo.getRekananSkKontrakDetail(), new RekananSkKontrakDetail()));
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getRekanananSkKontrakVO())){
			strukPlanning.setRekananSkKontrak(rekananSkKontrakConverter.transferVOToModel(vo.getRekanananSkKontrakVO(),new RekananSkKontrak()));
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getStatusPekerjaan())){
			strukPlanning.setStatusPekerjaan(statusPekerjaanConverter.transferVOToModel(vo.getStatusPekerjaan(), new StatusPekerjaan()));
		}
		if(CommonUtil.isNotNullOrEmpty(vo.getAsalSukuCadang())){
			strukPlanning.setAsalSukuCadang(asalSukuCadangConverter.transferVOToModel(vo.getAsalSukuCadang(), new AsalSukuCadang()));	
		}
		
		for(PlanningPelayananPetugasVO planningPelayananPetugasVO:vo.getTeknisi()){
			PlanningPelayananPetugas planningPelayananPetugas=new PlanningPelayananPetugas();
			planningPelayananPetugas.setPegawai(pegawaiConverter.transferVOToModel(planningPelayananPetugasVO.getPegawai(),new Pegawai()));
			planningPelayananPetugas.setIsPetugasPepJawab((byte) 0);
			planningPelayananPetugas.setTglPelayanan(new Date());
			planningPelayananPetugas.setTglPlanning(new Date());
			planningPelayananPetugas.setStrukOrder(strukOrder);
			if(CommonUtil.isNotNullOrEmpty(planningPelayananPetugasVO.getNoRec())){
				planningPelayananPetugas.setNoRec(planningPelayananPetugasVO.getNoRec());
			}
			planningPelayananPetugasDao.save(planningPelayananPetugas);
		}
	
		CekListGedungBangunanHeader cekListGedungBangunanHeader = this.cekListGedungBangunanHeaderDao.getCekListGedungBangunanHeaderByStrukOrder(vo.getStrukOrderid()).get(0);
		cekListGedungBangunanHeader.setKeterangan(vo.getKeterangan());
		cekListGedungBangunanHeader.setTanggal(vo.getTanggal());
		cekListGedungBangunanHeader.setStrukOrder(strukOrder);
		cekListGedungBangunanHeaderDao.save(cekListGedungBangunanHeader);
		for(CekListGedungBangunanDetailVO detailVo:vo.getCekListGedungDetail()){
			CekListGedungBangunanDetail cekListGedungBangunanDetail = cekListGedungBangunanDetailDao.findOne(detailVo.getNoRec());
			if(CommonUtil.isNotNullOrEmpty(detailVo.getNoRec())){
				cekListGedungBangunanDetail.setKondisi(detailVo.getKondisi());
				cekListGedungBangunanDetail.setKeterangan(detailVo.getKeterangan());
			}
			cekListGedungBangunanDetailDao.save(cekListGedungBangunanDetail);
		}
		
		Map<String,Object> data=new HashMap<String,Object>();
		data.put("noRec", strukOrder.getNoRec());
		return data;
	}
	

}
