Update crud mapping paket tindakan

Perubahan struktur data
This commit is contained in:
Salman Manoe 2023-08-08 20:24:15 +07:00
parent 3d21fe9c86
commit 5feec28dfc
7 changed files with 239 additions and 160 deletions

View File

@ -16,25 +16,26 @@ public interface MapProdukPaketToProdukDao extends JpaRepository<MapProdukPaketT
* id produk yang dijadikan nama paket
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProduk> findAllByProdukId(Integer paketId);
List<MapProdukPaketToProduk> findAllByPaketId(Integer paketId);
/**
* @param paketId
* id produk yang dijadikan nama paket
* @param produkId
* @param produkPaketId
* id produk breakdown di dalam paket
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProduk> findByProdukIdAndProdukPaketId(Integer paketId, Integer produkId);
List<MapProdukPaketToProduk> findByPaketIdAndProdukPaketId(Integer paketId, Integer produkPaketId);
/**
* @param paketId
* id produk yang dijadikan nama paket
* @param produkId
* @param produkPaketId
* id produk breakdown di dalam paket
* @param id
* @param noRec
* identifier mapping paket dan produk
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProduk> findByProdukIdAndProdukPaketIdAndNoRecNot(Integer paketId, Integer produkId, String noRec);
List<MapProdukPaketToProduk> findByPaketIdAndProdukPaketIdAndNoRecNot(Integer paketId, Integer produkPaketId,
String noRec);
}

View File

@ -1,6 +1,6 @@
package com.jasamedika.medifirst2000.service;
import com.jasamedika.medifirst2000.dto.MapProdukPaketToProdukVO;
import com.jasamedika.medifirst2000.vo.MapProdukPaketToProdukVO;
import java.util.List;
@ -28,22 +28,22 @@ public interface MapProdukPaketToProdukService {
* id produk yang dijadikan nama paket
* @return daftar mapping antara produk paket dan paketnya sebagai produk
*/
List<MapProdukPaketToProdukVO> getByPaket(Integer paketId);
List<MapProdukPaketToProdukVO> get(Integer paketId);
/**
* @param id
* @param noRec
* identifier mapping paket dan produk
* @return spesifik mapping antara produk paket dan paketnya sebagai produk
* sesuai identifier
*/
MapProdukPaketToProdukVO get(String id);
MapProdukPaketToProdukVO get(String noRec);
/**
* @param id
* @param noRec
* identifier mapping paket dan produk
* @return status data mapping sudah terhapus permanen atau belum
*/
boolean delete(String id);
boolean delete(String noRec);
/**
* @param vo

View File

@ -2,16 +2,19 @@ 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.vo.MapProdukPaketToProdukVO;
import com.jasamedika.medifirst2000.entities.MapProdukPaketToProduk;
import com.jasamedika.medifirst2000.entities.Produk;
import com.jasamedika.medifirst2000.exception.ServiceVOException;
import com.jasamedika.medifirst2000.service.MapProdukPaketToProdukService;
import com.jasamedika.medifirst2000.util.CommonUtil;
import com.jasamedika.medifirst2000.vo.ProdukVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Salman
@ -24,40 +27,102 @@ public class MapProdukPaketToProdukServiceImpl implements MapProdukPaketToProduk
@Autowired
private BaseVoConverter<MapProdukPaketToProdukVO, MapProdukPaketToProduk> mapProdukPaketConverter;
@Autowired
private BaseVoConverter<ProdukVO, Produk> produkConverter;
@Autowired
private MapProdukPaketToProdukDao mapProdukPaketToProdukDao;
@Override
public void save(MapProdukPaketToProdukVO vo) {
MapProdukPaketToProduk model = mapProdukPaketConverter.transferVOToModel(vo, new MapProdukPaketToProduk());
MapProdukPaketToProduk model = new MapProdukPaketToProduk();
model = mapProdukPaketConverter.transferVOToModel(vo, model);
Produk paket = new Produk();
paket = produkConverter.transferVOToModel(vo.getPaket(), paket);
model.setPaket(paket);
Produk produkPaket = new Produk();
produkPaket = produkConverter.transferVOToModel(vo.getProdukPaket(), produkPaket);
model.setProdukPaket(produkPaket);
Produk produk = new Produk();
produk = produkConverter.transferVOToModel(vo.getProduk(), produk);
model.setProduk(produk);
model.setKdProfile((short) 0);
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());
List<MapProdukPaketToProdukVO> data = new ArrayList<>();
models.forEach(m -> {
MapProdukPaketToProdukVO vo = new MapProdukPaketToProdukVO();
vo = mapProdukPaketConverter.transferModelToVO(m, vo);
ProdukVO paketVO = new ProdukVO();
Produk paket = m.getPaket();
paketVO = produkConverter.transferModelToVO(paket, paketVO);
vo.setPaket(paketVO);
ProdukVO produkPaketVO = new ProdukVO();
Produk produkPaket = m.getProdukPaket();
produkPaketVO = produkConverter.transferModelToVO(produkPaket, produkPaketVO);
vo.setProdukPaket(produkPaketVO);
ProdukVO produkVO = new ProdukVO();
Produk produk = m.getProduk();
produkVO = produkConverter.transferModelToVO(produk, produkVO);
vo.setProduk(produkVO);
data.add(vo);
});
return data;
}
@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());
public List<MapProdukPaketToProdukVO> get(Integer paketId) {
List<MapProdukPaketToProduk> models = mapProdukPaketToProdukDao.findAllByPaketId(paketId);
List<MapProdukPaketToProdukVO> data = new ArrayList<>();
models.forEach(m -> {
MapProdukPaketToProdukVO vo = new MapProdukPaketToProdukVO();
vo = mapProdukPaketConverter.transferModelToVO(m, vo);
ProdukVO paketVO = new ProdukVO();
Produk paket = m.getPaket();
paketVO = produkConverter.transferModelToVO(paket, paketVO);
vo.setPaket(paketVO);
ProdukVO produkPaketVO = new ProdukVO();
Produk produkPaket = m.getProdukPaket();
produkPaketVO = produkConverter.transferModelToVO(produkPaket, produkPaketVO);
vo.setProdukPaket(produkPaketVO);
ProdukVO produkVO = new ProdukVO();
Produk produk = m.getProduk();
produkVO = produkConverter.transferModelToVO(produk, produkVO);
vo.setProduk(produkVO);
data.add(vo);
});
return data;
}
@Override
public MapProdukPaketToProdukVO get(String id) {
MapProdukPaketToProduk model = mapProdukPaketToProdukDao.findOne(id);
public MapProdukPaketToProdukVO get(String noRec) {
MapProdukPaketToProduk model = mapProdukPaketToProdukDao.findOne(noRec);
if (CommonUtil.isNullOrEmpty(model))
return null;
return mapProdukPaketConverter.transferModelToVO(model, new MapProdukPaketToProdukVO());
MapProdukPaketToProdukVO data = new MapProdukPaketToProdukVO();
data = mapProdukPaketConverter.transferModelToVO(model, data);
ProdukVO paketVO = new ProdukVO();
Produk paket = model.getPaket();
paketVO = produkConverter.transferModelToVO(paket, paketVO);
data.setPaket(paketVO);
ProdukVO produkPaketVO = new ProdukVO();
Produk produkPaket = model.getProdukPaket();
produkPaketVO = produkConverter.transferModelToVO(produkPaket, produkPaketVO);
data.setProdukPaket(produkPaketVO);
ProdukVO produkVO = new ProdukVO();
Produk produk = model.getProduk();
produkVO = produkConverter.transferModelToVO(produk, produkVO);
data.setProduk(produkVO);
return data;
}
@Override
public boolean delete(String id) {
mapProdukPaketToProdukDao.delete(id);
public boolean delete(String noRec) {
mapProdukPaketToProdukDao.delete(noRec);
return true;
}
@ -65,12 +130,14 @@ public class MapProdukPaketToProdukServiceImpl implements MapProdukPaketToProduk
public boolean exists(MapProdukPaketToProdukVO vo) {
List<MapProdukPaketToProduk> models;
if (CommonUtil.isNotNullOrEmpty(vo.getNoRec())) {
models = mapProdukPaketToProdukDao.findByProdukIdAndProdukPaketIdAndNoRecNot(vo.getProduk().getId(),
models = mapProdukPaketToProdukDao.findByPaketIdAndProdukPaketIdAndNoRecNot(vo.getProduk().getId(),
vo.getProdukPaket().getId(), vo.getNoRec());
} else {
models = mapProdukPaketToProdukDao.findByProdukIdAndProdukPaketId(vo.getProduk().getId(),
models = mapProdukPaketToProdukDao.findByPaketIdAndProdukPaketId(vo.getProduk().getId(),
vo.getProdukPaket().getId());
}
return CommonUtil.isNotNullOrEmpty(models);
if (CommonUtil.isNotNullOrEmpty(models))
throw new ServiceVOException("Mapping sudah tersedia");
return false;
}
}

View File

@ -1,80 +0,0 @@
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,7 +5,8 @@ import com.jasamedika.medifirst2000.helper.Caption;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Objects;
import static javax.persistence.FetchType.LAZY;
/**
* @author Salman Manoe
@ -13,11 +14,21 @@ import java.util.Objects;
* @since 03 Aug 2023
*/
@Entity
@Table(name = "mapprodukpakettoproduk_m")
@Table(name = "mapprodukpakettoproduk_m", uniqueConstraints = @UniqueConstraint(columnNames = { "paketfk",
"produkpaketfk", "produkfk" }))
public class MapProdukPaketToProduk extends BaseTransaction {
private static final long serialVersionUID = 5665078811007370300L;
private static final long serialVersionUID = -9205342249670458834L;
@ManyToOne
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "paketfk")
@NotNull(message = "Paket tidak boleh kosong")
@Caption(value = "Paket")
private Produk paket;
@Column(name = "paketfk", insertable = false, updatable = false, nullable = false)
private Integer paketId;
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "produkpaketfk")
@NotNull(message = "Produk paket tidak boleh kosong")
@Caption(value = "Produk paket")
@ -26,7 +37,7 @@ public class MapProdukPaketToProduk extends BaseTransaction {
@Column(name = "produkpaketfk", insertable = false, updatable = false, nullable = false)
private Integer produkPaketId;
@ManyToOne
@ManyToOne(fetch = LAZY)
@JoinColumn(name = "produkfk")
@NotNull(message = "Produk tidak boleh kosong")
@Caption(value = "Produk")
@ -35,6 +46,22 @@ public class MapProdukPaketToProduk extends BaseTransaction {
@Column(name = "produkfk", insertable = false, updatable = false, nullable = false)
private Integer produkId;
public Produk getPaket() {
return paket;
}
public void setPaket(Produk paket) {
this.paket = paket;
}
public Integer getPaketId() {
return paketId;
}
public void setPaketId(Integer paketId) {
this.paketId = paketId;
}
public Produk getProdukPaket() {
return produkPaket;
}
@ -66,32 +93,4 @@ public class MapProdukPaketToProduk extends BaseTransaction {
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,76 @@
package com.jasamedika.medifirst2000.vo;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.jasamedika.medifirst2000.base.vo.BaseTransactionVO;
import javax.validation.constraints.NotNull;
/**
* DTO for {@link com.jasamedika.medifirst2000.entities.MapProdukPaketToProduk}
*/
@JsonInclude(Include.NON_NULL)
public class MapProdukPaketToProdukVO extends BaseTransactionVO {
@NotNull(message = "Paket tidak boleh kosong")
private ProdukVO paket;
private Integer paketId;
@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 getPaket() {
return paket;
}
public void setPaket(ProdukVO paket) {
this.paket = paket;
}
public Integer getPaketId() {
return paketId;
}
public void setPaketId(Integer paketId) {
this.paketId = paketId;
}
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;
}
}

View File

@ -1,11 +1,12 @@
package com.jasamedika.medifirst2000.controller;
import com.jasamedika.medifirst2000.controller.base.LocaleController;
import com.jasamedika.medifirst2000.dto.MapProdukPaketToProdukVO;
import com.jasamedika.medifirst2000.vo.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.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
@ -13,10 +14,11 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.springframework.http.HttpStatus.CREATED;
import static org.springframework.http.HttpStatus.OK;
import static org.springframework.http.HttpStatus.*;
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;
@ -34,33 +36,47 @@ public class MapProdukPaketController extends LocaleController<MapProdukPaketToP
@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);
try {
mapProdukPaketToProdukService.save(vo);
Map<String, String> message = new HashMap<>();
message.put(CREATED.getReasonPhrase(), "Berhasil tersimpan");
return RestUtil.getJsonResponse(vo, CREATED, message);
} catch (ServiceVOException e) {
Map<String, String> error = new HashMap<>();
error.put("bad_request", e.getMessage());
return RestUtil.getJsonResponse(null, HttpStatus.BAD_REQUEST, error);
}
}
@RequestMapping(method = GET)
public ResponseEntity<Object> get() {
List<MapProdukPaketToProdukVO> data = mapProdukPaketToProdukService.get();
return RestUtil.getJsonResponse(data, OK, null);
Map<String, String> message = new HashMap<>();
message.put(OK.getReasonPhrase(), "Berhasil");
return RestUtil.getJsonResponse(data, OK, message);
}
@RequestMapping(value = "/{paketId}", method = GET)
public ResponseEntity<Object> get(@PathVariable Integer paketId) {
List<MapProdukPaketToProdukVO> data = mapProdukPaketToProdukService.getByPaket(paketId);
return RestUtil.getJsonResponse(data, OK, null);
List<MapProdukPaketToProdukVO> data = mapProdukPaketToProdukService.get(paketId);
Map<String, String> message = new HashMap<>();
message.put(OK.getReasonPhrase(), "Berhasil");
return RestUtil.getJsonResponse(data, OK, message);
}
@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 = "/{noRec}", method = GET)
public ResponseEntity<Object> get(@PathVariable String noRec) {
MapProdukPaketToProdukVO data = mapProdukPaketToProdukService.get(noRec);
Map<String, String> message = new HashMap<>();
message.put(OK.getReasonPhrase(), "Berhasil");
return RestUtil.getJsonResponse(data, OK, message);
}
@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);
@RequestMapping(value = "/{noRec}", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE)
public ResponseEntity<Object> delete(@PathVariable String noRec) {
boolean status = mapProdukPaketToProdukService.delete(noRec);
Map<String, String> message = new HashMap<>();
message.put(OK.getReasonPhrase(), "Berhasil");
return RestUtil.getJsonResponse(status, OK, message);
}
}