Creata procedura di consolidamento delle giacenze inserite nella tabella carelli_giacenza_prog

This commit is contained in:
2024-03-04 18:04:52 +01:00
parent 3ffa635387
commit 09cd7ba414
5 changed files with 153 additions and 8 deletions

View File

@@ -0,0 +1,31 @@
package it.integry.ems.migration.model;
import it.integry.ems.migration._base.BaseMigration;
import it.integry.ems.migration._base.MigrationModelInterface;
import it.integry.ems_model.utility.UtilityDB;
public class Migration_20240304165725 extends BaseMigration implements MigrationModelInterface {
@Override
public void up() throws Exception {
if (isHistoryDB())
return;
if (advancedDataSource.getProfileName().equalsIgnoreCase("carelli") ||
advancedDataSource.getProfileName().equalsIgnoreCase("gestfood") ||
advancedDataSource.getProfileName().equalsIgnoreCase("panimal")) {
String sql = "UPDATE carelli_giacenza_prog\n" +
"SET tipo_car = 'R'\n" +
"WHERE tipo_car = 'C'";
executeStatement(advancedDataSource.getConnection(), sql);
}
}
@Override
public void down() throws Exception {
}
}

View File

@@ -0,0 +1,65 @@
package it.integry.ems.retail.controller;
import it.integry.common.var.CommonConstants;
import it.integry.ems.product.controller.ListiniVenditaController;
import it.integry.ems.response.EsitoType;
import it.integry.ems.response.ServiceRestResponse;
import it.integry.ems.response.StatusResponse;
import it.integry.ems.retail.pvmRetail.service.GiacenzaService;
import it.integry.ems.status.ServiceChecker;
import it.integry.ems_model.utility.UtilityDate;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.List;
@RestController
@Scope(value = "request")
@RequestMapping("giacenza")
public class GiacenzaController {
private final Logger logger = LogManager.getLogger();
@Autowired
private ServiceChecker serviceChecker;
@Autowired
GiacenzaService giacenzaService;
@ExceptionHandler({Exception.class})
public @ResponseBody
ServiceRestResponse handleException(HttpServletRequest request, HttpServletResponse response, Exception ex) {
logger.error(request.getRequestURI(), ex);
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return ServiceRestResponse.createNegativeResponse(ex);
}
@RequestMapping(value = "status", method = RequestMethod.GET)
public @ResponseBody
List<StatusResponse> status(HttpServletRequest request) {
Class<?> clazz = ListiniVenditaController.class;
Method[] methods = clazz.getDeclaredMethods();
return serviceChecker.getServiceStatus(methods, clazz);
}
@RequestMapping(value = "consolida", method = RequestMethod.POST)
public @ResponseBody
ServiceRestResponse consolidaGiacenza(
HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration) {
try {
giacenzaService.consolidaGiacenza();
return ServiceRestResponse.createPositiveResponse();
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
return new ServiceRestResponse(EsitoType.KO, configuration, e);
}
}
}

View File

@@ -52,11 +52,11 @@ public class GrigliaAcquistoController {
HttpServletRequest request,
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
@RequestParam("dataVar") String dataVar,
@RequestParam(value = "whereCond", required = false) String whereCondLisv) {
@RequestParam(value = "whereCond", required = false) String whereCondDepo) {
try {
Date dataValidita = UtilityDate.RecognizeDate(dataVar);
return ServiceRestResponse.createPositiveResponse(grigliaAcquistoService.consolidaGriglieAcquisto(dataValidita, whereCondLisv));
return ServiceRestResponse.createPositiveResponse(grigliaAcquistoService.consolidaGriglieAcquisto(dataValidita, whereCondDepo));
} catch (Exception e) {
logger.error(request.getRequestURI(), e);
return new ServiceRestResponse(EsitoType.KO, configuration, e);

View File

@@ -5,6 +5,7 @@ import com.annimon.stream.Stream;
import it.integry.ems.service.EntityProcessor;
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
import it.integry.ems.utility.UtilityEntity;
import it.integry.ems.utility.UtilityURL;
import it.integry.ems_model.base.EntityBase;
import it.integry.ems_model.db.ResultSetMapper;
import it.integry.ems_model.entity.CarelliGiacenzaProg;
@@ -22,10 +23,7 @@ import org.springframework.stereotype.Service;
import java.io.IOException;
import java.math.BigDecimal;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
@Service
@@ -365,7 +363,7 @@ public class GiacenzaService {
.setQtaIniz(qtaCol)
.setQtaScar(BigDecimal.ZERO)
.setDataReg(dataCollo)
.setTipoCar("C")
.setTipoCar("R")
.setDataIns(new Date());
if (articoliSalvati.contains(codMart))
@@ -431,4 +429,51 @@ public class GiacenzaService {
multiDBTransactionManager.rollbackAll();
}
}
public void consolidaGiacenza() throws Exception {
//Calcola il primo giorno del mese precedente
Date data = UtilityDate.getTodayWithoutTime();
Calendar calendar = Calendar.getInstance();
calendar.setTime(data);
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
data = calendar.getTime();
String sql = "SELECT DISTINCT cod_mdep\n" +
"FROM carelli_giacenza_prog";
List<String> codMdepList = UtilityDB.executeSimpleQueryOnlyFirstColumn(multiDBTransactionManager.getPrimaryConnection(), sql);
for (String codMdep : codMdepList) {
sql = Query.format(
"SELECT *\n" +
"FROM carelli_giacenza_prog \n" +
"where data_reg < %s\n" +
"and cod_mdep = %s",
data,
codMdep
);
List<CarelliGiacenzaProg> carelliGiacenzaProgs = UtilityDB.executeSimpleQueryDTO(multiDBTransactionManager.getPrimaryConnection(), sql, CarelliGiacenzaProg.class);
if (carelliGiacenzaProgs != null) {
for (CarelliGiacenzaProg carelliGiacenzaProg : carelliGiacenzaProgs) {
BigDecimal qtaCar = carelliGiacenzaProg.getQtaCar();
BigDecimal qtaScar = carelliGiacenzaProg.getQtaScar();
carelliGiacenzaProg.setQtaIniz(qtaCar.subtract(qtaScar));
carelliGiacenzaProg.setDataReg(data);
carelliGiacenzaProg.setQtaCar(BigDecimal.ZERO);
carelliGiacenzaProg.setQtaScar(BigDecimal.ZERO);
carelliGiacenzaProg.setTipoCar("C");
carelliGiacenzaProg.setDataIns(new Date());
carelliGiacenzaProg.setOperation(OperationType.UPDATE);
}
saveEntity(carelliGiacenzaProgs);
}
}
}
}

View File

@@ -29,11 +29,15 @@ public class GrigliaAcquistoService {
@Autowired
private EntityProcessor entityProcessor;
public List<AtbGriglie> consolidaGriglieAcquisto(Date dataVar, String whereCondLisv) throws Exception {
public List<AtbGriglie> consolidaGriglieAcquisto(Date dataVar, String whereCondDepo) throws Exception {
String sql = "SELECT DISTINCT cod_mdep, cod_alis\n" +
"FROM atb_griglie\n" +
"WHERE data_validita < " + UtilityDB.valueDateToString(dataVar, CommonConstants.DATE_FORMAT_YMD);
if (!UtilityString.isNullOrEmpty(whereCondDepo)){
sql += " " + whereCondDepo;
}
List<HashMap<String, Object>> atbGriglieDistinct = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
for (HashMap<String, Object> item : atbGriglieDistinct) {