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.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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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