Create service baru mapping paket tindakan

This commit is contained in:
Salman Manoe 2023-08-07 16:17:22 +07:00
parent ad22d08245
commit 31417df587
6 changed files with 391 additions and 14 deletions

View File

@ -0,0 +1,40 @@
package com.jasamedika.medifirst2000.dao;
import com.jasamedika.medifirst2000.entities.MapProdukPaketToProduk;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @author Salman
* @version 1.0.0
* @since 7 Aug 2023
*/
public interface MapProdukPaketToProdukDao extends JpaRepository<MapProdukPaketToProduk, String> {
/**
* @param paketId
* id produk yang dijadikan nama paket
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProduk> findAllByProdukId(Integer paketId);
/**
* @param paketId
* id produk yang dijadikan nama paket
* @param produkId
* id produk breakdown di dalam paket
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProduk> findByProdukIdAndProdukPaketId(Integer paketId, Integer produkId);
/**
* @param paketId
* id produk yang dijadikan nama paket
* @param produkId
* id produk breakdown di dalam paket
* @param id
* identifier mapping paket dan produk
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProduk> findByProdukIdAndProdukPaketIdAndIdNot(Integer paketId, Integer produkId, String id);
}

View File

@ -0,0 +1,54 @@
package com.jasamedika.medifirst2000.service;
import com.jasamedika.medifirst2000.dto.MapProdukPaketToProdukVO;
import java.util.List;
/**
* @author Salman
* @version 1.0.0
* @since 7 Aug 2023
*/
public interface MapProdukPaketToProdukService {
/**
* Menyimpan mapping paket dan produk yang baru
*
* @param vo
* virtual object sebagai data transfer object
*/
void save(MapProdukPaketToProdukVO vo);
/**
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProdukVO> get();
/**
* @param paketId
* id produk yang dijadikan nama paket
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProdukVO> getByPaket(Integer paketId);
/**
* @param id
* identifier mapping paket dan produk
* @return spesifik mapping antara produk paket dan paketnya sebagai produk
* sesuai identifier
*/
MapProdukPaketToProdukVO get(String id);
/**
* @param id
* identifier mapping paket dan produk
* @return status data mapping sudah terhapus permanen atau belum
*/
boolean delete(String id);
/**
* @param vo
* virtual object sebagai data transfer object
* @return status data mapping sudah tersedia di dalam database
*/
boolean exists(MapProdukPaketToProdukVO vo);
}

View File

@ -0,0 +1,76 @@
package com.jasamedika.medifirst2000.service.impl;
import com.jasamedika.medifirst2000.converter.base.BaseVoConverter;
import com.jasamedika.medifirst2000.dao.MapProdukPaketToProdukDao;
import com.jasamedika.medifirst2000.dto.MapProdukPaketToProdukVO;
import com.jasamedika.medifirst2000.entities.MapProdukPaketToProduk;
import com.jasamedika.medifirst2000.service.MapProdukPaketToProdukService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Salman
* @version 1.0.0
* @since 7 Aug 2023
*/
@Service
@Transactional
public class MapProdukPaketToProdukServiceImpl implements MapProdukPaketToProdukService {
@Autowired
private BaseVoConverter<MapProdukPaketToProdukVO, MapProdukPaketToProduk> mapProdukPaketConverter;
@Autowired
private MapProdukPaketToProdukDao mapProdukPaketToProdukDao;
@Override
public void save(MapProdukPaketToProdukVO vo) {
MapProdukPaketToProduk model = mapProdukPaketConverter.transferVOToModel(vo, new MapProdukPaketToProduk());
mapProdukPaketToProdukDao.save(model);
}
@Override
public List<MapProdukPaketToProdukVO> get() {
List<MapProdukPaketToProduk> models = mapProdukPaketToProdukDao.findAll();
return models.stream().map(m -> mapProdukPaketConverter.transferModelToVO(m, new MapProdukPaketToProdukVO()))
.collect(Collectors.toList());
}
@Override
public List<MapProdukPaketToProdukVO> getByPaket(Integer paketId) {
List<MapProdukPaketToProduk> models = mapProdukPaketToProdukDao.findAllByProdukId(paketId);
return models.stream().map(m -> mapProdukPaketConverter.transferModelToVO(m, new MapProdukPaketToProdukVO()))
.collect(Collectors.toList());
}
@Override
public MapProdukPaketToProdukVO get(String id) {
MapProdukPaketToProduk model = mapProdukPaketToProdukDao.findOne(id);
if (CommonUtil.isNullOrEmpty(model))
return null;
return mapProdukPaketConverter.transferModelToVO(model, new MapProdukPaketToProdukVO());
}
@Override
public boolean delete(String id) {
mapProdukPaketToProdukDao.delete(id);
return true;
}
@Override
public boolean exists(MapProdukPaketToProdukVO vo) {
List<MapProdukPaketToProduk> models;
if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) {
models = mapProdukPaketToProdukDao.findByProdukIdAndProdukPaketIdAndIdNot(vo.getProduk().getId(),
vo.getProdukPaket().getId(), vo.getNoRec());
} else {
models = mapProdukPaketToProdukDao.findByProdukIdAndProdukPaketId(vo.getProduk().getId(),
vo.getProdukPaket().getId());
}
return CommonUtil.isNotNullOrEmpty(models);
}
}

