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,
|
HttpServletRequest request,
|
||||||
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
@RequestParam(CommonConstants.PROFILE_DB) String configuration,
|
||||||
@RequestParam("dataVar") String dataVar,
|
@RequestParam("dataVar") String dataVar,
|
||||||
@RequestParam(value = "whereCond", required = false) String whereCondLisv) {
|
@RequestParam(value = "whereCond", required = false) String whereCondDepo) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Date dataValidita = UtilityDate.RecognizeDate(dataVar);
|
Date dataValidita = UtilityDate.RecognizeDate(dataVar);
|
||||||
return ServiceRestResponse.createPositiveResponse(grigliaAcquistoService.consolidaGriglieAcquisto(dataValidita, whereCondLisv));
|
return ServiceRestResponse.createPositiveResponse(grigliaAcquistoService.consolidaGriglieAcquisto(dataValidita, whereCondDepo));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error(request.getRequestURI(), e);
|
logger.error(request.getRequestURI(), e);
|
||||||
return new ServiceRestResponse(EsitoType.KO, configuration, 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.service.EntityProcessor;
|
||||||
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
import it.integry.ems.sync.MultiDBTransaction.MultiDBTransactionManager;
|
||||||
import it.integry.ems.utility.UtilityEntity;
|
import it.integry.ems.utility.UtilityEntity;
|
||||||
|
import it.integry.ems.utility.UtilityURL;
|
||||||
import it.integry.ems_model.base.EntityBase;
|
import it.integry.ems_model.base.EntityBase;
|
||||||
import it.integry.ems_model.db.ResultSetMapper;
|
import it.integry.ems_model.db.ResultSetMapper;
|
||||||
import it.integry.ems_model.entity.CarelliGiacenzaProg;
|
import it.integry.ems_model.entity.CarelliGiacenzaProg;
|
||||||
@@ -22,10 +23,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@@ -365,7 +363,7 @@ public class GiacenzaService {
|
|||||||
.setQtaIniz(qtaCol)
|
.setQtaIniz(qtaCol)
|
||||||
.setQtaScar(BigDecimal.ZERO)
|
.setQtaScar(BigDecimal.ZERO)
|
||||||
.setDataReg(dataCollo)
|
.setDataReg(dataCollo)
|
||||||
.setTipoCar("C")
|
.setTipoCar("R")
|
||||||
.setDataIns(new Date());
|
.setDataIns(new Date());
|
||||||
|
|
||||||
if (articoliSalvati.contains(codMart))
|
if (articoliSalvati.contains(codMart))
|
||||||
@@ -431,4 +429,51 @@ public class GiacenzaService {
|
|||||||
multiDBTransactionManager.rollbackAll();
|
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
|
@Autowired
|
||||||
private EntityProcessor entityProcessor;
|
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" +
|
String sql = "SELECT DISTINCT cod_mdep, cod_alis\n" +
|
||||||
"FROM atb_griglie\n" +
|
"FROM atb_griglie\n" +
|
||||||
"WHERE data_validita < " + UtilityDB.valueDateToString(dataVar, CommonConstants.DATE_FORMAT_YMD);
|
"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);
|
List<HashMap<String, Object>> atbGriglieDistinct = UtilityDB.executeSimpleQuery(multiDBTransactionManager.getPrimaryConnection(), sql);
|
||||||
|
|
||||||
for (HashMap<String, Object> item : atbGriglieDistinct) {
|
for (HashMap<String, Object> item : atbGriglieDistinct) {
|
||||||
|
|||||||
Reference in New Issue
Block a user