Create service baru mapping paket tindakan
This commit is contained in:
parent
ad22d08245
commit
31417df587
@ -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);
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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 + ")";
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -5,6 +5,7 @@ import com.jasamedika.medifirst2000.helper.Caption;
|
|||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Salman Manoe
|
* @author Salman Manoe
|
||||||
@ -14,23 +15,83 @@ import javax.validation.constraints.NotNull;
|
|||||||
@Entity
|
@Entity
|
||||||
@Table(name = "mapprodukpakettoproduk_m")
|
@Table(name = "mapprodukpakettoproduk_m")
|
||||||
public class MapProdukPaketToProduk extends BaseTransaction {
|
public class MapProdukPaketToProduk extends BaseTransaction {
|
||||||
|
private static final long serialVersionUID = 5665078811007370300L;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "produkpaketfk")
|
@JoinColumn(name = "produkpaketfk")
|
||||||
@NotNull(message = "Produk paket tidak boleh kosong")
|
@NotNull(message = "Produk paket tidak boleh kosong")
|
||||||
@Caption(value = "Produk paket")
|
@Caption(value = "Produk paket")
|
||||||
private Produk produkPaket;
|
private Produk produkPaket;
|
||||||
|
|
||||||
@Column(name = "produkpaketfk", insertable = false, updatable = false, nullable = false)
|
@Column(name = "produkpaketfk", insertable = false, updatable = false, nullable = false)
|
||||||
private Integer produkPaketId;
|
private Integer produkPaketId;
|
||||||
|
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
@JoinColumn(name = "produkfk")
|
@JoinColumn(name = "produkfk")
|
||||||
@NotNull(message = "Produk tidak boleh kosong")
|
@NotNull(message = "Produk tidak boleh kosong")
|
||||||
@Caption(value = "Produk")
|
@Caption(value = "Produk")
|
||||||
private Produk produk;
|
private Produk produk;
|
||||||
|
|
||||||
@Column(name = "produkfk", insertable = false, updatable = false, nullable = false)
|
@Column(name = "produkfk", insertable = false, updatable = false, nullable = false)
|
||||||
private Integer produkId;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user