李兴辉 a2365ba36a 1. 产成品入库
2. 整合mybatis
3. 重写更新物料凭证
4. Map工具类封装
2025-03-21 13:36:45 +08:00

195 lines
6.4 KiB
Java

package com.zi.mwms.solution;
import java.io.*;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.Arrays;
import java.util.PriorityQueue;
import com.cim.idm.framework.autoconfigure.ZidmPlatformLicenseAutoConfiguration;
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.event.EventListener;
import org.springframework.core.env.Environment;
import com.cim.idm.framework.banner.ZIDMBanner;
import com.zi.mwms.solution.config.Globals;
@SpringBootApplication(scanBasePackages = { "com.cim.idm","com.zi.mwms"},exclude = ZidmPlatformLicenseAutoConfiguration.class)
@PropertySource("file:${configRootPath}/db/oracle.properties")
@PropertySource("file:${configRootPath}/middleware/middleware.properties")
@MapperScan("com.cim.idm.dao")
//@EnableAdminServer
public class Application {
private static Logger log = LoggerFactory.getLogger(Application.class);
private static final Object daemonLock = new Object();
private static volatile Application daemon = null;
private static ApplicationContext applicationContext;
private static final File wmsBaseFile;
private static final File mesHomeFile;
private static final File mesConfigDir;
private static final String separator = System.getProperty("file.separator");
static {
String classFileRootPath = Application.class.getResource("/").getPath();
String userDir = "";
if(classFileRootPath.endsWith("/target/classes/")){
userDir = classFileRootPath.substring(0,classFileRootPath.length()-16);
}
else {
userDir = System.getProperty("user.dir");
}
// Home first
String home = System.getProperty(Globals.WMS_HOME_PROP);
File homeFile = null;
if (home != null) {
File f = new File(home);
try {
homeFile = f.getCanonicalFile();
} catch (IOException ioe) {
homeFile = f.getAbsoluteFile();
}
}
if (homeFile == null) {
// First fall-back. See if current directory is a bin directory
// in a normal Tomcat install
File bootstrapJar = new File(userDir, "bootstrap.jar");
if (bootstrapJar.exists()) {
File f = new File(userDir, "..");
try {
homeFile = f.getCanonicalFile();
} catch (IOException ioe) {
homeFile = f.getAbsoluteFile();
}
}
}
if (homeFile == null) {
// Second fall-back. Use current directory
File f = new File(userDir);
try {
homeFile = f.getCanonicalFile();
} catch (IOException ioe) {
homeFile = f.getAbsoluteFile();
}
}
mesHomeFile = homeFile;
System.setProperty(Globals.WMS_HOME_PROP, mesHomeFile.getPath());
// Then base
String base = System.getProperty(Globals.WMS_BASE_PROP);
if (base == null) {
wmsBaseFile = mesHomeFile;
} else {
File baseFile = new File(base);
try {
baseFile = baseFile.getCanonicalFile();
} catch (IOException ioe) {
baseFile = baseFile.getAbsoluteFile();
}
wmsBaseFile = baseFile;
}
System.setProperty(Globals.WMS_BASE_PROP, wmsBaseFile.getPath());
String configDir = System.getProperty(Globals.WMS_CONF_PROP);
if (configDir == null) {
File mesParentDir = wmsBaseFile.getParentFile();
File checkDir = new File(mesParentDir, "Environment" + separator + "config");
if(checkDir.exists()) {
mesConfigDir = checkDir;
}
else {
mesConfigDir = new File(wmsBaseFile,"conf");
}
} else {
File configDirFile = new File(configDir);
try {
configDirFile = configDirFile.getCanonicalFile();
} catch (IOException ioe) {
configDirFile = configDirFile.getAbsoluteFile();
}
mesConfigDir = configDirFile;
}
if(mesConfigDir.getPath().contains("\\bin"))
{
String newpath=mesConfigDir.getPath().split("\\\\bin")[0]+"\\conf";
System.setProperty(Globals.WMS_CONF_PROP, newpath);
}
else{
System.setProperty(Globals.WMS_CONF_PROP, mesConfigDir.getPath());
}
}
@Autowired Environment env;
public static void main(String[] args) {
PriorityQueue<Double> pq = new PriorityQueue<Double>((a, b) -> b.compareTo(a));
String command = "start";
if(Arrays.asList(args).stream().anyMatch(s -> s.equals("start")
|| s.equals("stop") || s.equals("help"))) {
if (args.length > 0) {
command = args[args.length - 1];
}
}
if (command.equals("stop")) {
//shutdownApp();
}else if(command.equals("start")) {
synchronized (daemonLock) {
if (daemon == null) {
Application bootstrap = new Application();
daemon = bootstrap;
}
}
daemon.start(args);
}else {
log.warn("Bootstrap: command \"" + command + "\" does not exist.");
}
}
private void start(String[] args) {
SpringApplicationBuilder application = new SpringApplicationBuilder(Application.class);
application.banner(new ZIDMBanner());
applicationContext = application.run(args);
}
@EventListener
void handleApplicationReadyEvent(ApplicationReadyEvent event) {
String company = env.getProperty("company");
String factory = env.getProperty("factory");
String cim = env.getProperty("cim");
String mode = env.getProperty("mode");
String svr = env.getProperty("svr");
log.info("***********************************************************************************************");
log.info("[{} {} {} {} {}] server start complete, PID={}", company, factory, cim, mode, svr, getProcessID());
log.info("***********************************************************************************************");
}
public static final int getProcessID() {
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
return Integer.valueOf(runtimeMXBean.getName().split("@")[0]).intValue();
}
// @PreDestroy
// public static void shutdownApp() throws MalformedObjectNameException, InstanceNotFoundException, IntrospectionException, ReflectionException, MBeanException, IOException{
// log.info("Shutdown MES Application : {}", System.getProperty("Seq"));
// int exitCode = SpringApplication.exit(applicationContext, (ExitCodeGenerator)(()->0));
// System.exit(exitCode);
// }
}