From 284b8849de0b74cdf179b29dfa75edf275dbab79 Mon Sep 17 00:00:00 2001 From: salmanoe Date: Fri, 17 Jun 2022 15:55:07 +0700 Subject: [PATCH] Add ProdukFarmakologiService Pembuatan crud master produk farmakologi --- .../dao/ProdukFarmakologiDao.java | 59 ++++++++ .../medifirst2000/dao/ProdukNakesDao.java | 3 - .../service/ProdukFarmakologiService.java | 18 +++ .../impl/ProdukFarmakologiServiceImpl.java | 139 ++++++++++++++++++ .../entities/ProdukFarmakologi.java | 63 ++++++++ .../medifirst2000/entities/ProdukNakes.java | 3 + .../medifirst2000/vo/ProdukFarmakologiVO.java | 40 +++++ .../src/main/resources/hibernate.cfg.xml | 1 + .../IkiDanRemunerasiController.java | 73 +++++++++ 9 files changed, 396 insertions(+), 3 deletions(-) create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukFarmakologiDao.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukFarmakologiService.java create mode 100644 jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukFarmakologiServiceImpl.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukFarmakologi.java create mode 100644 jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukFarmakologiVO.java diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukFarmakologiDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukFarmakologiDao.java new file mode 100644 index 00000000..678d350c --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukFarmakologiDao.java @@ -0,0 +1,59 @@ +package com.jasamedika.medifirst2000.dao; + +import java.util.List; +import java.util.Map; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.jasamedika.medifirst2000.entities.ProdukFarmakologi; + +@Repository("produkFarmakologiDao") +public interface ProdukFarmakologiDao extends PagingAndSortingRepository { + + String allProduk = "select new Map(prf.id as produkId,prf.namaProduk as namaProduk," + + "prf.kdProduk as kdProduk,(case when prf.kdProduk = 1 then 'Pelayanan Pasien (Tarif)' " + + "when prf.kdProduk = 2 then 'pelayanan Pasien (Nontarif)' " + + "when prf.kdProduk = 3 then 'Pelayanan Nonpasien' end) as kodeProduk) " + "from ProdukFarmakologi prf " + + "where prf.statusEnabled is true"; + + String namaProduk = " and lower(prf.namaProduk) like %:namaProduk%"; + + String kdProduk = " and prf.kdProduk = :kdProduk"; + + String sortAllProduk = " order by prf.namaProduk, prf.kdProduk asc"; + + String listIdProduk = " and prf.id in (:listProdukId)"; + + @Query(allProduk + sortAllProduk) + public List> findProdukFarmakologi(); + + @Query(allProduk + namaProduk + sortAllProduk) + public List> findProdukFarmakologiByProduk(@Param("namaProduk") String namaProduk); + + @Query(allProduk + kdProduk + sortAllProduk) + public List> findProdukFarmakologiByKdProduk(@Param("kdProduk") Short kdProduk); + + @Query(allProduk + namaProduk + kdProduk + sortAllProduk) + public List> findProdukFarmakologiByProduk(@Param("namaProduk") String namaProduk, + @Param("kdProduk") Short kdProduk); + + @Query(allProduk + listIdProduk + sortAllProduk) + public List> findProdukFarmakologi(@Param("listProdukId") List listIdProduk); + + String dupCheck = "select prf.id from ProdukFarmakologi prf " + "where prf.statusEnabled is true " + + "and lower(regexp_replace(prf.namaProduk,:patternText,'','g')) = :namaProduk"; + + String notIdProduk = " and prf.id <> :produkId"; + + @Query(dupCheck) + public List findDupProduk(@Param("patternText") String patternText, + @Param("namaProduk") String namaProduk); + + @Query(dupCheck + notIdProduk) + public List findDupProduk(@Param("patternText") String patternText, @Param("namaProduk") String namaProduk, + @Param("produkId") Integer idProduk); + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java index 7d3b7e34..67b2d5be 100644 --- a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/dao/ProdukNakesDao.java @@ -1,6 +1,3 @@ -/** - * - */ package com.jasamedika.medifirst2000.dao; import java.util.List; diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukFarmakologiService.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukFarmakologiService.java new file mode 100644 index 00000000..2941c649 --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/ProdukFarmakologiService.java @@ -0,0 +1,18 @@ +package com.jasamedika.medifirst2000.service; + +import java.util.List; +import java.util.Map; + +import org.springframework.orm.jpa.JpaSystemException; + +import com.jasamedika.medifirst2000.entities.ProdukFarmakologi; +import com.jasamedika.medifirst2000.vo.ProdukFarmakologiVO; + +public interface ProdukFarmakologiService extends BaseVoService { + + public List> findProdukFarmakologi(String namaProduk, Short kdProduk) throws JpaSystemException; + + public List> findDupProdukFarmakologi(String namaProduk, Integer idProduk) + throws JpaSystemException; + +} diff --git a/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukFarmakologiServiceImpl.java b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukFarmakologiServiceImpl.java new file mode 100644 index 00000000..7e188dbc --- /dev/null +++ b/jasamedika-business/src/main/java/com/jasamedika/medifirst2000/service/impl/ProdukFarmakologiServiceImpl.java @@ -0,0 +1,139 @@ +package com.jasamedika.medifirst2000.service.impl; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.stereotype.Service; + +import com.jasamedika.medifirst2000.converter.BaseConverterImpl; +import com.jasamedika.medifirst2000.dao.ProdukFarmakologiDao; +import com.jasamedika.medifirst2000.dao.SettingDataFixedDao; +import com.jasamedika.medifirst2000.entities.ProdukFarmakologi; +import com.jasamedika.medifirst2000.exception.ServiceVOException; +import com.jasamedika.medifirst2000.service.ProdukFarmakologiService; +import com.jasamedika.medifirst2000.util.CommonUtil; +import com.jasamedika.medifirst2000.vo.ProdukFarmakologiVO; + +@Service("produkFarmakologiService") +public class ProdukFarmakologiServiceImpl extends BaseVoServiceImpl implements ProdukFarmakologiService { + + @Autowired + private BaseConverterImpl produkFarmakologiConverter; + + @Autowired + private ProdukFarmakologiDao produkFarmakologiDao; + + @Autowired + private SettingDataFixedDao settingDataFixedDao; + + @Override + public ProdukFarmakologiVO add(ProdukFarmakologiVO vo) throws JpaSystemException, ServiceVOException { + ProdukFarmakologi produkFarmakologi = produkFarmakologiConverter.transferVOToModel(vo, new ProdukFarmakologi()); + + ProdukFarmakologi resultModel = produkFarmakologiDao.save(produkFarmakologi); + + ProdukFarmakologiVO resultVO = new ProdukFarmakologiVO(); + resultVO = produkFarmakologiConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public ProdukFarmakologiVO update(ProdukFarmakologiVO vo) throws JpaSystemException, ServiceVOException { + ProdukFarmakologi produkLama = produkFarmakologiDao.findOne(vo.getId()); + + ProdukFarmakologi produkBaru = produkFarmakologiConverter.transferVOToModel(vo, produkLama); + + ProdukFarmakologi resultModel = produkFarmakologiDao.save(produkBaru); + + ProdukFarmakologiVO resultVO = new ProdukFarmakologiVO(); + resultVO = produkFarmakologiConverter.transferModelToVO(resultModel, resultVO); + + return resultVO; + } + + @Override + public Boolean delete(Integer key) throws JpaSystemException { + produkFarmakologiDao.delete(key); + + return true; + } + + @Override + public ProdukFarmakologiVO findById(Integer key) throws JpaSystemException { + ProdukFarmakologiVO result = new ProdukFarmakologiVO(); + + ProdukFarmakologi produkFarmakologi = produkFarmakologiDao.findOne(key); + if (CommonUtil.isNotNullOrEmpty(produkFarmakologi)) { + result = produkFarmakologiConverter.transferModelToVO(produkFarmakologi, result); + } + + return result; + } + + @Override + public List findAll() throws JpaSystemException { + List result = new ArrayList(); + + Iterable models = produkFarmakologiDao.findAll(); + if (CommonUtil.isNotNullOrEmpty(models)) { + for (ProdukFarmakologi model : models) { + ProdukFarmakologiVO vo = new ProdukFarmakologiVO(); + vo = produkFarmakologiConverter.transferModelToVO(model, vo); + result.add(vo); + } + } + + return result; + } + + @Override + public Map findAllWithPageAndLimitAndSortByAndDirectionParameter(Integer page, Integer limit, + String sort, String dir) { + + return null; + } + + @Override + public List> findProdukFarmakologi(String namaProduk, Short kdProduk) + throws JpaSystemException { + List> result = new ArrayList<>(); + + if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNullOrEmpty(kdProduk)) { + result = produkFarmakologiDao.findProdukFarmakologiByProduk(namaProduk); + } else if (CommonUtil.isNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(kdProduk)) { + result = produkFarmakologiDao.findProdukFarmakologiByKdProduk(kdProduk); + } else if (CommonUtil.isNotNullOrEmpty(namaProduk) && CommonUtil.isNotNullOrEmpty(kdProduk)) { + result = produkFarmakologiDao.findProdukFarmakologiByProduk(namaProduk, kdProduk); + } else { + result = produkFarmakologiDao.findProdukFarmakologi(); + } + + return result; + } + + @Override + public List> findDupProdukFarmakologi(String namaProduk, Integer idProduk) + throws JpaSystemException { + List> result = new ArrayList<>(); + List listId = new ArrayList<>(); + + String patternText = settingDataFixedDao.getSettingDataFixed("patternTextDuplicate"); + String replacedNamaProduk = namaProduk.replaceAll(patternText, "").toLowerCase(); + if (CommonUtil.isNotNullOrEmpty(idProduk)) { + listId = produkFarmakologiDao.findDupProduk(patternText, replacedNamaProduk, idProduk); + } else { + listId = produkFarmakologiDao.findDupProduk(patternText, replacedNamaProduk); + } + + if (CommonUtil.isNotNullOrEmpty(listId)) { + result = produkFarmakologiDao.findProdukFarmakologi(listId); + } + + return result; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukFarmakologi.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukFarmakologi.java new file mode 100644 index 00000000..5faa2c62 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukFarmakologi.java @@ -0,0 +1,63 @@ +package com.jasamedika.medifirst2000.entities; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.validation.constraints.NotNull; + +import com.jasamedika.medifirst2000.base.BaseActive; +import com.jasamedika.medifirst2000.helper.Caption; + +@Entity +@Table(name = "produknakes_m") +public class ProdukFarmakologi extends BaseActive { + + @NotNull(message = "Nama Produk tidak boleh kosong") + @Column(name = "namaproduk", nullable = false) + @Caption(value = "Nama Produk") + private String namaProduk; + + /* + * 1-Pelayanan Pasien (Tarif), 2-pelayanan Pasien (Nontarif), 3-Pelayanan + * Nonpasien + */ + @NotNull(message = "Kode Produk tidak boleh kosong") + @Column(name = "kdproduk", nullable = false) + @Caption(value = "Kode Produk") + private Short kdProduk; + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.produkfarmakologi_m_id_seq") + @SequenceGenerator(name = "public.produkfarmakologi_m_id_seq", sequenceName = "public.produkfarmakologi_m_id_seq", allocationSize = 1) + @Column(name = "id") + protected Integer id; + + public String getNamaProduk() { + return namaProduk; + } + + public void setNamaProduk(String namaProduk) { + this.namaProduk = namaProduk; + } + + public Short getKdProduk() { + return kdProduk; + } + + public void setKdProduk(Short kdProduk) { + this.kdProduk = kdProduk; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + +} diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java index 526d7a7c..f212720a 100644 --- a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/entities/ProdukNakes.java @@ -23,6 +23,9 @@ public class ProdukNakes extends BaseActive { @Caption(value = "Nama Produk") private String namaProduk; + /* + * 1-Pelayanan Pasien, 2-Nonpelayanan Pasien + */ @NotNull(message = "Kode Produk tidak boleh kosong") @Column(name = "kdproduk", nullable = false) @Caption(value = "Kode Produk") diff --git a/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukFarmakologiVO.java b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukFarmakologiVO.java new file mode 100644 index 00000000..b79f7d70 --- /dev/null +++ b/jasamedika-domain/src/main/java/com/jasamedika/medifirst2000/vo/ProdukFarmakologiVO.java @@ -0,0 +1,40 @@ +package com.jasamedika.medifirst2000.vo; + +import com.jasamedika.medifirst2000.base.vo.BaseActiveVO; +import com.jasamedika.medifirst2000.helper.Caption; + +public class ProdukFarmakologiVO extends BaseActiveVO { + + @Caption(value = "Nama Produk") + private String namaProduk; + + @Caption(value = "Kode Produk") + private Short kdProduk; + + protected Integer id; + + public String getNamaProduk() { + return namaProduk; + } + + public void setNamaProduk(String namaProduk) { + this.namaProduk = namaProduk; + } + + public Short getKdProduk() { + return kdProduk; + } + + public void setKdProduk(Short kdProduk) { + this.kdProduk = kdProduk; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + +} diff --git a/jasamedika-domain/src/main/resources/hibernate.cfg.xml b/jasamedika-domain/src/main/resources/hibernate.cfg.xml index 002accc9..a269562b 100644 --- a/jasamedika-domain/src/main/resources/hibernate.cfg.xml +++ b/jasamedika-domain/src/main/resources/hibernate.cfg.xml @@ -703,5 +703,6 @@ + diff --git a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java index 7571c370..58ab28f5 100644 --- a/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java +++ b/jasamedika-sdm/src/main/java/com/jasamedika/medifirst2000/controller/IkiDanRemunerasiController.java @@ -41,6 +41,7 @@ import com.jasamedika.medifirst2000.service.MapProdukKelompokKerjaService; import com.jasamedika.medifirst2000.service.PelayananNakesService; import com.jasamedika.medifirst2000.service.PelayananPasienNakesService; import com.jasamedika.medifirst2000.service.PelayananPasienPerawatService; +import com.jasamedika.medifirst2000.service.ProdukFarmakologiService; import com.jasamedika.medifirst2000.service.ProdukNakesService; import com.jasamedika.medifirst2000.service.ProdukPerawatService; import com.jasamedika.medifirst2000.service.ProfesiService; @@ -65,6 +66,7 @@ import com.jasamedika.medifirst2000.vo.MapProdukKelompokKerjaVO; import com.jasamedika.medifirst2000.vo.PelayananNakesVO; import com.jasamedika.medifirst2000.vo.PelayananPasienNakesVO; import com.jasamedika.medifirst2000.vo.PelayananPasienPerawatVO; +import com.jasamedika.medifirst2000.vo.ProdukFarmakologiVO; import com.jasamedika.medifirst2000.vo.ProdukNakesVO; import com.jasamedika.medifirst2000.vo.ProdukPerawatVO; import com.jasamedika.medifirst2000.vo.ProfesiVO; @@ -154,6 +156,9 @@ public class IkiDanRemunerasiController extends LocaleController> getLoadData(HttpServletRequest request) { try { @@ -2404,4 +2409,72 @@ public class IkiDanRemunerasiController extends LocaleController saveProdukFarmakologi(HttpServletRequest request, + @Valid @RequestBody ProdukFarmakologiVO vo) { + try { + ProdukFarmakologiVO result = new ProdukFarmakologiVO(); + if (CommonUtil.isNotNullOrEmpty(vo.getId())) { + result = produkFarmakologiService.update(vo); + } else { + result = produkFarmakologiService.add(vo); + } + if (CommonUtil.isNotNullOrEmpty(result)) { + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.CREATED, mapHeaderMessage); + } else { + return RestUtil.getJsonHttptatus(HttpStatus.NOT_ACCEPTABLE); + } + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when add/update master produk kelompok kerja farmakologi", sve.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when add/update master produk kelompok kerja farmakologi", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-produk-farmakologi", method = RequestMethod.GET) + public ResponseEntity>> getProdukFarmakologi(HttpServletRequest request, + @RequestParam(value = "namaProduk", required = false) String namaProduk, + @RequestParam(value = "kdProduk", required = false) Short kdProduk) { + try { + List> result = produkFarmakologiService.findProdukFarmakologi(namaProduk, kdProduk); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when get master produk kelompok kerja farmakologi", sve.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when get master produk kelompok kerja farmakologi", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + + @RequestMapping(value = "/get-duplicate-produk-farmakolgi", method = RequestMethod.GET) + public ResponseEntity>> getDuplikatProdukFarmakologi(HttpServletRequest request, + @RequestParam(value = "namaProduk", required = true) String namaProduk, + @RequestParam(value = "produkId", required = false) Integer idProduk) { + try { + List> result = produkFarmakologiService.findDupProdukFarmakologi(namaProduk, idProduk); + mapHeaderMessage.put(WebConstants.HttpHeaderInfo.LABEL_SUCCESS, + getMessage(MessageResource.LABEL_SUCCESS, request)); + return RestUtil.getJsonResponse(result, HttpStatus.OK, mapHeaderMessage); + } catch (ServiceVOException sve) { + LOGGER.error("Got exception {} when get duplikat produk kelompok kerja farmakologi", sve.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, sve.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.INTERNAL_SERVER_ERROR, mapHeaderMessage); + } catch (JpaSystemException jse) { + LOGGER.error("Got exception {} when get duplikat produk kelompok kerja farmakologi", jse.getMessage()); + addHeaderMessage(Constants.MessageInfo.ERROR_MESSAGE, jse.getMessage()); + return RestUtil.getJsonHttptatus(HttpStatus.CONFLICT, mapHeaderMessage); + } + } + }