View File

@ -0,0 +1,80 @@
package com.jasamedika.medifirst2000.dto;
import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import com.jasamedika.medifirst2000.vo.ProdukVO;
import javax.validation.constraints.NotNull;
import java.util.Objects;
/**
* DTO for {@link com.jasamedika.medifirst2000.entities.MapProdukPaketToProduk}
*/
public class MapProdukPaketToProdukVO extends BaseTransactionVO {
@NotNull(message = "Produk paket tidak boleh kosong")
private ProdukVO produkPaket;
private Integer produkPaketId;
@NotNull(message = "Produk tidak boleh kosong")
private ProdukVO produk;
private Integer produkId;
public ProdukVO getProdukPaket() {
return produkPaket;
}
public void setProdukPaket(ProdukVO produkPaket) {
this.produkPaket = produkPaket;
}
public Integer getProdukPaketId() {
return produkPaketId;
}
public void setProdukPaketId(Integer produkPaketId) {
this.produkPaketId = produkPaketId;
}
public ProdukVO getProduk() {
return produk;
}
public void setProduk(ProdukVO produk) {
this.produk = produk;
}
public Integer getProdukId() {
return produkId;
}
public void setProdukId(Integer produkId) {
this.produkId = produkId;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
MapProdukPaketToProdukVO entity = (MapProdukPaketToProdukVO) o;
return Objects.equals(this.kdProfile, entity.kdProfile)
&& Objects.equals(this.statusEnabled, entity.statusEnabled) && Objects.equals(this.noRec, entity.noRec)
&& Objects.equals(this.produkPaket, entity.produkPaket)
&& Objects.equals(this.produkPaketId, entity.produkPaketId)
&& Objects.equals(this.produk, entity.produk) && Objects.equals(this.produkId, entity.produkId);
}
@Override
public int hashCode() {
return Objects.hash(kdProfile, statusEnabled, noRec, produkPaket, produkPaketId, produk, produkId);
}
@Override
public String toString() {
return getClass().getSimpleName() + "(" + "kdProfile = " + kdProfile + ", " + "statusEnabled = " + statusEnabled
+ ", " + "noRec = " + noRec + ", " + "produkPaket = " + produkPaket + ", " + "produkPaketId = "
+ produkPaketId + ", " + "produk = " + produk + ", " + "produkId = " + produkId + ")";
}
}

View File

