281 lines
10 KiB
Java
281 lines
10 KiB
Java
package it.acxent.cc;
|
|
|
|
import it.acxent.anag.ListinoArticolo;
|
|
import it.acxent.art.Articolo;
|
|
import it.acxent.art.ArticoloCR;
|
|
import it.acxent.art.Marca;
|
|
import it.acxent.art.Vetrina;
|
|
import it.acxent.common.StatusMsg;
|
|
import it.acxent.db.ApplParmFull;
|
|
import it.acxent.db.DBAdapter;
|
|
import it.acxent.db.ResParm;
|
|
import it.acxent.db.WcString;
|
|
import it.acxent.util.Timer;
|
|
import it.acxent.util.Vectumerator;
|
|
import java.sql.Date;
|
|
import java.util.Calendar;
|
|
import java.util.HashMap;
|
|
|
|
public class ArticoloAutoOfferte {
|
|
private static boolean threadAutoOfferte = false;
|
|
|
|
private long nArticoliAO = 30L;
|
|
|
|
private long nGiorniAO = 3L;
|
|
|
|
private long id_vetrinaAO;
|
|
|
|
private double prezzoDaAO;
|
|
|
|
private long giacenzaMinimaAO = 10L;
|
|
|
|
private double percScontoOffertaAO;
|
|
|
|
private ApplParmFull apFull;
|
|
|
|
class ThreadAutoOfferte extends Thread {
|
|
private ApplParmFull apFull;
|
|
|
|
private boolean sendEmail;
|
|
|
|
private final String TAG_THREAD_MSG = "AUTO OFFERTE ";
|
|
|
|
public ThreadAutoOfferte(ApplParmFull apFull, boolean sendEmail) {
|
|
this.apFull = apFull;
|
|
this.sendEmail = sendEmail;
|
|
if (!ArticoloAutoOfferte.isThreadAttivo()) {
|
|
ArticoloAutoOfferte.threadAutoOfferte = true;
|
|
start();
|
|
}
|
|
}
|
|
|
|
public void run() {
|
|
boolean debug = false;
|
|
Timer timer = new Timer();
|
|
timer.start();
|
|
StatusMsg.updateMsgByTag(ArticoloAutoOfferte.this.getApFull(), "AUTO OFFERTE ", "...inizio ...");
|
|
ResParm rp = new ResParm(true);
|
|
int i = 1;
|
|
int se1 = 10;
|
|
int se2 = 100;
|
|
ArticoloCR CR = new ArticoloCR();
|
|
Articolo bean = new Articolo(this.apFull);
|
|
Vetrina vetrina = new Vetrina(this.apFull);
|
|
vetrina.findByPrimaryKey(ArticoloAutoOfferte.this.getId_vetrinaAO());
|
|
if (vetrina.getId_vetrina() == 0L) {
|
|
rp.setMsg("ERRORE! vetrina non definito..");
|
|
rp.setStatus(false);
|
|
} else {
|
|
if (ArticoloAutoOfferte.this.getPercScontoOffertaAO() > 0.0D) {
|
|
String sqlUpdate = "update ARTICOLO as A set id_vetrina=null";
|
|
String today = DBAdapter.getToday().toString();
|
|
WcString updateCR = new WcString();
|
|
updateCR.addWc("id_vetrina=" + ArticoloAutoOfferte.this.getId_vetrinaAO());
|
|
updateCR.addWc("(A.dataScadenzaOfferta<'" + today + "' or A.dataScadenzaOffertaFornitore<'" + today + "' OR (A.dataScadenzaOfferta is null and A.dataScadenzaOffertaFornitore is null) )");
|
|
bean.update(sqlUpdate + sqlUpdate);
|
|
CR.setFlgOfferta(4L);
|
|
CR.setFlgEscludiWeb(0L);
|
|
if (!debug)
|
|
CR.setFlgReadyForWeb(1L);
|
|
CR.setFlgOrderBy(99L);
|
|
CR.setPrezzoDa(ArticoloAutoOfferte.this.getPrezzoDaAO());
|
|
if (ArticoloAutoOfferte.this.getGiacenzaMinimaAO() > 0L) {
|
|
CR.setQtaDa(ArticoloAutoOfferte.this.getGiacenzaMinimaAO());
|
|
CR.setQtaA(999999L);
|
|
CR.setFlgQta(1L);
|
|
}
|
|
Calendar cal = Calendar.getInstance();
|
|
cal.add(6, (int)ArticoloAutoOfferte.this.getNGiorniAO());
|
|
Date dataScadenzaOfferta = new Date(cal.getTimeInMillis());
|
|
Vectumerator<Articolo> vectumerator = bean.findByCR(CR, 1, (int)ArticoloAutoOfferte.this.getNArticoliAO());
|
|
System.out.println("Tot Record: " + vectumerator.getTotNumberOfRecords());
|
|
while (vectumerator.hasMoreElements()) {
|
|
Articolo row = (Articolo)vectumerator.nextElement();
|
|
String temp = "Aggiornamento " + i + " su " + vectumerator.getTotNumberOfRecords() + " " + row.getCodice() + " " + row.getNome();
|
|
StatusMsg.updateMsgByTag(ArticoloAutoOfferte.this.getApFull(), "AUTO OFFERTE ", temp);
|
|
DBAdapter.printDebug(debug, "AUTO OFFERTE " + temp);
|
|
row.setPrezzoIvatoBarrato(row.getStreetPriceIva());
|
|
row.setId_vetrina(ArticoloAutoOfferte.this.getId_vetrinaAO());
|
|
if (debug)
|
|
System.out.println("AUTO OFFERTE ora salvo...");
|
|
row.save();
|
|
if (debug)
|
|
System.out.println("AUTO OFFERTE salvataggio ok");
|
|
if (DBAdapter.getDateDiff(DBAdapter.getToday(), dataScadenzaOfferta) < 0L) {
|
|
if (debug)
|
|
System.out.println("AUTO OFFERTE cancello offerta....");
|
|
ListinoArticolo la = row.getListinoArticoloBase();
|
|
la.setDataScadenzaOffertaLA(null);
|
|
la.setPercScontoOffertaLA(0.0D);
|
|
la.setPrezzoOffertaLA(0.0D);
|
|
la.save();
|
|
}
|
|
if (dataScadenzaOfferta != null && DBAdapter.getDateDiff(DBAdapter.getToday(), dataScadenzaOfferta) >= 0L &&
|
|
ArticoloAutoOfferte.this.getPercScontoOffertaAO() > 0.0D) {
|
|
if (debug)
|
|
System.out.println("AUTO OFFERTE inserisco offerta....");
|
|
ListinoArticolo la = row.getListinoArticoloBase();
|
|
la.setDataScadenzaOffertaLA(dataScadenzaOfferta);
|
|
la.setPercScontoOffertaLA(ArticoloAutoOfferte.this.getPercScontoOffertaAO());
|
|
la.save();
|
|
}
|
|
if (bean.isLocalhost())
|
|
System.out.println("Auto Offerta:.... localhost");
|
|
if (debug)
|
|
System.out.println("AUTO OFFERTE FINE CICLO.... RIPARTO... " + i + "\n");
|
|
i++;
|
|
if (se1 > 0 && i % se1 == 0)
|
|
System.out.print(".");
|
|
if (se2 > 0 && i % se2 == 0)
|
|
System.out.println("" + i + " / " + i);
|
|
}
|
|
}
|
|
String tagVetrina = vetrina.getDescrizione().toLowerCase();
|
|
bean.update("update ARTICOLO as A set tagArticolo = replace(A.tagArticolo,'" + tagVetrina + ",','') ");
|
|
Marca marca = new Marca(this.apFull);
|
|
Vectumerator<Marca> vecMarca = marca.findMarcheConTagOfferta();
|
|
HashMap<Long, String> hmMarcaTag = new HashMap<>();
|
|
while (vecMarca.hasMoreElements()) {
|
|
Marca row = (Marca)vecMarca.nextElement();
|
|
bean.update("update ARTICOLO as A set tagArticolo = replace(A.tagArticolo,'" + row.getTagOfferta() + ",','') ");
|
|
hmMarcaTag.put(Long.valueOf(row.getId_marca()), row.getTagOfferta());
|
|
}
|
|
CR = new ArticoloCR();
|
|
CR.setFlgOfferta(1L);
|
|
CR.setFlgEscludiWeb(0L);
|
|
if (!debug)
|
|
CR.setFlgReadyForWeb(1L);
|
|
Vectumerator<Articolo> vec = bean.findByCR(CR, 0, 0);
|
|
if (debug)
|
|
System.out.println("AUTO OFFERTE CICLO TAG ...tot record " + vec.getTotNumberOfRecords() + "\n");
|
|
i = 0;
|
|
while (vec.hasMoreElements()) {
|
|
boolean isTagAggiornato = false;
|
|
Articolo row = (Articolo)vec.nextElement();
|
|
String temp = "Aggiornamento tag " + i + " su " + vec.getTotNumberOfRecords() + " " + row.getCodice() + " " + row.getNome();
|
|
StatusMsg.updateMsgByTag(ArticoloAutoOfferte.this.getApFull(), "AUTO OFFERTE ", temp);
|
|
String l_tag = row.getTagArticolo();
|
|
if (l_tag.indexOf(tagVetrina) < 0) {
|
|
if (!l_tag.endsWith(","))
|
|
l_tag = l_tag + ",";
|
|
l_tag = l_tag + l_tag + ",";
|
|
row.setTagArticolo(l_tag);
|
|
isTagAggiornato = true;
|
|
}
|
|
if (hmMarcaTag.containsKey(Long.valueOf(row.getId_marca()))) {
|
|
l_tag = row.getTagArticolo();
|
|
String tagMarca = hmMarcaTag.get(Long.valueOf(row.getId_marca()));
|
|
if (l_tag.indexOf(tagMarca) < 0) {
|
|
if (!l_tag.endsWith(","))
|
|
l_tag = l_tag + ",";
|
|
l_tag = l_tag + l_tag + ",";
|
|
row.setTagArticolo(l_tag);
|
|
isTagAggiornato = true;
|
|
}
|
|
}
|
|
if (isTagAggiornato)
|
|
row.superSave();
|
|
i++;
|
|
if (se1 > 0 && i % se1 == 0)
|
|
System.out.print(".");
|
|
if (se2 > 0 && i % se2 == 0)
|
|
System.out.println("" + i + " / " + i);
|
|
}
|
|
if (debug)
|
|
System.out.println("AUTO OFFERTE FINE CICLO TAG " + i + "\n");
|
|
}
|
|
timer.stop();
|
|
rp.setMsg("AUTO OFFERTE concluso. DURATA: " + timer.getDurataHourMin() + "\n" + rp.getMsg());
|
|
if (this.sendEmail);
|
|
StatusMsg.updateMsgByTag(ArticoloAutoOfferte.this.getApFull(), "AUTO OFFERTE ", rp.getMsg());
|
|
try {
|
|
sleep(10000L);
|
|
} catch (Exception e) {}
|
|
StatusMsg.deleteMsgByTag(ArticoloAutoOfferte.this.getApFull(), "AUTO OFFERTE ");
|
|
ArticoloAutoOfferte.threadAutoOfferte = false;
|
|
System.out.println(rp.getMsg());
|
|
}
|
|
|
|
public boolean isSendEmail() {
|
|
return this.sendEmail;
|
|
}
|
|
|
|
public void setSendEmail(boolean sendEmail) {
|
|
this.sendEmail = sendEmail;
|
|
}
|
|
}
|
|
|
|
public ArticoloAutoOfferte(ApplParmFull apFull) {
|
|
this.apFull = apFull;
|
|
}
|
|
|
|
public ArticoloAutoOfferte() {}
|
|
|
|
public static boolean isThreadAttivo() {
|
|
return threadAutoOfferte;
|
|
}
|
|
|
|
public long getNArticoliAO() {
|
|
return this.nArticoliAO;
|
|
}
|
|
|
|
public void setNArticoliAO(long nArticoliAO) {
|
|
this.nArticoliAO = nArticoliAO;
|
|
}
|
|
|
|
public long getNGiorniAO() {
|
|
return this.nGiorniAO;
|
|
}
|
|
|
|
public void setNGiorniAO(long nGiorniAO) {
|
|
this.nGiorniAO = nGiorniAO;
|
|
}
|
|
|
|
public long getId_vetrinaAO() {
|
|
return this.id_vetrinaAO;
|
|
}
|
|
|
|
public void setId_vetrinaAO(long id_vetrinaAO) {
|
|
this.id_vetrinaAO = id_vetrinaAO;
|
|
}
|
|
|
|
public double getPrezzoDaAO() {
|
|
return this.prezzoDaAO;
|
|
}
|
|
|
|
public void setPrezzoDaAO(double prezzoDaAO) {
|
|
this.prezzoDaAO = prezzoDaAO;
|
|
}
|
|
|
|
public long getGiacenzaMinimaAO() {
|
|
return this.giacenzaMinimaAO;
|
|
}
|
|
|
|
public void setGiacenzaMinimaAO(long giacenzaMinimaAO) {
|
|
this.giacenzaMinimaAO = giacenzaMinimaAO;
|
|
}
|
|
|
|
public double getPercScontoOffertaAO() {
|
|
return this.percScontoOffertaAO;
|
|
}
|
|
|
|
public void setPercScontoOffertaAO(double percScontoOffertaAO) {
|
|
this.percScontoOffertaAO = percScontoOffertaAO;
|
|
}
|
|
|
|
public ApplParmFull getApFull() {
|
|
return this.apFull;
|
|
}
|
|
|
|
public void setApFull(ApplParmFull apFull) {
|
|
this.apFull = apFull;
|
|
}
|
|
|
|
public final ResParm starAutoOfferte(ApplParmFull apFull, boolean sendEmail) {
|
|
if (!isThreadAttivo()) {
|
|
new ThreadAutoOfferte(apFull, sendEmail);
|
|
return new ResParm(true, "Thread AUTO OFFERTE avviato");
|
|
}
|
|
return new ResParm(false, "ATTENZIONE!! Thread AUTO OFFERTE in esecuzione!!!");
|
|
}
|
|
}
|