[BIOLEVANTE - EUROFORK]
- aggiornata gestione missioni
This commit is contained in:
@@ -5,6 +5,7 @@ import it.integry.ems.javabeans.RequestDataDTO;
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.dto.CreateMissioneMagazzinoAutomaticoRequestDTO;
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.dto.CreateMissioneMagazzinoAutomaticoResponseDTO;
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.dto.LogErrorMissioneMagazzinoAutomaticoRequestDTO;
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.dto.UpdateDestinazioneMissioniRequestDTO;
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.service.MissioniMagazzinoAutomaticoService;
|
||||
import it.integry.ems.response.ServiceRestResponse;
|
||||
import it.integry.ems.retail.wms.generic.service.WMSGenericService;
|
||||
@@ -136,6 +137,40 @@ public class MissioniMagazzinoAutomaticoController {
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(value = "instructions/{instructionId}/retry")
|
||||
public @ResponseBody
|
||||
ServiceRestResponse retryInstruction(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@PathVariable long instructionId) throws Exception {
|
||||
userSession.checkUser();
|
||||
|
||||
missioniMagazzinoAutomaticoService.retryMissionInstruction(multiDBTransactionManager, instructionId);
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
|
||||
@PostMapping(value = "instructions/{instructionId}/abort")
|
||||
public @ResponseBody
|
||||
ServiceRestResponse abortInstruction(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@PathVariable long instructionId) throws Exception {
|
||||
userSession.checkUser();
|
||||
|
||||
missioniMagazzinoAutomaticoService.abortMissionInstruction(multiDBTransactionManager, instructionId);
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@PostMapping(value = "instructions/destination/update")
|
||||
public @ResponseBody
|
||||
ServiceRestResponse updateDestinazioneMissioni(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
@RequestBody UpdateDestinazioneMissioniRequestDTO requestDTO) throws Exception {
|
||||
userSession.checkUser();
|
||||
|
||||
return ServiceRestResponse.createPositiveResponse(missioniMagazzinoAutomaticoService.updateDestinazioneMissioni(multiDBTransactionManager, requestDTO));
|
||||
}
|
||||
|
||||
// @PostMapping(value = "move-lu")
|
||||
// public @ResponseBody
|
||||
// ServiceRestResponse moveLu(@RequestParam(CommonConstants.PROFILE_DB) String profileDB,
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package it.integry.ems.logistic.missioni.magazzino_automatico.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
public class UpdateDestinazioneMissioniRequestDTO {
|
||||
|
||||
private String posizioneDestinazione;
|
||||
private List<Long> instructionsList;
|
||||
|
||||
public String getPosizioneDestinazione() {
|
||||
return posizioneDestinazione;
|
||||
}
|
||||
|
||||
public UpdateDestinazioneMissioniRequestDTO setPosizioneDestinazione(String posizioneDestinazione) {
|
||||
this.posizioneDestinazione = posizioneDestinazione;
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<Long> getInstructionsList() {
|
||||
return instructionsList;
|
||||
}
|
||||
|
||||
public UpdateDestinazioneMissioniRequestDTO setInstructionsList(List<Long> instructionsList) {
|
||||
this.instructionsList = instructionsList;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@@ -2,31 +2,28 @@ package it.integry.ems.logistic.missioni.magazzino_automatico.service;
|
||||
|
||||
import it.integry.ems.exception.PrimaryDatabaseNotPresentException;
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.dto.MissioneMagazzinoAutomaticoDTO;
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.dto.UpdateDestinazioneMissioniRequestDTO;
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.utils.MissioniMagazzinoAutomaticoUtils;
|
||||
import it.integry.ems.production.dto.UpdateDestinazioneOrdineRequestDTO;
|
||||
import it.integry.ems.retail.wms.Utility.WMSUtility;
|
||||
import it.integry.ems.retail.wms.generic.dto.SpostaUlRequestDTO;
|
||||
import it.integry.ems.retail.wms.generic.service.WMSGenericService;
|
||||
import it.integry.ems.service.EntityProcessor;
|
||||
import it.integry.ems.sync.MultiDBTransaction.Connection;
|
||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||
import it.integry.ems.utility.UtilityEntity;
|
||||
import it.integry.ems_model.config.EmsRestConstants;
|
||||
import it.integry.ems_model.entity.*;
|
||||
import it.integry.ems_model.exception.DataConverterNotFoundException;
|
||||
import it.integry.ems_model.types.OperationType;
|
||||
import it.integry.ems_model.utility.UtilityDB;
|
||||
import it.integry.ems_model.utility.UtilityHashMap;
|
||||
import it.integry.ems_model.utility.UtilityQuery;
|
||||
import it.integry.ems_model.utility.UtilityString;
|
||||
import it.integry.ems_model.utility.*;
|
||||
import org.springframework.security.core.userdetails.UsernameNotFoundException;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.sql.SQLException;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@@ -103,7 +100,6 @@ public class MissioniMagazzinoAutomaticoService {
|
||||
}
|
||||
|
||||
|
||||
|
||||
String sql = "SELECT mmma.id,\n" +
|
||||
" mmma.cod_mdep,\n" +
|
||||
" mmma.cod_area,\n" +
|
||||
@@ -323,4 +319,78 @@ public class MissioniMagazzinoAutomaticoService {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public void retryMissionInstruction(MultiDBTransactionManager multiDBTransactionManager, long instructionId) throws Exception {
|
||||
MtbMissioneMagAuto mtbMissioneMagAuto = new MtbMissioneMagAuto();
|
||||
|
||||
|
||||
String sqlRows = "SELECT top 1 * FROM " + MtbMissioneMagAutoDet.ENTITY +
|
||||
" WHERE id =" + UtilityDB.valueToString(instructionId) +
|
||||
" AND completed = 0 AND skipped = 0 and error_message IS NOT NULL";
|
||||
|
||||
MtbMissioneMagAutoDet mtbMissioneMagAutoDet = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sqlRows, MtbMissioneMagAutoDet.class);
|
||||
if (mtbMissioneMagAutoDet == null) return;
|
||||
|
||||
mtbMissioneMagAuto.setId(mtbMissioneMagAutoDet.getParentId());
|
||||
MissioniMagazzinoAutomaticoUtils.resetInstructionStatus(mtbMissioneMagAutoDet);
|
||||
mtbMissioneMagAutoDet
|
||||
.setUpdatedAt(LocalDateTime.now())
|
||||
.setOperation(OperationType.UPDATE);
|
||||
|
||||
mtbMissioneMagAuto.setMtbMissioneMagAutoDet(Collections.singletonList(mtbMissioneMagAutoDet));
|
||||
entityProcessor.processEntity(mtbMissioneMagAuto, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
public void abortMissionInstruction(MultiDBTransactionManager multiDBTransactionManager, long instructionId) throws Exception {
|
||||
MtbMissioneMagAuto mtbMissioneMagAuto = new MtbMissioneMagAuto();
|
||||
|
||||
|
||||
String sqlRows = "SELECT top 1 * FROM " + MtbMissioneMagAutoDet.ENTITY +
|
||||
" WHERE id = " + UtilityDB.valueToString(instructionId) +
|
||||
" AND completed = 0 AND skipped = 0";
|
||||
|
||||
MtbMissioneMagAutoDet mtbMissioneMagAutoDet = UtilityDB.executeSimpleQueryOnlyFirstRowDTO(multiDBTransactionManager.getPrimaryConnection(), sqlRows, MtbMissioneMagAutoDet.class);
|
||||
if (mtbMissioneMagAutoDet == null) return;
|
||||
|
||||
mtbMissioneMagAutoDet.setSkipped(true)
|
||||
.setOperation(OperationType.UPDATE);
|
||||
mtbMissioneMagAuto.setId(mtbMissioneMagAutoDet.getParentId())
|
||||
.setMtbMissioneMagAutoDet(Collections.singletonList(mtbMissioneMagAutoDet));
|
||||
entityProcessor.processEntity(mtbMissioneMagAuto, multiDBTransactionManager);
|
||||
}
|
||||
|
||||
public List<MtbMissioneMagAuto> updateDestinazioneMissioni(MultiDBTransactionManager multiDBTransactionManager, UpdateDestinazioneMissioniRequestDTO requestDTO) throws Exception {
|
||||
if (UtilityList.isNullOrEmpty(requestDTO.getInstructionsList()))
|
||||
return new ArrayList<>();
|
||||
|
||||
String sqlTestate = "SELECT * FROM " + MtbMissioneMagAutoDet.ENTITY + " WHERE " +
|
||||
" id IN (" + UtilityQuery.concatLongFieldsWithSeparator(requestDTO.getInstructionsList(), ",") + ") " +
|
||||
" AND completed = 0 AND skipped = 0";
|
||||
List<MtbMissioneMagAutoDet> istruzioniToUpdate = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sqlTestate, MtbMissioneMagAutoDet.class);
|
||||
|
||||
if (UtilityList.isNullOrEmpty(istruzioniToUpdate))
|
||||
throw new Exception("Nessuna missione trovata.");
|
||||
|
||||
List<MtbMissioneMagAuto> missioniToUpdate = new ArrayList<>();
|
||||
for (MtbMissioneMagAutoDet istruzione : istruzioniToUpdate) {
|
||||
MtbMissioneMagAuto missione = missioniToUpdate.stream().filter(x -> x.getId().equals(istruzione.getParentId())).findFirst().orElse(null);
|
||||
if (missione == null) {
|
||||
missione = new MtbMissioneMagAuto();
|
||||
missione.setId(istruzione.getParentId());
|
||||
missione.setMtbMissioneMagAutoDet(new ArrayList<>());
|
||||
missioniToUpdate.add(missione);
|
||||
}
|
||||
MissioniMagazzinoAutomaticoUtils.resetInstructionStatus(istruzione);
|
||||
istruzione
|
||||
.setPosizioneIn(requestDTO.getPosizioneDestinazione())
|
||||
.setUpdatedAt(LocalDateTime.now())
|
||||
.setOperation(OperationType.UPDATE);
|
||||
missione.getMtbMissioneMagAutoDet().add(istruzione);
|
||||
}
|
||||
|
||||
|
||||
entityProcessor.processEntityList(missioniToUpdate, multiDBTransactionManager, true);
|
||||
UtilityEntity.throwEntitiesException(missioniToUpdate);
|
||||
return missioniToUpdate;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package it.integry.ems.logistic.missioni.magazzino_automatico.utils;
|
||||
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.dto.MissioneMagazzinoAutomaticoDTO;
|
||||
import it.integry.ems.logistic.missioni.magazzino_automatico.dto.MissioneMagazzinoAutomaticoRowDTO;
|
||||
import it.integry.ems_model.config.EmsRestConstants;
|
||||
import it.integry.ems_model.entity.MtbMissioneMagAuto;
|
||||
import it.integry.ems_model.entity.MtbMissioneMagAutoDet;
|
||||
|
||||
@@ -89,5 +90,14 @@ public class MissioniMagazzinoAutomaticoUtils {
|
||||
.setUpdatedAt(inputData.getUpdatedAt());
|
||||
}
|
||||
|
||||
public static MtbMissioneMagAutoDet resetInstructionStatus (MtbMissioneMagAutoDet instruction){
|
||||
instruction.setCompleted(false)
|
||||
.setSkipped(false)
|
||||
.setStartedAt(EmsRestConstants.LOCAL_DATE_TIME_NULL)
|
||||
.setEndedAt(EmsRestConstants.LOCAL_DATE_TIME_NULL)
|
||||
.setErrorMessage(EmsRestConstants.NULL);
|
||||
return instruction;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user