@ -5,6 +5,7 @@ import com.jasamedika.medifirst2000.helper.Caption;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Objects;
/**
* @author Salman Manoe
@ -14,23 +15,83 @@ import javax.validation.constraints.NotNull;
@Entity
@Table(name = "mapprodukpakettoproduk_m")
public class MapProdukPaketToProduk extends BaseTransaction {
private static final long serialVersionUID = 5665078811007370300L;
@ManyToOne
@JoinColumn(name = "produkpaketfk")
@NotNull(message = "Produk paket tidak boleh kosong")
@Caption(value = "Produk paket")
private Produk produkPaket;
@ManyToOne
@JoinColumn(name = "produkpaketfk")
@NotNull(message = "Produk paket tidak boleh kosong")
@Caption(value = "Produk paket")
private Produk produkPaket;
@Column(name = "produkpaketfk", insertable = false, updatable = false, nullable = false)
private Integer produkPaketId;
@Column(name = "produkpaketfk", insertable = false, updatable = false, nullable = false)
private Integer produkPaketId;
@ManyToOne
@JoinColumn(name = "produkfk")
@NotNull(message = "Produk tidak boleh kosong")
@Caption(value = "Produk")
private Produk produk;
@ManyToOne
@JoinColumn(name = "produkfk")
@NotNull(message = "Produk tidak boleh kosong")
@Caption(value = "Produk")
private Produk produk;
@Column(name = "produkfk", insertable = false, updatable = false, nullable = false)
private Integer produkId;
@Column(name = "produkfk", insertable = false, updatable = false, nullable = false)
private Integer produkId;
public Produk getProdukPaket() {
return produkPaket;
}
public void setProdukPaket(Produk produkPaket) {
this.produkPaket = produkPaket;
}
public Integer getProdukPaketId() {
return produkPaketId;
}
public void setProdukPaketId(Integer produkPaketId) {
this.produkPaketId = produkPaketId;
}
public Produk getProduk() {
return produk;
}
public void setProduk(Produk produk) {
this.produk = produk;
}
public Integer getProdukId() {
return produkId;
}
public void setProdukId(Integer produkId) {
this.produkId = produkId;
}
@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
MapProdukPaketToProduk that = (MapProdukPaketToProduk) o;
if (!Objects.equals(produkPaket, that.produkPaket))
return false;
if (!Objects.equals(produkPaketId, that.produkPaketId))
return false;
if (!Objects.equals(produk, that.produk))
return false;
return Objects.equals(produkId, that.produkId);
}
@Override
public int hashCode() {
int result = produkPaket != null ? produkPaket.hashCode() : 0;
result = 31 * result + (produkPaketId != null ? produkPaketId.hashCode() : 0);
result = 31 * result + (produk != null ? produk.hashCode() : 0);
result = 31 * result + (produkId != null ? produkId.hashCode() : 0);
return result;
}
}

View File

@ -0,0 +1,66 @@
package com.jasamedika.medifirst2000.controller;
import com.jasamedika.medifirst2000.controller.base.LocaleController;
import com.jasamedika.medifirst2000.dto.MapProdukPaketToProdukVO;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.MapProdukPaketToProdukService;
import com.jasamedika.medifirst2000.util.rest.RestUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.List;
import static org.springframework.http.HttpStatus.CREATED;
import static org.springframework.http.HttpStatus.OK;
import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import static org.springframework.web.bind.annotation.RequestMethod.POST;
/**
* @author Salman
* @version 1.0.0
* @since 7 Aug 2023
*/
@RestController
@RequestMapping("/paket-tindakan")
public class MapProdukPaketController extends LocaleController<MapProdukPaketToProdukVO> {
@Autowired
private MapProdukPaketToProdukService mapProdukPaketToProdukService;
@RequestMapping(method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<Object> save(@RequestBody @Valid MapProdukPaketToProdukVO vo) {
if (mapProdukPaketToProdukService.exists(vo))
throw new ServiceVOException("Mapping sudah tersedia");
mapProdukPaketToProdukService.save(vo);
return RestUtil.getJsonResponse(vo, CREATED, null);
}
@RequestMapping(method = GET)
public ResponseEntity<Object> get() {
List<MapProdukPaketToProdukVO> data = mapProdukPaketToProdukService.get();
return RestUtil.getJsonResponse(data, OK, null);
}
@RequestMapping(value = "/{paketId}", method = GET)
public ResponseEntity<Object> get(@PathVariable Integer paketId) {
List<MapProdukPaketToProdukVO> data = mapProdukPaketToProdukService.getByPaket(paketId);
return RestUtil.getJsonResponse(data, OK, null);
}
@RequestMapping(value = "/{id}", method = GET)
public ResponseEntity<Object> get(@PathVariable String id) {
MapProdukPaketToProdukVO data = mapProdukPaketToProdukService.get(id);
return RestUtil.getJsonResponse(data, OK, null);
}
@RequestMapping(value = "/{id}", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<Object> delete(@PathVariable String id) {
boolean status = mapProdukPaketToProdukService.delete(id);
return RestUtil.getJsonResponse(status, OK, null);
}
}