Creata procedura di consolidamento delle giacenze inserite nella tabella carelli_giacenza_prog
This commit is contained in:
@@ -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 {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user