bug修改,日志文件配置
This commit is contained in:
		@@ -45,11 +45,11 @@
 | 
			
		||||
                <spring.rabbitmq.username>guest</spring.rabbitmq.username>
 | 
			
		||||
                <spring.rabbitmq.password>guest</spring.rabbitmq.password>
 | 
			
		||||
                <!-- redis -->
 | 
			
		||||
                <spring.redis.cluster.nodes>redis.picaiba.com:6380</spring.redis.cluster.nodes>
 | 
			
		||||
<!--                <spring.redis.cluster.nodes>redis.picaiba.com:6380</spring.redis.cluster.nodes>
 | 
			
		||||
                <spring.redis.host>redis.picaiba.com</spring.redis.host>
 | 
			
		||||
                <spring.redis.port>6380</spring.redis.port>
 | 
			
		||||
                <spring.redis.password><![CDATA["@WSXcde3"]]></spring.redis.password>
 | 
			
		||||
                <spring.redis.database>5</spring.redis.database>
 | 
			
		||||
                <spring.redis.database>5</spring.redis.database>-->
 | 
			
		||||
                <!-- database -->
 | 
			
		||||
                <spring.datasource.url>jdbc:p6spy:mysql://mysql.picaiba.com:30307/mt_wms_qj?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
 | 
			
		||||
                </spring.datasource.url>
 | 
			
		||||
@@ -98,11 +98,11 @@
 | 
			
		||||
                <spring.rabbitmq.username>wms</spring.rabbitmq.username>
 | 
			
		||||
                <spring.rabbitmq.password>wms</spring.rabbitmq.password>
 | 
			
		||||
                <!-- redis -->
 | 
			
		||||
                <spring.redis.cluster.nodes>redis.picaiba.com:6380</spring.redis.cluster.nodes>
 | 
			
		||||
<!--                <spring.redis.cluster.nodes>redis.picaiba.com:6380</spring.redis.cluster.nodes>
 | 
			
		||||
                <spring.redis.host>redis.picaiba.com</spring.redis.host>
 | 
			
		||||
                <spring.redis.port>6380</spring.redis.port>
 | 
			
		||||
                <spring.redis.password><![CDATA["@WSXcde3"]]></spring.redis.password>
 | 
			
		||||
                <spring.redis.database>10</spring.redis.database>
 | 
			
		||||
                <spring.redis.database>10</spring.redis.database>-->
 | 
			
		||||
                <!-- database -->
 | 
			
		||||
                <spring.datasource.url>jdbc:p6spy:mysql://mysql.picaiba.com:30306/wms?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
 | 
			
		||||
                </spring.datasource.url>
 | 
			
		||||
@@ -149,11 +149,11 @@
 | 
			
		||||
                <spring.rabbitmq.username>wms</spring.rabbitmq.username>
 | 
			
		||||
                <spring.rabbitmq.password>wms</spring.rabbitmq.password>
 | 
			
		||||
                <!-- redis -->
 | 
			
		||||
                <spring.redis.cluster.nodes>127.0.0.1:6379</spring.redis.cluster.nodes>
 | 
			
		||||
<!--                <spring.redis.cluster.nodes>127.0.0.1:6379</spring.redis.cluster.nodes>
 | 
			
		||||
                <spring.redis.host>127.0.0.1</spring.redis.host>
 | 
			
		||||
                <spring.redis.port>6379</spring.redis.port>
 | 
			
		||||
                <spring.redis.password>2018</spring.redis.password>
 | 
			
		||||
                <spring.redis.database>10</spring.redis.database>
 | 
			
		||||
                <spring.redis.database>10</spring.redis.database>-->
 | 
			
		||||
                <!-- database -->
 | 
			
		||||
                <spring.datasource.url>jdbc:p6spy:mysql://localhost:3306/wms?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false
 | 
			
		||||
                </spring.datasource.url>
 | 
			
		||||
 
 | 
			
		||||
@@ -87,6 +87,8 @@ public class VehicleController extends BaseController {
 | 
			
		||||
        return successful(IDGenerator.gen("CL", "yyyyMMddHHmm", 2, "VEHICLE_CODE"));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PostMapping(value = "resetStatus")
 | 
			
		||||
    @ApiOperation(value = "重置车辆状态")
 | 
			
		||||
    private R<String> reset(){
 | 
			
		||||
        List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 1));
 | 
			
		||||
        for (VehicleInfo vehicleInfo:vehicleInfoList
 | 
			
		||||
 
 | 
			
		||||
@@ -49,8 +49,8 @@ public class HttpClient {
 | 
			
		||||
    public static String httpPost(String url, String json) throws IOException {
 | 
			
		||||
        //OkHttpClient httpClient = new OkHttpClient();
 | 
			
		||||
        OkHttpClient httpClient = new OkHttpClient().newBuilder().connectTimeout(300L, TimeUnit.SECONDS)
 | 
			
		||||
                .writeTimeout(300, TimeUnit.SECONDS)
 | 
			
		||||
                .readTimeout(300, TimeUnit.SECONDS)
 | 
			
		||||
                .writeTimeout(60*30, TimeUnit.SECONDS)
 | 
			
		||||
                .readTimeout(60*30, TimeUnit.SECONDS)
 | 
			
		||||
                .build();
 | 
			
		||||
        RequestBody requestBody = RequestBody.create(JSON, json);
 | 
			
		||||
        Request request = new Request.Builder()
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
 | 
			
		||||
import javax.annotation.PostConstruct;
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import javax.validation.groups.Default;
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
import java.time.DayOfWeek;
 | 
			
		||||
import java.time.LocalDate;
 | 
			
		||||
import java.time.LocalDateTime;
 | 
			
		||||
@@ -79,6 +80,8 @@ public class EnergyController extends BaseController {
 | 
			
		||||
    private KilnInfoServiceBiz kilnInfoServiceBiz;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private CurrTaskServiceBiz currTaskServiceBiz;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private TaskHisServiceBiz taskHisServiceBiz;
 | 
			
		||||
 | 
			
		||||
    @PostMapping(value = "eletric")
 | 
			
		||||
    @ApiOperation(value = "根据窑炉id获取消耗情况")
 | 
			
		||||
@@ -215,8 +218,7 @@ public class EnergyController extends BaseController {
 | 
			
		||||
    @PostMapping(value = "energyList")
 | 
			
		||||
    @ApiOperation(value = "根据加工炉id获取能源消耗情况")
 | 
			
		||||
    public R<String> energyList(@Validated({Default.class}) @RequestBody ElectricQueryParam electricQueryParam){
 | 
			
		||||
        electricQueryParam.getTaskId();
 | 
			
		||||
        CurrTask currTask = currTaskServiceBiz.getById(electricQueryParam.getTaskId());
 | 
			
		||||
        TaskHis currTask = taskHisServiceBiz.getById(electricQueryParam.getTaskId());
 | 
			
		||||
        Long kilnId = currTask.getKilnId();
 | 
			
		||||
        KilnInfo kilnInfo = kilnInfoServiceBiz.getById(kilnId);
 | 
			
		||||
        Integer kilnType = kilnInfo.getType();
 | 
			
		||||
@@ -224,25 +226,33 @@ public class EnergyController extends BaseController {
 | 
			
		||||
        JSONObject jsonObject=new JSONObject();
 | 
			
		||||
        ConsumeDataVo consumeDataVo=ConsumeDataVo.builder().build();
 | 
			
		||||
 | 
			
		||||
        Map map=new HashMap();
 | 
			
		||||
        Map<String,Object> map=new HashMap<>();
 | 
			
		||||
        //电能消耗
 | 
			
		||||
        List<ParEleValue> parEleValueList = parEleValueServiceBiz.list(new QueryWrapper<ParEleValue>()
 | 
			
		||||
                .eq(ParEleValue.KILN_ID, kilnId)
 | 
			
		||||
                .eq(ParEleValue.TASK_ID, electricQueryParam.getTaskId()));
 | 
			
		||||
        if (parEleValueList.size()>0){
 | 
			
		||||
            List eleList=new ArrayList();
 | 
			
		||||
            List<Object> eleList=new ArrayList<>();
 | 
			
		||||
            //电能消耗
 | 
			
		||||
            List eleConsume=new ArrayList<>();
 | 
			
		||||
            List<Object> eleConsume=new ArrayList<>();
 | 
			
		||||
            //A向电压
 | 
			
		||||
            List aVolConsume=new ArrayList<>();
 | 
			
		||||
            List<Object> aVolConsume=new ArrayList<>();
 | 
			
		||||
            //B向电压
 | 
			
		||||
            List bVolConsume=new ArrayList<>();
 | 
			
		||||
            List<Object> bVolConsume=new ArrayList<>();
 | 
			
		||||
            //C向电压
 | 
			
		||||
            List cVolConsume=new ArrayList<>();
 | 
			
		||||
            List<Object> cVolConsume=new ArrayList<>();
 | 
			
		||||
            Float talBat=0F;
 | 
			
		||||
            int i=0;
 | 
			
		||||
            for (ParEleValue parEleValue:parEleValueList
 | 
			
		||||
                 ) {
 | 
			
		||||
                //首位置为0
 | 
			
		||||
                if (i==0){
 | 
			
		||||
                    talBat=parEleValue.getTotalBat();
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                i++;
 | 
			
		||||
                map.put("time",parEleValue.getCreateTime());
 | 
			
		||||
                map.put("value",parEleValue.getTotalBat());
 | 
			
		||||
                map.put("value",floatSubtract(parEleValue.getTotalBat(),talBat));
 | 
			
		||||
                map.put("name","耗电量");
 | 
			
		||||
                map.put("unit","KW");
 | 
			
		||||
                eleConsume.add(JSONObject.toJSON(map));
 | 
			
		||||
@@ -278,37 +288,50 @@ public class EnergyController extends BaseController {
 | 
			
		||||
                .eq(ParEleValue.TASK_ID, electricQueryParam.getTaskId()));
 | 
			
		||||
        if (parGasValueList.size()>0){
 | 
			
		||||
            if (kilnType==1){
 | 
			
		||||
                List gasList=new ArrayList();
 | 
			
		||||
                List<Object> gasList=new ArrayList<>();
 | 
			
		||||
                //氮气
 | 
			
		||||
                List nitConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> nitConsume=new ArrayList<>();
 | 
			
		||||
                Float nit=0F;
 | 
			
		||||
                //甲醇
 | 
			
		||||
                List metConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> metConsume=new ArrayList<>();
 | 
			
		||||
                Float met=0F;
 | 
			
		||||
                //丙烷
 | 
			
		||||
                List propaneConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> propaneConsume=new ArrayList<>();
 | 
			
		||||
                Float propane=0F;
 | 
			
		||||
                //氨气
 | 
			
		||||
                List ammoniaConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> ammoniaConsume=new ArrayList<>();
 | 
			
		||||
                Float ammonia=0F;
 | 
			
		||||
                int i=0;
 | 
			
		||||
                for (ParGasValue parGasValue:parGasValueList
 | 
			
		||||
                     ) {
 | 
			
		||||
                    //累计值的量首位置为0
 | 
			
		||||
                    if (i==0){
 | 
			
		||||
                        nit=parGasValue.getNitFlowValue();
 | 
			
		||||
                        met=parGasValue.getMethanolFlow();
 | 
			
		||||
                        propane=parGasValue.getPropaneFlow();
 | 
			
		||||
                        ammonia=parGasValue.getAmmoniaFlowValue();
 | 
			
		||||
                    }
 | 
			
		||||
                    i++;
 | 
			
		||||
                    map.put("time",parGasValue.getCreateTime());
 | 
			
		||||
                    map.put("value",parGasValue.getNitFlowValue());
 | 
			
		||||
                    map.put("value",floatSubtract(parGasValue.getNitFlowValue(),nit));
 | 
			
		||||
                    map.put("name","氮气");
 | 
			
		||||
                    map.put("unit","m³");
 | 
			
		||||
                    nitConsume.add(JSONObject.toJSON(map));
 | 
			
		||||
                    map.clear();
 | 
			
		||||
                    map.put("time",parGasValue.getCreateTime());
 | 
			
		||||
                    map.put("value",parGasValue.getMethanolFlow());
 | 
			
		||||
                    map.put("value",floatSubtract(parGasValue.getMethanolFlow(),met));
 | 
			
		||||
                    map.put("name","甲醇");
 | 
			
		||||
                    map.put("unit","m³");
 | 
			
		||||
                    metConsume.add(JSONObject.toJSON(map));
 | 
			
		||||
                    map.clear();
 | 
			
		||||
                    map.put("time",parGasValue.getCreateTime());
 | 
			
		||||
                    map.put("value",parGasValue.getPropaneFlow());
 | 
			
		||||
                    map.put("value",floatSubtract(parGasValue.getPropaneFlow(),propane));
 | 
			
		||||
                    map.put("name","丙烷");
 | 
			
		||||
                    map.put("unit","m³");
 | 
			
		||||
                    propaneConsume.add(JSONObject.toJSON(map));
 | 
			
		||||
                    map.clear();
 | 
			
		||||
                    map.put("time",parGasValue.getCreateTime());
 | 
			
		||||
                    map.put("value",parGasValue.getAmmoniaFlowValue());
 | 
			
		||||
                    map.put("value",floatSubtract(parGasValue.getAmmoniaFlowValue(),ammonia));
 | 
			
		||||
                    map.put("name","氨气");
 | 
			
		||||
                    map.put("unit","m³");
 | 
			
		||||
                    ammoniaConsume.add(JSONObject.toJSON(map));
 | 
			
		||||
@@ -321,29 +344,40 @@ public class EnergyController extends BaseController {
 | 
			
		||||
                jsonObject.put("gas",gasList);
 | 
			
		||||
            }
 | 
			
		||||
            if (kilnType==3){
 | 
			
		||||
                List gasList=new ArrayList();
 | 
			
		||||
                List<Object> gasList=new ArrayList<>();
 | 
			
		||||
                //氮气
 | 
			
		||||
                List nitConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> nitConsume=new ArrayList<>();
 | 
			
		||||
                Float nit=0F;
 | 
			
		||||
                //二氧化碳
 | 
			
		||||
                List carbonConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> carbonConsume=new ArrayList<>();
 | 
			
		||||
                Float carbon=0F;
 | 
			
		||||
                //氨气
 | 
			
		||||
                List ammoniaConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> ammoniaConsume=new ArrayList<>();
 | 
			
		||||
                Float ammonia=0F;
 | 
			
		||||
                int i=0;
 | 
			
		||||
                for (ParGasValue parGasValue:parGasValueList
 | 
			
		||||
                ) {
 | 
			
		||||
                    //累计值的量首位置为0
 | 
			
		||||
                    if (i==0){
 | 
			
		||||
                        nit=parGasValue.getNitFlowValue();
 | 
			
		||||
                        carbon=parGasValue.getCarDioxideFlowValue();
 | 
			
		||||
                        ammonia=parGasValue.getAmmoniaFlowValue();
 | 
			
		||||
                    }
 | 
			
		||||
                    i++;
 | 
			
		||||
                    map.put("time",parGasValue.getCreateTime());
 | 
			
		||||
                    map.put("value",parGasValue.getNitFlowValue());
 | 
			
		||||
                    map.put("value",floatSubtract(parGasValue.getNitFlowValue(),nit));
 | 
			
		||||
                    map.put("name","氮气");
 | 
			
		||||
                    map.put("unit","m³");
 | 
			
		||||
                    nitConsume.add(JSONObject.toJSON(map));
 | 
			
		||||
                    map.clear();
 | 
			
		||||
                    map.put("time",parGasValue.getCreateTime());
 | 
			
		||||
                    map.put("value",parGasValue.getCarDioxideFlowValue());
 | 
			
		||||
                    map.put("value",floatSubtract(parGasValue.getCarDioxideFlowValue(),carbon));
 | 
			
		||||
                    map.put("name","二氧化碳");
 | 
			
		||||
                    map.put("unit","m³");
 | 
			
		||||
                    carbonConsume.add(JSONObject.toJSON(map));
 | 
			
		||||
                    map.clear();
 | 
			
		||||
                    map.put("time",parGasValue.getCreateTime());
 | 
			
		||||
                    map.put("value",parGasValue.getAmmoniaFlowValue());
 | 
			
		||||
                    map.put("value",floatSubtract(parGasValue.getAmmoniaFlowValue(),ammonia));
 | 
			
		||||
                    map.put("name","氨气");
 | 
			
		||||
                    map.put("unit","m³");
 | 
			
		||||
                    ammoniaConsume.add(JSONObject.toJSON(map));
 | 
			
		||||
@@ -361,9 +395,9 @@ public class EnergyController extends BaseController {
 | 
			
		||||
                .eq(ParEleValue.TASK_ID, electricQueryParam.getTaskId()));
 | 
			
		||||
        if (parRotSpeedValueList.size()>0){
 | 
			
		||||
            if (kilnType==1){
 | 
			
		||||
                List rotList=new ArrayList();
 | 
			
		||||
                List rot1Consume=new ArrayList<>();
 | 
			
		||||
                List rot2Consume=new ArrayList<>();
 | 
			
		||||
                List<Object> rotList=new ArrayList<>();
 | 
			
		||||
                List<Object> rot1Consume=new ArrayList<>();
 | 
			
		||||
                List<Object> rot2Consume=new ArrayList<>();
 | 
			
		||||
                for (ParRotSpeedValue parRotSpeedValue:parRotSpeedValueList
 | 
			
		||||
                ) {
 | 
			
		||||
                    map.put("time",parRotSpeedValue.getCreateTime());
 | 
			
		||||
@@ -390,11 +424,11 @@ public class EnergyController extends BaseController {
 | 
			
		||||
                .eq(ParEleValue.TASK_ID, electricQueryParam.getTaskId()));
 | 
			
		||||
        if (parTemValueList.size()>0){
 | 
			
		||||
            if (kilnType==1){
 | 
			
		||||
                List tempList=new ArrayList();
 | 
			
		||||
                List actualTempConsume=new ArrayList<>();
 | 
			
		||||
                List setupTempConsume=new ArrayList<>();
 | 
			
		||||
                List actualOilTempConsume=new ArrayList<>();
 | 
			
		||||
                List setupOilTempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> tempList=new ArrayList<>();
 | 
			
		||||
                List<Object> actualTempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> setupTempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> actualOilTempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> setupOilTempConsume=new ArrayList<>();
 | 
			
		||||
                for (ParTemValue parTemValue:parTemValueList
 | 
			
		||||
                     ) {
 | 
			
		||||
                    map.put("time",parTemValue.getCreateTime());
 | 
			
		||||
@@ -429,9 +463,9 @@ public class EnergyController extends BaseController {
 | 
			
		||||
                jsonObject.put("temp",tempList);
 | 
			
		||||
            }
 | 
			
		||||
            if (kilnType==2){
 | 
			
		||||
                List tempList=new ArrayList();
 | 
			
		||||
                List actualTempConsume=new ArrayList<>();
 | 
			
		||||
                List setupTempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> tempList=new ArrayList<>();
 | 
			
		||||
                List<Object> actualTempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> setupTempConsume=new ArrayList<>();
 | 
			
		||||
                for (ParTemValue parTemValue:parTemValueList
 | 
			
		||||
                ) {
 | 
			
		||||
                    map.put("time",parTemValue.getCreateTime());
 | 
			
		||||
@@ -453,11 +487,11 @@ public class EnergyController extends BaseController {
 | 
			
		||||
            }
 | 
			
		||||
            if (kilnType==3){
 | 
			
		||||
 | 
			
		||||
                List tempList=new ArrayList();
 | 
			
		||||
                List actualTempConsume=new ArrayList<>();
 | 
			
		||||
                List setupTempConsume=new ArrayList<>();
 | 
			
		||||
                List outerZone1TempConsume=new ArrayList<>();
 | 
			
		||||
                List outerZone2TempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> tempList=new ArrayList<>();
 | 
			
		||||
                List<Object> actualTempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> setupTempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> outerZone1TempConsume=new ArrayList<>();
 | 
			
		||||
                List<Object> outerZone2TempConsume=new ArrayList<>();
 | 
			
		||||
                for (ParTemValue parTemValue:parTemValueList
 | 
			
		||||
                ) {
 | 
			
		||||
                    map.put("time",parTemValue.getCreateTime());
 | 
			
		||||
@@ -479,6 +513,7 @@ public class EnergyController extends BaseController {
 | 
			
		||||
                    outerZone1TempConsume.add(JSONObject.toJSON(map));
 | 
			
		||||
                    map.clear();
 | 
			
		||||
                    map.put("time",parTemValue.getCreateTime());
 | 
			
		||||
 | 
			
		||||
                    map.put("value",parTemValue.getOuterZone2Temp());
 | 
			
		||||
                    map.put("name","外二区温度");
 | 
			
		||||
                    map.put("unit","℃");
 | 
			
		||||
@@ -494,5 +529,10 @@ public class EnergyController extends BaseController {
 | 
			
		||||
        }
 | 
			
		||||
        return R.ok(jsonObject.toJSONString());
 | 
			
		||||
    }
 | 
			
		||||
    private Float floatSubtract(Float a,Float b){
 | 
			
		||||
        BigDecimal a1 = new BigDecimal(Float.toString(a));
 | 
			
		||||
        BigDecimal b1 = new BigDecimal(Float.toString(b));
 | 
			
		||||
        return a1.subtract(b1).floatValue();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,7 @@ public class StockInfoServiceImpl extends BaseService implements StockInfoServic
 | 
			
		||||
    private OrderInfoServiceBiz orderInfoServiceBiz;
 | 
			
		||||
    @Override
 | 
			
		||||
    public R<List<CurrTaskDetVo>> get(IdParam idParam) {
 | 
			
		||||
        Long taskId = inStockInfoServiceBiz.getById(idParam).getTaskId();
 | 
			
		||||
        Long taskId = inStockInfoServiceBiz.getOne(new QueryWrapper<InStockInfo>().eq(InStockInfo.LOCATION_ID,idParam.getId())).getTaskId();
 | 
			
		||||
        List<CurrTaskDet> currTaskDetList = currTaskDetServiceBiz.list(new QueryWrapper<CurrTaskDet>().eq("curr_task_id", taskId));
 | 
			
		||||
        List<CurrTaskDetVo> currTaskDetVoList = com.mt.wms.core.utils.BeanUtils.copyList(currTaskDetList, CurrTaskDetVo.class);
 | 
			
		||||
        for (CurrTaskDetVo currTaskDetVo:currTaskDetVoList
 | 
			
		||||
 
 | 
			
		||||
@@ -109,7 +109,6 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        runTask.setVehicleId(vehicleId);
 | 
			
		||||
        runTask.setStartPosition(currTask.getStartPosition());
 | 
			
		||||
        runTask.setEndPosition(currTask.getTargetPosition());
 | 
			
		||||
        setCommonField(runTask);
 | 
			
		||||
        runTask.setBeginTime(LocalDateTime.now());
 | 
			
		||||
        runTaskServiceBiz.save(runTask);
 | 
			
		||||
        //调用车辆填入起终点,得到车辆执行结果
 | 
			
		||||
@@ -149,6 +148,7 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        Location location = locationServiceBiz.getById(inStockInfo.getLocationId());
 | 
			
		||||
        Long currTaskId = inStockInfo.getTaskId();
 | 
			
		||||
        CurrTask currTask = currTaskServiceBiz.getById(currTaskId);
 | 
			
		||||
        VehicleInfo vehicle = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
        if (vehicleId==1){
 | 
			
		||||
            //获取RGV2当前位置
 | 
			
		||||
            Double rgv2CurrPosition = RGVCurrPosition(2);
 | 
			
		||||
@@ -186,7 +186,6 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        // 起点为库位
 | 
			
		||||
        runTask.setStartPosition(location.getCode());
 | 
			
		||||
        runTask.setEndPosition(currTask.getTargetPosition());
 | 
			
		||||
        setCommonField(runTask);
 | 
			
		||||
        runTask.setBeginTime(LocalDateTime.now());
 | 
			
		||||
        runTaskServiceBiz.save(runTask);
 | 
			
		||||
        //修改缓存区存储情况表状态
 | 
			
		||||
@@ -216,6 +215,9 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
            currTask.setRunTaskId(runTask.getId());
 | 
			
		||||
            currTask.setUpdateTime(LocalDateTime.now());
 | 
			
		||||
            currTaskServiceBiz.updateById(currTask);
 | 
			
		||||
            //更新小车状态
 | 
			
		||||
            vehicle.setStatus(0);
 | 
			
		||||
            vehicleInfoServiceBiz.updateById(vehicle);
 | 
			
		||||
        }else {
 | 
			
		||||
            runTask.setStatus(3);
 | 
			
		||||
            runTask.setUpdateTime(LocalDateTime.now());
 | 
			
		||||
@@ -264,7 +266,6 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        }
 | 
			
		||||
        //新建一条执行任务的关系表存放任务执行信息,终点为缓存区空闲库位
 | 
			
		||||
        RunTask runTask=new RunTask();
 | 
			
		||||
        setCommonField(runTask);
 | 
			
		||||
        runTask.setTaskId(currTask.getId());
 | 
			
		||||
        runTask.setTaskCode(currTask.getTaskCode());
 | 
			
		||||
        runTask.setVehicleId(vehicleId);
 | 
			
		||||
@@ -284,7 +285,7 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        inStockInfo.setLocationId(location.getId());
 | 
			
		||||
        inStockInfo.setLocationName(location.getLocationNameAlias());
 | 
			
		||||
        inStockInfo.setType(1);
 | 
			
		||||
        setCommonField(inStockInfo);
 | 
			
		||||
        inStockInfo.setCreateTime(LocalDateTime.now());
 | 
			
		||||
        inStockInfoServiceBiz.save(inStockInfo);
 | 
			
		||||
        // 调用车辆填入起终点,得到车辆执行结果,填入任务号(待确认)
 | 
			
		||||
        Long startPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getStartPosition())).getCode();
 | 
			
		||||
@@ -299,6 +300,7 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
            runTaskServiceBiz.updateById(runTask);
 | 
			
		||||
            //更新currTask表
 | 
			
		||||
            currTask.setCacheSatatus(2);
 | 
			
		||||
            currTask.setStatus(3);
 | 
			
		||||
            currTask.setUpdateTime(LocalDateTime.now());
 | 
			
		||||
            currTaskServiceBiz.updateById(currTask);
 | 
			
		||||
            //更新in_stock_info表
 | 
			
		||||
@@ -355,7 +357,6 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        }
 | 
			
		||||
        //新建一条执行任务的关系表存放任务执行信息,终点为缓存区空闲库位
 | 
			
		||||
        RunTask runTask=new RunTask();
 | 
			
		||||
        setCommonField(runTask);
 | 
			
		||||
        runTask.setTaskId(currTask.getId());
 | 
			
		||||
        runTask.setTaskCode(currTask.getTaskCode());
 | 
			
		||||
        runTask.setVehicleId(vehicleId);
 | 
			
		||||
@@ -380,8 +381,7 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        inStockInfo.setKilnName(currTask.getKilnName());
 | 
			
		||||
        inStockInfo.setLocationId(location.getId());
 | 
			
		||||
        inStockInfo.setLocationName(location.getLocationNameAlias());
 | 
			
		||||
        inStockInfo.setType(0);
 | 
			
		||||
        setCommonField(inStockInfo);
 | 
			
		||||
        inStockInfo.setCreateTime(LocalDateTime.now());
 | 
			
		||||
        inStockInfoServiceBiz.save(inStockInfo);
 | 
			
		||||
        // 2021/12/14  调用车辆填入起终点,得到车辆执行结果,填入任务号
 | 
			
		||||
        Long startPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, runTask.getStartPosition())).getCode();
 | 
			
		||||
@@ -426,7 +426,7 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
            //两辆小车是否冲突
 | 
			
		||||
            Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, location.getCode(), yeyaTaiCode, rgv2CurrPosition);
 | 
			
		||||
            if (conflictBoolean){
 | 
			
		||||
                Integer status = moveRgv(2, 1L, 39);
 | 
			
		||||
                Integer status = moveRgv(2, 1L, 1);
 | 
			
		||||
                if (status!=1){
 | 
			
		||||
                    logger.info("===执行出库任务时车辆位置冲突,执行车辆位移任务,车辆"+vehicleId+"移动到点位39,执行失败===");
 | 
			
		||||
                    //  2022/3/6  websocket通知页面
 | 
			
		||||
@@ -441,7 +441,7 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
            //两辆小车是否冲突
 | 
			
		||||
            Boolean conflictBoolean = taskDistanceUtils.conflictForVehicle(vehicleId, location.getCode(), yeyaTaiCode, rgv1CurrPosition);
 | 
			
		||||
            if (conflictBoolean){
 | 
			
		||||
                Integer status = moveRgv(1, 1L,  1);
 | 
			
		||||
                Integer status = moveRgv(1, 1L,  12);
 | 
			
		||||
                if (status!=1){
 | 
			
		||||
                    logger.info("===执行任务出库任务时车辆位置冲突,执行车辆位移任务,车辆"+vehicleId+"移动到点位1,执行失败===");
 | 
			
		||||
                    //  2022/3/6  websocket通知页面
 | 
			
		||||
@@ -452,7 +452,7 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        RunTask runTask=new RunTask();
 | 
			
		||||
        setCommonField(runTask);
 | 
			
		||||
       // setCommonField(runTask);
 | 
			
		||||
        runTask.setVehicleId(vehicleId);
 | 
			
		||||
        runTask.setBeginTime(LocalDateTime.now());
 | 
			
		||||
        runTask.setStartPosition(location.getCode());
 | 
			
		||||
@@ -470,7 +470,7 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        Integer status = sendTaskToRgv(vehicleId, 0L, startPoint, endPoint, 0);
 | 
			
		||||
        if (status==1){
 | 
			
		||||
            logger.info("===执行任务出库任务,车辆搬运任务,车辆:"+vehicleId+" ,起点:"+startPoint+" ,终点:"+endPoint+"任务执行成功===");
 | 
			
		||||
            //更新关系表状态为完成
 | 
			
		||||
            //更新调度任务表状态为完成
 | 
			
		||||
            runTask.setUpdateTime(LocalDateTime.now());
 | 
			
		||||
            runTask.setStatus(2);
 | 
			
		||||
            runTask.setEndTime(LocalDateTime.now());
 | 
			
		||||
@@ -487,13 +487,17 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
            //更新库位状态
 | 
			
		||||
            location.setStatus(0);
 | 
			
		||||
            locationServiceBiz.updateById(location);
 | 
			
		||||
 | 
			
		||||
            //更新车辆状态
 | 
			
		||||
            VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
            vehicleInfo.setStatus(0);
 | 
			
		||||
            vehicleInfoServiceBiz.updateById(vehicleInfo);
 | 
			
		||||
        }else {
 | 
			
		||||
            runTask.setStatus(3);
 | 
			
		||||
            runTask.setUpdateTime(LocalDateTime.now());
 | 
			
		||||
            runTaskServiceBiz.updateById(runTask);
 | 
			
		||||
            logger.info("任务 "+runTask.getTaskCode()+" 车辆从缓存区到提升平台过程中失败。");
 | 
			
		||||
            logger.info("===执行任务出库任务,车辆搬运任务,车辆:"+vehicleId+" ,起点:"+startPoint+" ,终点:"+endPoint+"任务执行失败===");
 | 
			
		||||
            System.out.println("===执行任务出库任务,车辆搬运任务,车辆:"+vehicleId+" ,起点:"+startPoint+" ,终点:"+endPoint+"任务执行失败===");
 | 
			
		||||
            //  2021/12/14 websocket推送到前端
 | 
			
		||||
            webSocketServer.sendtoAll("出库任务车辆从缓存区到提升平台过程中失败。");
 | 
			
		||||
        }
 | 
			
		||||
@@ -896,7 +900,7 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        json.put("identifier",identifier);
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("能源消耗统计:获取 "+identifier+" 的值失败");
 | 
			
		||||
@@ -921,12 +925,13 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        }
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("获取RGV1的当前位置失败");
 | 
			
		||||
        }
 | 
			
		||||
        return Double.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
        Double value = Double.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
        return value*0.0001;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
@@ -942,16 +947,21 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        Map<String, Integer> json = new HashMap();
 | 
			
		||||
        //type=1为 入
 | 
			
		||||
        // taskType 4 单移动
 | 
			
		||||
 | 
			
		||||
        json.put("taskType", 4);
 | 
			
		||||
        json.put("sendRow", sendRow);
 | 
			
		||||
        json.put("pickRow",0);
 | 
			
		||||
        json.put("taskNo",1);
 | 
			
		||||
        json.put("ideNumber",1);
 | 
			
		||||
        json.put("processNumber",1);
 | 
			
		||||
        String taskJson = JSON.toJSONString(json);
 | 
			
		||||
        logger.info("===执行任务:"+currTaskId+" 时车辆位置冲突,即将执行车辆位移任务,车辆"+vehicleId+"移动到点位"+sendRow+"===");
 | 
			
		||||
        String result =null;
 | 
			
		||||
        try {
 | 
			
		||||
            if (vehicleId==1){
 | 
			
		||||
                result=HttpClient.httpPost("http://localhost:8009/rgv2/sendTask",taskJson);
 | 
			
		||||
                result=HttpClient.httpPost("http://192.168.6.51:8009/rgv1/sendTask",taskJson);
 | 
			
		||||
            }else {
 | 
			
		||||
                result=HttpClient.httpPost("http://localhost:8009/rgv1/sendTask",taskJson);
 | 
			
		||||
                result=HttpClient.httpPost("http://192.168.6.51:8009/rgv2/sendTask",taskJson);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            JSONObject jsonObject = JSON.parseObject(result);
 | 
			
		||||
@@ -987,10 +997,10 @@ public class AsynRunTaskService extends BaseService {
 | 
			
		||||
        logger.info("===执行任务:"+currTaskId+" ,即将执行车辆搬运任务,车辆:"+vehicleId+" ,起点:"+startPoint+" ,终点:"+endPoint+"===");
 | 
			
		||||
        try {
 | 
			
		||||
            if (vehicleId==1){
 | 
			
		||||
                result = HttpClient.httpPost("http://localhost:8009/rgv1/sendTask", taskJson);
 | 
			
		||||
                result = HttpClient.httpPost("http://192.168.6.51:8009/rgv1/sendTask", taskJson);
 | 
			
		||||
            }
 | 
			
		||||
            if (vehicleId==2){
 | 
			
		||||
                result = HttpClient.httpPost("http://localhost:8009/rgv2/sendTask", taskJson);
 | 
			
		||||
                result = HttpClient.httpPost("http://192.168.6.51:8009/rgv2/sendTask", taskJson);
 | 
			
		||||
            }
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
 
 | 
			
		||||
@@ -66,18 +66,23 @@ public class RunTaskUtils {
 | 
			
		||||
        //起点,起点和终点是液压台code、窑炉code、缓存区code
 | 
			
		||||
        String startPosition = currTask.getStartPosition();
 | 
			
		||||
        PointInfo startPoint = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, startPosition));
 | 
			
		||||
        // 可以根据点位类型判断起点是否为液压台
 | 
			
		||||
        // 可以根据点位类型判断起点是否为液压台(2是液压台)
 | 
			
		||||
        Integer startPointType = startPoint.getType();
 | 
			
		||||
        if (startPointType==3){
 | 
			
		||||
        if (startPointType==2){
 | 
			
		||||
            Map<String, Object> yeya = new HashMap();
 | 
			
		||||
            //type=1为 入
 | 
			
		||||
            yeya.put("type", 1);
 | 
			
		||||
            yeya.put("number", startPoint.getCode());
 | 
			
		||||
            if ("YYT003".equals(startPoint.getNote())){
 | 
			
		||||
                yeya.put("number", 2);
 | 
			
		||||
            }
 | 
			
		||||
            if ("YYT004".equals(startPoint.getNote())){
 | 
			
		||||
                yeya.put("number", 1);
 | 
			
		||||
            }
 | 
			
		||||
            String yeyaJudgeStatus = JSON.toJSONString(yeya);
 | 
			
		||||
            //判断起点液压台是否已放货且提升到位
 | 
			
		||||
            String yeyaStatus=null;
 | 
			
		||||
            try {
 | 
			
		||||
                yeyaStatus = HttpClient.httpPost("http://localhost:8009/yeya/isReadyForYeyaStatus", yeyaJudgeStatus);
 | 
			
		||||
                yeyaStatus = HttpClient.httpPost("http://192.168.6.51:8009/yeya/isReadyForYeyaStatus", yeyaJudgeStatus);
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
                logger.error(new Date() + "WCS接口超时未响应!");
 | 
			
		||||
@@ -108,6 +113,9 @@ public class RunTaskUtils {
 | 
			
		||||
        if (resultBoolean){
 | 
			
		||||
            //计算出路径最短的车辆id
 | 
			
		||||
            Long vehicleId = taskDistanceUtils.chooseVehicle(currTask.getStartPosition(), currTask.getTargetPosition());
 | 
			
		||||
            if (vehicleId==0){
 | 
			
		||||
                return R.failed("两辆车都不在线,请检查后重试!");
 | 
			
		||||
            }
 | 
			
		||||
            //占用车辆
 | 
			
		||||
            VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
            vehicleInfo.setStatus(1);
 | 
			
		||||
@@ -130,7 +138,7 @@ public class RunTaskUtils {
 | 
			
		||||
            if (count >0) {
 | 
			
		||||
                //分配一个缓存区库位
 | 
			
		||||
                Location location = locationServiceBiz.list(new QueryWrapper<Location>()
 | 
			
		||||
                        .eq(Location.STATUS, 1)
 | 
			
		||||
                        .eq(Location.STATUS, 0)
 | 
			
		||||
                        .eq(Location.VALID, 1)).get(0);
 | 
			
		||||
                //更新 location 表对应库位状态为占用
 | 
			
		||||
                location.setStatus(1);
 | 
			
		||||
@@ -140,6 +148,9 @@ public class RunTaskUtils {
 | 
			
		||||
                PointInfo pointInfo = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, location.getCode()));
 | 
			
		||||
                //计算出路径最短的车辆id,起点液压台,终点缓存区库位点
 | 
			
		||||
                Long vehicleId = taskDistanceUtils.chooseVehicle(currTask.getStartPosition(), location.getCode());
 | 
			
		||||
                if (vehicleId==0){
 | 
			
		||||
                    return R.failed("两辆车都不在线,请检查后重试!");
 | 
			
		||||
                }
 | 
			
		||||
                //占用车辆
 | 
			
		||||
                VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
                vehicleInfo.setStatus(1);
 | 
			
		||||
@@ -233,6 +244,9 @@ public class RunTaskUtils {
 | 
			
		||||
            //窑炉为起点,缓存区为终点
 | 
			
		||||
            Location location = locationList.get(0);
 | 
			
		||||
            Long vehicleId = taskDistanceUtils.chooseVehicle(kilnInfo.getCode(), location.getCode());
 | 
			
		||||
            if (vehicleId==0){
 | 
			
		||||
                return R.failed("两辆车都不在线,请检查后重试!");
 | 
			
		||||
            }
 | 
			
		||||
            //占用车辆
 | 
			
		||||
            VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
            vehicleInfo.setStatus(1);
 | 
			
		||||
@@ -267,8 +281,17 @@ public class RunTaskUtils {
 | 
			
		||||
            //有小车在运行,提示当前有车辆在运行,请稍后
 | 
			
		||||
            return R.failed("当前轨道有RGV车辆在运动,请等待当前RGV车辆执行完毕再执行任务!");
 | 
			
		||||
        }
 | 
			
		||||
        Boolean platFormStatus = platFormStatus(yeyaTaiCode);
 | 
			
		||||
        if (!platFormStatus){
 | 
			
		||||
            // TODO: 2022/3/19 delete
 | 
			
		||||
            System.out.println("当前选定的液压台为在线或未提升到位,请检查后重试!");
 | 
			
		||||
            return R.failed("当前选定的液压台为在线或未提升到位,请检查后重试!");
 | 
			
		||||
        }
 | 
			
		||||
        //计算出路径最短的车辆id
 | 
			
		||||
        Long vehicleId = taskDistanceUtils.chooseVehicle(location.getCode(), yeyaTaiCode);
 | 
			
		||||
        if (vehicleId==0){
 | 
			
		||||
            return R.failed("两辆车都不在线,请检查后重试!");
 | 
			
		||||
        }
 | 
			
		||||
        //占用车辆
 | 
			
		||||
        VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
        vehicleInfo.setStatus(1);
 | 
			
		||||
@@ -276,6 +299,8 @@ public class RunTaskUtils {
 | 
			
		||||
        vehicleInfoServiceBiz.updateById(vehicleInfo);
 | 
			
		||||
        //异步调用车辆
 | 
			
		||||
        asynRunTaskService.asynRunOutStock(locationId,yeyaTaiCode,vehicleInfo.getId());
 | 
			
		||||
        // TODO: 2022/3/19
 | 
			
		||||
        System.out.println("操作成功,任务已开始执行。");
 | 
			
		||||
        return R.ok("操作成功,任务已开始执行。");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -293,7 +318,7 @@ public class RunTaskUtils {
 | 
			
		||||
        json.put("identifier",identifier);
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("readPLC: "+identifier+" 的值失败");
 | 
			
		||||
@@ -301,4 +326,86 @@ public class RunTaskUtils {
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 判断液压台是否准备好放货
 | 
			
		||||
     * @param platFormCode 液压台编码
 | 
			
		||||
     * @return 是/否
 | 
			
		||||
     */
 | 
			
		||||
    private Boolean platFormStatus(String platFormCode){
 | 
			
		||||
        String identifier=null;
 | 
			
		||||
        if ("YYT001".equals(platFormCode)){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.Platform4ToWCS.";
 | 
			
		||||
            Map<String, Object> json = new HashMap();
 | 
			
		||||
            json.put("nameSpace", 6);
 | 
			
		||||
            json.put("plcName", "plc1");
 | 
			
		||||
            json.put("identifier",identifier+"Online");
 | 
			
		||||
            String result = null;
 | 
			
		||||
            try {
 | 
			
		||||
                result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
                logger.info("获取液压台1当前是否在线失败");
 | 
			
		||||
            }
 | 
			
		||||
            Boolean aBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
            if (aBoolean){
 | 
			
		||||
                Map<String, Object> statusJson = new HashMap();
 | 
			
		||||
                json.put("nameSpace", 6);
 | 
			
		||||
                json.put("plcName", "plc1");
 | 
			
		||||
                json.put("identifier",identifier+"TaskState");
 | 
			
		||||
                String statusResult = null;
 | 
			
		||||
                try {
 | 
			
		||||
                    statusResult = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(statusJson));
 | 
			
		||||
                } catch (IOException e) {
 | 
			
		||||
                    e.printStackTrace();
 | 
			
		||||
                    logger.info("获取液压台1当前状态失败");
 | 
			
		||||
                }
 | 
			
		||||
                Integer status = Integer.valueOf(JSONObject.parseObject(statusResult).get("result").toString());
 | 
			
		||||
                if (status==1){
 | 
			
		||||
                    return true;
 | 
			
		||||
                }else {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }else {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if ("YYT002".equals(platFormCode)){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.Platform3ToWCS.";
 | 
			
		||||
            Map<String, Object> json = new HashMap();
 | 
			
		||||
            json.put("nameSpace", 6);
 | 
			
		||||
            json.put("plcName", "plc1");
 | 
			
		||||
            json.put("identifier",identifier+"Online");
 | 
			
		||||
            String result = null;
 | 
			
		||||
            try {
 | 
			
		||||
                result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
            } catch (IOException e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
                logger.info("获取液压台2当前是否在线失败");
 | 
			
		||||
            }
 | 
			
		||||
            Boolean aBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
            if (aBoolean){
 | 
			
		||||
                Map<String, Object> statusJson = new HashMap();
 | 
			
		||||
                statusJson.put("nameSpace", 6);
 | 
			
		||||
                statusJson.put("plcName", "plc1");
 | 
			
		||||
                statusJson.put("identifier",identifier+"TaskState");
 | 
			
		||||
                String statusResult = null;
 | 
			
		||||
                try {
 | 
			
		||||
                    statusResult = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(statusJson));
 | 
			
		||||
                } catch (IOException e) {
 | 
			
		||||
                    e.printStackTrace();
 | 
			
		||||
                    logger.info("获取液压台2当前状态失败");
 | 
			
		||||
                }
 | 
			
		||||
                Integer status = Integer.valueOf(JSONObject.parseObject(statusResult).get("result").toString());
 | 
			
		||||
                if (status==1){
 | 
			
		||||
                    return true;
 | 
			
		||||
                }else {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }else {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,7 @@ import org.slf4j.Logger;
 | 
			
		||||
import org.slf4j.LoggerFactory;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.scheduling.annotation.Scheduled;
 | 
			
		||||
import org.springframework.stereotype.Component;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
@@ -28,6 +29,7 @@ import java.util.Map;
 | 
			
		||||
 * @Date: 2021/12/13 19:54
 | 
			
		||||
 * @Version 1.0
 | 
			
		||||
 */
 | 
			
		||||
@Component
 | 
			
		||||
public class ScheduledTask extends BaseService {
 | 
			
		||||
 | 
			
		||||
    private final static Logger logger = LoggerFactory.getLogger(AsynRunTaskService.class);
 | 
			
		||||
@@ -65,7 +67,6 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
    @Resource
 | 
			
		||||
    private WebSocketServer webSocketServer;
 | 
			
		||||
 | 
			
		||||
    @Scheduled(fixedDelay = 5000)
 | 
			
		||||
    public void testWebsocket() throws IOException {
 | 
			
		||||
        webSocketServer.sendtoAll(LocalDateTime.now()+"测试");
 | 
			
		||||
    }
 | 
			
		||||
@@ -73,7 +74,6 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
    /**
 | 
			
		||||
     * 查询加工完成的窑炉
 | 
			
		||||
     */
 | 
			
		||||
    @Scheduled
 | 
			
		||||
    public void taskForStockToKiln() throws IOException {
 | 
			
		||||
        //两辆车是否都空闲,只有两辆车都空闲才被允许做任务
 | 
			
		||||
        List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 0));
 | 
			
		||||
@@ -105,23 +105,24 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    //查询出正在加工的窑炉,遍历,根据采集频率的不同,采集高频数据能源消耗。
 | 
			
		||||
    //查询出正在加工的窑炉,遍历,根据采集频率的不同,采集高频数据能源消耗。暂定30秒
 | 
			
		||||
    //@Scheduled(fixedDelay = 1000*30)
 | 
			
		||||
    public void getFastValue(){
 | 
			
		||||
        //加工炉列表
 | 
			
		||||
        List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list(new QueryWrapper<KilnInfo>().in(KilnInfo.TYPE,1,3));
 | 
			
		||||
        for (KilnInfo kilnInfo:kilnInfoList
 | 
			
		||||
             ) {
 | 
			
		||||
            PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_TYPE, 1)
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_ID, kilnInfo.getId())
 | 
			
		||||
                    .eq(PlcNameSpace.TYPE,1));
 | 
			
		||||
                    .eq(PlcNameSpace.TYPE,0));
 | 
			
		||||
            String nameSpaceNote = nameSpace.getName();
 | 
			
		||||
            String result = readPlcToString(nameSpaceNote, "Working");
 | 
			
		||||
            Boolean resultBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
            //该炉子在工作中
 | 
			
		||||
            if (resultBoolean){
 | 
			
		||||
                Long kilnId = kilnInfo.getId();
 | 
			
		||||
                String identificationNumber = readPlcToString(nameSpaceNote, "Identification number");
 | 
			
		||||
                String identificationNumber = readPlcToString(nameSpaceNote, "DischargeIdentNumber");
 | 
			
		||||
                Long currTaskId = Long.valueOf(JSONObject.parseObject(identificationNumber).get("result").toString());
 | 
			
		||||
                //加工炉
 | 
			
		||||
                if (kilnInfo.getType()==1){
 | 
			
		||||
@@ -134,7 +135,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parRotSpeedValue.setOilStiSpeedAValue(oilStirringSpeed2.floatValue());
 | 
			
		||||
                    parRotSpeedValue.setKilnId(kilnId);
 | 
			
		||||
                    parRotSpeedValue.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parRotSpeedValue);
 | 
			
		||||
                    parRotSpeedValue.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parRotSpeedValueServiceBiz.save(parRotSpeedValue);
 | 
			
		||||
                    //氮气
 | 
			
		||||
                    Double nitrogenFlow = readPlc(nameSpaceNote, "NitrogenFlow");
 | 
			
		||||
@@ -157,7 +158,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parGasValue.setSetNitPotValue(setupCarbon.floatValue());
 | 
			
		||||
                    parGasValue.setKilnId(kilnId);
 | 
			
		||||
                    parGasValue.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parGasValue);
 | 
			
		||||
                    parGasValue.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parGasValueServiceBiz.save(parGasValue);
 | 
			
		||||
                }
 | 
			
		||||
                //氮化炉
 | 
			
		||||
@@ -175,7 +176,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    //氮气量
 | 
			
		||||
                    Double nitrogenFlow=readPlc(nameSpaceNote,"NitrogenFlow");
 | 
			
		||||
                    //二氧化碳量
 | 
			
		||||
                    Double carbonDioxideFlow = readPlc(nameSpaceNote, "CarbonDioxideFlow");
 | 
			
		||||
                    Double carbonDioxideFlow = readPlc(nameSpaceNote, "CO2Flow");
 | 
			
		||||
                    ParGasValue parGasValue3=new ParGasValue();
 | 
			
		||||
                    parGasValue3.setNitFlowValue(nitrogenFlow.floatValue());
 | 
			
		||||
                    parGasValue3.setAmmoniaFlowValue(ammoniaFlow.floatValue());
 | 
			
		||||
@@ -185,27 +186,29 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parGasValue3.setDecompositionRate(decompositionRate.floatValue());
 | 
			
		||||
                    parGasValue3.setKilnId(kilnId);
 | 
			
		||||
                    parGasValue3.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parGasValue3);
 | 
			
		||||
                    parGasValue3.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parGasValueServiceBiz.save(parGasValue3);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    //查询出正在加工的窑炉,遍历,根据采集频率的不同,采集低频数据能源消耗。
 | 
			
		||||
    //查询出正在加工的窑炉,遍历,根据采集频率的不同,采集低频数据能源消耗。暂定3分钟一次
 | 
			
		||||
    //@Scheduled(fixedDelay = 1000*60*3)
 | 
			
		||||
    public void getSlowValue(){
 | 
			
		||||
        System.out.println("开始采集数据");
 | 
			
		||||
        List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list();
 | 
			
		||||
        for (KilnInfo kilnInfo:kilnInfoList
 | 
			
		||||
             ) {
 | 
			
		||||
            PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_TYPE, 1)
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                    .eq(PlcNameSpace.EQ_ID, kilnInfo.getId())
 | 
			
		||||
                    .eq(PlcNameSpace.TYPE,1));
 | 
			
		||||
                    .eq(PlcNameSpace.TYPE,0));
 | 
			
		||||
            String nameSpaceNote = nameSpace.getName();
 | 
			
		||||
            String result = readPlcToString(nameSpaceNote, "Working");
 | 
			
		||||
            Boolean resultBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
            if (resultBoolean){
 | 
			
		||||
                Long kilnId = kilnInfo.getId();
 | 
			
		||||
                String identificationNumber = readPlcToString(nameSpaceNote, "Identification number");
 | 
			
		||||
                String identificationNumber = readPlcToString(nameSpaceNote, "DischargeIdentNumber");
 | 
			
		||||
                Long currTaskId = Long.valueOf(JSONObject.parseObject(identificationNumber).get("result").toString());
 | 
			
		||||
                //加工炉
 | 
			
		||||
                if (kilnInfo.getType()==1){
 | 
			
		||||
@@ -224,7 +227,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parTemValue.setOilTankActTemValue(actualOilTemp.floatValue());
 | 
			
		||||
                    parTemValue.setKilnId(kilnId);
 | 
			
		||||
                    parTemValue.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parTemValue);
 | 
			
		||||
                    parTemValue.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parTemValueServiceBiz.save(parTemValue);
 | 
			
		||||
                    //电度值
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote,"ElectricalValue");
 | 
			
		||||
@@ -239,7 +242,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parEleValue.setTotalBat(electricalValue.floatValue());
 | 
			
		||||
                    parEleValue.setKilnId(kilnId);
 | 
			
		||||
                    parEleValue.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parEleValue);
 | 
			
		||||
                    parEleValue.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parEleValueServiceBiz.save(parEleValue);
 | 
			
		||||
                }
 | 
			
		||||
                //回火炉
 | 
			
		||||
@@ -253,14 +256,14 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parTemValue2.setActTemValue(actualTemp.floatValue());
 | 
			
		||||
                    parTemValue2.setKilnId(kilnId);
 | 
			
		||||
                    parTemValue2.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parTemValue2);
 | 
			
		||||
                    parTemValue2.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parTemValueServiceBiz.save(parTemValue2);
 | 
			
		||||
                    //电度值
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote,"TotalElectricity");
 | 
			
		||||
                    //A向电压
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote,"PhaseAVoltage");
 | 
			
		||||
                    Double phaseBVoltage = readPlc(nameSpaceNote, "PhaseBVoltage");
 | 
			
		||||
                    Double phaseCVoltage = readPlc(nameSpaceNote, "PhaseCVoltage");
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote,"AVoltage");
 | 
			
		||||
                    Double phaseBVoltage = readPlc(nameSpaceNote, "BVoltage");
 | 
			
		||||
                    Double phaseCVoltage = readPlc(nameSpaceNote, "CVoltage");
 | 
			
		||||
                    ParEleValue parEleValue2=new ParEleValue();
 | 
			
		||||
                    parEleValue2.setAVoltagevValue(phaseAVoltage.floatValue());
 | 
			
		||||
                    parEleValue2.setAVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
@@ -268,7 +271,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parEleValue2.setTotalBat(electricalValue.floatValue());
 | 
			
		||||
                    parEleValue2.setKilnId(kilnId);
 | 
			
		||||
                    parEleValue2.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parEleValue2);
 | 
			
		||||
                    parEleValue2.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parEleValueServiceBiz.save(parEleValue2);
 | 
			
		||||
                }
 | 
			
		||||
                //氮化炉
 | 
			
		||||
@@ -291,7 +294,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parTemValue3.setFurnacePressure(furnacePressure.floatValue());
 | 
			
		||||
                    parTemValue3.setKilnId(kilnId);
 | 
			
		||||
                    parTemValue3.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parTemValue3);
 | 
			
		||||
                    parTemValue3.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parTemValueServiceBiz.save(parTemValue3);
 | 
			
		||||
                    //电度值
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote,"ElectricalValue");
 | 
			
		||||
@@ -306,7 +309,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parEleValue3.setTotalBat(electricalValue.floatValue());
 | 
			
		||||
                    parEleValue3.setKilnId(kilnId);
 | 
			
		||||
                    parEleValue3.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parEleValue3);
 | 
			
		||||
                    parEleValue3.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parEleValueServiceBiz.save(parEleValue3);
 | 
			
		||||
                }
 | 
			
		||||
                //清洗炉
 | 
			
		||||
@@ -314,9 +317,9 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    //电度值
 | 
			
		||||
                    Double electricalValue = readPlc(nameSpaceNote,"TotalElectricity");
 | 
			
		||||
                    //A向电压
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote,"PhaseAVoltage");
 | 
			
		||||
                    Double phaseBVoltage = readPlc(nameSpaceNote, "PhaseBVoltage");
 | 
			
		||||
                    Double phaseCVoltage = readPlc(nameSpaceNote, "PhaseCVoltage");
 | 
			
		||||
                    Double phaseAVoltage = readPlc(nameSpaceNote,"AVoltage");
 | 
			
		||||
                    Double phaseBVoltage = readPlc(nameSpaceNote, "BVoltage");
 | 
			
		||||
                    Double phaseCVoltage = readPlc(nameSpaceNote, "CVoltage");
 | 
			
		||||
                    ParEleValue parEleValue4=new ParEleValue();
 | 
			
		||||
                    parEleValue4.setAVoltagevValue(phaseAVoltage.floatValue());
 | 
			
		||||
                    parEleValue4.setAVoltagevValue(phaseBVoltage.floatValue());
 | 
			
		||||
@@ -324,42 +327,56 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
                    parEleValue4.setTotalBat(electricalValue.floatValue());
 | 
			
		||||
                    parEleValue4.setKilnId(kilnId);
 | 
			
		||||
                    parEleValue4.setTaskId(currTaskId);
 | 
			
		||||
                    setCommonField(parEleValue4);
 | 
			
		||||
                    parEleValue4.setCreateTime(LocalDateTime.now());
 | 
			
		||||
                    parEleValueServiceBiz.save(parEleValue4);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        System.out.println("采集完成");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //遍历窑炉,空窑炉查询缓存区是否有等待加工的任务,
 | 
			
		||||
    //待加工任务存在且没有状态为正在进炉的情况下,按照先进先出的规则选择待加工任务呼叫车辆进炉
 | 
			
		||||
    //@Scheduled(fixedDelay = 1000*10)
 | 
			
		||||
    public void runTaskForEmptyKiln() throws IOException {
 | 
			
		||||
        List<KilnInfo> kilnInfoList = kilnInfoServiceBiz.list(new QueryWrapper<KilnInfo>()
 | 
			
		||||
                .eq(KilnInfo.VALID, 1).eq(KilnInfo.STATUS, 0));
 | 
			
		||||
        // 呼叫车辆运送货物给炉子
 | 
			
		||||
        //存在空闲窑炉
 | 
			
		||||
        if (kilnInfoList.size()!=0){
 | 
			
		||||
            //缓存去是否有目标位置为窑炉的待加工任务
 | 
			
		||||
            KilnInfo kilnInfo = kilnInfoList.get(0);
 | 
			
		||||
            List<InStockInfo> inStockInfoList = inStockInfoServiceBiz.list(new QueryWrapper<InStockInfo>()
 | 
			
		||||
                    .eq(InStockInfo.TYPE, 1)
 | 
			
		||||
                    .eq(InStockInfo.KILN_ID, kilnInfo.getId())
 | 
			
		||||
                    .orderByAsc(InStockInfo.IN_TIME));
 | 
			
		||||
            if (inStockInfoList.size()>0){
 | 
			
		||||
                InStockInfo inStockInfo = inStockInfoList.get(0);
 | 
			
		||||
                CurrTask currTask = currTaskServiceBiz.getById(inStockInfo.getTaskId());
 | 
			
		||||
                Location location = locationServiceBiz.getById(inStockInfo.getLocationId());
 | 
			
		||||
                //是否有小车在运行
 | 
			
		||||
                List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 1));
 | 
			
		||||
                //两辆车同时空闲(其中一辆车在运行时,不能调度另一辆车,防止运行中路线冲突)
 | 
			
		||||
                if (vehicleInfoList.size()==0){
 | 
			
		||||
                    //计算出路径最短的车辆id
 | 
			
		||||
                    Long vehicleId = taskDistanceUtils.chooseVehicle(location.getCode(), kilnInfo.getCode());
 | 
			
		||||
                    //占用车辆
 | 
			
		||||
                    VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
                    vehicleInfo.setStatus(1);
 | 
			
		||||
                    vehicleInfo.setUpdateTime(LocalDateTime.now());
 | 
			
		||||
                    vehicleInfoServiceBiz.updateById(vehicleInfo);
 | 
			
		||||
                    asynRunTaskService.asynRunTaskForStockToKiln(inStockInfo.getId(),vehicleId);
 | 
			
		||||
        if (kilnInfoList.size()!=0) {
 | 
			
		||||
            for (KilnInfo kilnInfo:kilnInfoList
 | 
			
		||||
                 ) {
 | 
			
		||||
                //查询是否有车辆正在执行任务,如果有,等。(根据车辆是否正在运行可以避免出现前一个任务获取还没进去炉子,炉子状态依然为allowIn,从而继续发送任务的情况)
 | 
			
		||||
                List<VehicleInfo> vehicleInfos = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 1));
 | 
			
		||||
                if (vehicleInfos.size()>0){
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                //查询炉子是否allowIn
 | 
			
		||||
                Boolean kilnAllowIn = kilnAllowIn(kilnInfo.getId());
 | 
			
		||||
                if (kilnAllowIn){
 | 
			
		||||
                    //缓存去是否有目标位置为窑炉的待加工任务
 | 
			
		||||
                    List<InStockInfo> inStockInfoList = inStockInfoServiceBiz.list(new QueryWrapper<InStockInfo>()
 | 
			
		||||
                            .eq(InStockInfo.TYPE, 1)
 | 
			
		||||
                            .eq(InStockInfo.KILN_ID, kilnInfo.getId())
 | 
			
		||||
                            .orderByAsc(InStockInfo.IN_TIME));
 | 
			
		||||
                    if (inStockInfoList.size() > 0) {
 | 
			
		||||
                        InStockInfo inStockInfo = inStockInfoList.get(0);
 | 
			
		||||
                        CurrTask currTask = currTaskServiceBiz.getById(inStockInfo.getTaskId());
 | 
			
		||||
                        Location location = locationServiceBiz.getById(inStockInfo.getLocationId());
 | 
			
		||||
                        //是否有小车在运行
 | 
			
		||||
                        List<VehicleInfo> vehicleInfoList = vehicleInfoServiceBiz.list(new QueryWrapper<VehicleInfo>().eq(VehicleInfo.STATUS, 1));
 | 
			
		||||
                        //两辆车同时空闲(其中一辆车在运行时,不能调度另一辆车,防止运行中路线冲突)
 | 
			
		||||
                        if (vehicleInfoList.size() == 0) {
 | 
			
		||||
                            //计算出路径最短的车辆id
 | 
			
		||||
                            Long vehicleId = taskDistanceUtils.chooseVehicle(location.getCode(), kilnInfo.getCode());
 | 
			
		||||
                            //占用车辆
 | 
			
		||||
                            VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
                            vehicleInfo.setStatus(1);
 | 
			
		||||
                            vehicleInfo.setUpdateTime(LocalDateTime.now());
 | 
			
		||||
                            vehicleInfoServiceBiz.updateById(vehicleInfo);
 | 
			
		||||
                            asynRunTaskService.asynRunTaskForStockToKiln(inStockInfo.getId(), vehicleId);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -446,11 +463,12 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
        json.put("identifier",identifier);
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("readPLC: "+identifier+" 的值失败");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return result;
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
@@ -467,7 +485,7 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
        json.put("identifier",identifier);
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("能源消耗统计:获取 "+identifier+" 的值失败");
 | 
			
		||||
@@ -475,32 +493,14 @@ public class ScheduledTask extends BaseService {
 | 
			
		||||
        return Double.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Boolean rgvOnline(Long vehicleId) throws IOException {
 | 
			
		||||
        VehicleInfo vehicleInfo = vehicleInfoServiceBiz.getById(vehicleId);
 | 
			
		||||
        // TODO: 2022/3/19 小车的命名空间
 | 
			
		||||
        String identifier=null;
 | 
			
		||||
        if (vehicleId==1){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.Platform4ToWCS.";
 | 
			
		||||
        }
 | 
			
		||||
        if (vehicleId==2){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.Platform4ToWCS.";
 | 
			
		||||
        }
 | 
			
		||||
        Map<String, Object> json = new HashMap();
 | 
			
		||||
        json.put("nameSpace", 6);
 | 
			
		||||
        json.put("plcName", "plc1");
 | 
			
		||||
        json.put("identifier",identifier+"Online");
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("获取小车1当前是否在线失败");
 | 
			
		||||
        }
 | 
			
		||||
        Boolean aBoolean = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
        if (!aBoolean){
 | 
			
		||||
            webSocketServer.sendtoAll(vehicleInfo.getVehicleName()+"当前不在线,请人工确认车辆状态,如不能恢复未在线状态,请尽快手动移动车辆到轨道尽头,以避免车辆阻碍任务执行!");
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
    private Boolean kilnAllowIn(Long kilnId){
 | 
			
		||||
        PlcNameSpace nameSpace = plcNameSpaceServiceBiz.getOne(new QueryWrapper<PlcNameSpace>()
 | 
			
		||||
                .eq(PlcNameSpace.EQ_TYPE, 0)
 | 
			
		||||
                .eq(PlcNameSpace.EQ_ID, kilnId)
 | 
			
		||||
                .eq(PlcNameSpace.TYPE,0));
 | 
			
		||||
        String nameSpaceNote = nameSpace.getName();
 | 
			
		||||
        String result = readPlcToString(nameSpaceNote, "AllowIn");
 | 
			
		||||
        return Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
 | 
			
		||||
import com.alibaba.fastjson.JSONObject;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
			
		||||
import com.mt.wms.core.dal.entity.PointInfo;
 | 
			
		||||
import com.mt.wms.core.dal.entity.VehicleInfo;
 | 
			
		||||
import com.mt.wms.core.dal.service.PointInfoServiceBiz;
 | 
			
		||||
import com.mt.wms.core.utils.HttpClient;
 | 
			
		||||
import org.slf4j.Logger;
 | 
			
		||||
@@ -35,15 +36,47 @@ public class TaskDistanceUtils {
 | 
			
		||||
     * @param endPoint 终点
 | 
			
		||||
     * @return 路径最短的小车id
 | 
			
		||||
     */
 | 
			
		||||
    public  Long chooseVehicle(String startPoint,String endPoint){
 | 
			
		||||
        Double startDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.CODE, startPoint)).getDistance();
 | 
			
		||||
    public  Long chooseVehicle(String startPoint,String endPoint) throws IOException {
 | 
			
		||||
        //车辆是否在线,若不在线,返回在线的那一辆,都不在线返回0
 | 
			
		||||
        if (!rgvOnline(1L)){
 | 
			
		||||
 | 
			
		||||
            //液压台4 和 1号回火炉只能调用车辆1
 | 
			
		||||
            if ("BMC1".equals(startPoint)||"BMC1".equals(endPoint)||"YYT004".equals(startPoint)||"YYT004".equals(endPoint)){
 | 
			
		||||
                return 0L;
 | 
			
		||||
            }
 | 
			
		||||
            if (!rgvOnline(2L)){
 | 
			
		||||
                return 0L;
 | 
			
		||||
            }
 | 
			
		||||
            return 2L;
 | 
			
		||||
        }
 | 
			
		||||
        if (!rgvOnline(2L)){
 | 
			
		||||
 | 
			
		||||
            //3-4号回火炉只能调用车辆2
 | 
			
		||||
            if ("BMC3".equals(startPoint)||"BMC3".equals(endPoint)||"BMC4".equals(startPoint)||"BMC4".equals(endPoint)){
 | 
			
		||||
                return 0L;
 | 
			
		||||
            }
 | 
			
		||||
            if (!rgvOnline(1L)){
 | 
			
		||||
                return 0L;
 | 
			
		||||
            }
 | 
			
		||||
            return 1L;
 | 
			
		||||
        }
 | 
			
		||||
        //3-4号回火炉只能调用车辆2
 | 
			
		||||
        if ("BMC3".equals(startPoint)||"BMC3".equals(endPoint)||"BMC4".equals(startPoint)||"BMC4".equals(endPoint)){
 | 
			
		||||
            return 2L;
 | 
			
		||||
        }
 | 
			
		||||
        //液压台4 和 1号回火炉只能调用车辆1
 | 
			
		||||
        if ("BMC1".equals(startPoint)||"BMC1".equals(endPoint)||"YYT004".equals(startPoint)||"YYT004".equals(endPoint)){
 | 
			
		||||
            return 1L;
 | 
			
		||||
        }
 | 
			
		||||
        Double startDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, startPoint)).getDistance();
 | 
			
		||||
        //  2022/2/19  两辆小车都空闲,获取出当前位置
 | 
			
		||||
        Double rgv1CurrPosition = RGVCurrPosition(1L);
 | 
			
		||||
        Double rgv2CurrPosition = RGVCurrPosition(2L);
 | 
			
		||||
        //计算空闲小车当前位置到起点的距离
 | 
			
		||||
        Double vehicle1Distance = Math.abs(startDistance - rgv1CurrPosition);
 | 
			
		||||
        Double vehicle2Distance = Math.abs(startDistance - rgv2CurrPosition);
 | 
			
		||||
        return (vehicle1Distance< vehicle2Distance)?1L:2L;
 | 
			
		||||
        return  (vehicle1Distance < vehicle2Distance) ? 1L : 2L;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    /**
 | 
			
		||||
     * 计算执行任务的小车本次任务的剩余路径经过的点位集合
 | 
			
		||||
@@ -67,9 +100,12 @@ public class TaskDistanceUtils {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //判断小车是否冲突,传入选定小车的id,任务起终点,另一小车位置。
 | 
			
		||||
    public Boolean conflictForVehicle(Long vehicleId,String startPoint,String endPoint,Double otherNowPosition){
 | 
			
		||||
        Double startDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.CODE, startPoint)).getDistance();
 | 
			
		||||
        Double endDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.CODE, endPoint)).getDistance();
 | 
			
		||||
    public Boolean conflictForVehicle(Long vehicleId,String startPoint,String endPoint,Double otherNowPosition) throws IOException {
 | 
			
		||||
        if (!rgvOnline(1L)||!rgvOnline(2L)){
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        Double startDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, startPoint)).getDistance();
 | 
			
		||||
        Double endDistance = pointInfoServiceBiz.getOne(new QueryWrapper<PointInfo>().eq(PointInfo.NOTE, endPoint)).getDistance();
 | 
			
		||||
        //获取点位list
 | 
			
		||||
        List<PointInfo> pointInfoList = pointInfoServiceBiz.list(new QueryWrapper<PointInfo>().orderByAsc(PointInfo.ID));
 | 
			
		||||
        // 2022/2/19  获取小车当前位置
 | 
			
		||||
@@ -108,11 +144,41 @@ public class TaskDistanceUtils {
 | 
			
		||||
        }
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://localhost:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("获取RGV的当前位置失败");
 | 
			
		||||
        }
 | 
			
		||||
        return Double.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
        Double value = Double.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
        return value*0.0001;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 车辆是否在线
 | 
			
		||||
     * @param vehicleId 车辆id
 | 
			
		||||
     * @return true/false
 | 
			
		||||
     * @throws IOException  plc访问失败
 | 
			
		||||
     */
 | 
			
		||||
    private Boolean rgvOnline(Long vehicleId) throws IOException {
 | 
			
		||||
        String identifier=null;
 | 
			
		||||
        if (vehicleId==1){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV1ToWCS.Online";
 | 
			
		||||
        }
 | 
			
		||||
        if (vehicleId==2){
 | 
			
		||||
            identifier="S7-1200 station_2.Boutique.DB500_PLCToWCS.RGV2ToWCS.Online";
 | 
			
		||||
        }
 | 
			
		||||
        Map<String, Object> json = new HashMap();
 | 
			
		||||
        json.put("nameSpace", 6);
 | 
			
		||||
        json.put("plcName", "plc1");
 | 
			
		||||
        json.put("identifier",identifier);
 | 
			
		||||
        String result = null;
 | 
			
		||||
        try {
 | 
			
		||||
            result = HttpClient.httpPost("http://192.168.6.51:8009/opcua/read", JSON.toJSONString(json));
 | 
			
		||||
        } catch (IOException e) {
 | 
			
		||||
            e.printStackTrace();
 | 
			
		||||
            logger.info("获取车辆"+vehicleId+"当前是否在线失败");
 | 
			
		||||
        }
 | 
			
		||||
        Boolean online = Boolean.valueOf(JSONObject.parseObject(result).get("result").toString());
 | 
			
		||||
        return online;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -13,14 +13,14 @@ spring:
 | 
			
		||||
    date-format: yyyy-MM-dd HH:mm:ss
 | 
			
		||||
    time-zone: GMT+8
 | 
			
		||||
    default-property-inclusion: non_null
 | 
			
		||||
  redis:
 | 
			
		||||
  #redis:
 | 
			
		||||
    #    cluster:
 | 
			
		||||
    #      nodes:
 | 
			
		||||
    #      - localhost:6379
 | 
			
		||||
    host: @spring.redis.host@
 | 
			
		||||
    port: @spring.redis.port@
 | 
			
		||||
    password: @spring.redis.password@
 | 
			
		||||
    database: @spring.redis.database@
 | 
			
		||||
    #host: @spring.redis.host@
 | 
			
		||||
    #port: @spring.redis.port@
 | 
			
		||||
    #password: @spring.redis.password@
 | 
			
		||||
    #database: @spring.redis.database@
 | 
			
		||||
 | 
			
		||||
  #开发工具
 | 
			
		||||
  devtools:
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,212 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<configuration>
 | 
			
		||||
    <include resource="org/springframework/boot/logging/logback/base.xml"/>
 | 
			
		||||
    <logger name="com.mt.wms.gateway" level="DEBUG"/>
 | 
			
		||||
    <jmxConfigurator/>
 | 
			
		||||
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
 | 
			
		||||
<!-- scan:当此属性设置为true时,配置文档如果发生改变,将会被重新加载,默认值为true -->
 | 
			
		||||
<!-- scanPeriod:设置监测配置文档是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。
 | 
			
		||||
                 当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
 | 
			
		||||
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
 | 
			
		||||
<configuration  scan="true" scanPeriod="10 seconds">
 | 
			
		||||
    <contextName>logback-spring</contextName>
 | 
			
		||||
 | 
			
		||||
    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义后,可以使“${}”来使用变量。 -->
 | 
			
		||||
 | 
			
		||||
    <property name="logging.pathwork" value="D:/logger/qj_wms" />
 | 
			
		||||
 | 
			
		||||
    <!--0. 日志格式和颜色渲染 -->
 | 
			
		||||
    <!-- 彩色日志依赖的渲染类 -->
 | 
			
		||||
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
 | 
			
		||||
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
 | 
			
		||||
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
 | 
			
		||||
    <!-- 彩色日志格式 -->
 | 
			
		||||
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
 | 
			
		||||
 | 
			
		||||
    <!--1. 输出到控制台-->
 | 
			
		||||
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
 | 
			
		||||
        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
 | 
			
		||||
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
 | 
			
		||||
            <level>debug</level>
 | 
			
		||||
        </filter>
 | 
			
		||||
        <encoder>
 | 
			
		||||
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
 | 
			
		||||
            <!-- 设置字符集 -->
 | 
			
		||||
            <charset>UTF-8</charset>
 | 
			
		||||
        </encoder>
 | 
			
		||||
    </appender>
 | 
			
		||||
 | 
			
		||||
    <!--2. 输出到文档-->
 | 
			
		||||
    <!-- 2.1 level为 DEBUG 日志,时间滚动输出  -->
 | 
			
		||||
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
			
		||||
        <!-- 正在记录的日志文档的路径及文档名 -->
 | 
			
		||||
        <file>${logging.pathwork}/debug/work-log-debug.log</file>
 | 
			
		||||
        <!--日志文档输出格式-->
 | 
			
		||||
        <encoder>
 | 
			
		||||
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
 | 
			
		||||
            <charset>UTF-8</charset> <!-- 设置字符集 -->
 | 
			
		||||
        </encoder>
 | 
			
		||||
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
 | 
			
		||||
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
			
		||||
            <!-- rollover daily -->
 | 
			
		||||
            <fileNamePattern>${logging.pathwork}/work-log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
 | 
			
		||||
            <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
 | 
			
		||||
            <maxFileSize>100MB</maxFileSize>
 | 
			
		||||
            <maxHistory>999</maxHistory>
 | 
			
		||||
            <totalSizeCap>200GB</totalSizeCap>
 | 
			
		||||
        </rollingPolicy>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        <!-- 此日志文档只记录debug级别的 -->
 | 
			
		||||
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
 | 
			
		||||
            <level>debug</level>
 | 
			
		||||
            <onMatch>ACCEPT</onMatch>
 | 
			
		||||
            <onMismatch>DENY</onMismatch>
 | 
			
		||||
        </filter>
 | 
			
		||||
    </appender>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <!-- 2.2 level为 INFO 日志,时间滚动输出  -->
 | 
			
		||||
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
			
		||||
        <!-- 正在记录的日志文档的路径及文档名 -->
 | 
			
		||||
        <file>${logging.pathwork}/info/work-log-info.log</file>
 | 
			
		||||
        <!--日志文档输出格式-->
 | 
			
		||||
        <encoder>
 | 
			
		||||
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
 | 
			
		||||
            <charset>UTF-8</charset>
 | 
			
		||||
        </encoder>
 | 
			
		||||
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
 | 
			
		||||
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
			
		||||
            <!-- rollover daily -->
 | 
			
		||||
            <fileNamePattern>${logging.pathwork}/work-log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
 | 
			
		||||
            <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
 | 
			
		||||
            <maxFileSize>100MB</maxFileSize>
 | 
			
		||||
            <maxHistory>999</maxHistory>
 | 
			
		||||
            <totalSizeCap>200GB</totalSizeCap>
 | 
			
		||||
        </rollingPolicy>
 | 
			
		||||
        <!-- 此日志文档只记录info级别的 -->
 | 
			
		||||
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
 | 
			
		||||
            <level>info</level>
 | 
			
		||||
            <onMatch>ACCEPT</onMatch>
 | 
			
		||||
            <onMismatch>DENY</onMismatch>
 | 
			
		||||
        </filter>
 | 
			
		||||
    </appender>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <!-- 2.3 level为 WARN 日志,时间滚动输出  -->
 | 
			
		||||
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
			
		||||
        <!-- 正在记录的日志文档的路径及文档名 -->
 | 
			
		||||
        <file>${logging.pathwork}/warn/work-log-warn.log</file>
 | 
			
		||||
        <!--日志文档输出格式-->
 | 
			
		||||
        <encoder>
 | 
			
		||||
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
 | 
			
		||||
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
 | 
			
		||||
        </encoder>
 | 
			
		||||
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
 | 
			
		||||
        <!--        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
 | 
			
		||||
        <!--            <fileNamePattern>${logging.pathwork}/work-log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>-->
 | 
			
		||||
        <!--            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">-->
 | 
			
		||||
        <!--                <maxFileSize>100MB</maxFileSize>-->
 | 
			
		||||
        <!--            </timeBasedFileNamingAndTriggeringPolicy>-->
 | 
			
		||||
        <!--            <!–日志文档保留天数–>-->
 | 
			
		||||
        <!--            <maxHistory>999</maxHistory>-->
 | 
			
		||||
        <!--        </rollingPolicy>-->
 | 
			
		||||
 | 
			
		||||
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
			
		||||
            <!-- rollover daily -->
 | 
			
		||||
            <fileNamePattern>${logging.pathwork}/work-log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
 | 
			
		||||
            <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
 | 
			
		||||
            <maxFileSize>100MB</maxFileSize>
 | 
			
		||||
            <maxHistory>999</maxHistory>
 | 
			
		||||
            <totalSizeCap>200GB</totalSizeCap>
 | 
			
		||||
        </rollingPolicy>
 | 
			
		||||
        <!-- 此日志文档只记录warn级别的 -->
 | 
			
		||||
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
 | 
			
		||||
            <level>warn</level>
 | 
			
		||||
            <onMatch>ACCEPT</onMatch>
 | 
			
		||||
            <onMismatch>DENY</onMismatch>
 | 
			
		||||
        </filter>
 | 
			
		||||
    </appender>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <!-- 2.4 level为 ERROR 日志,时间滚动输出  -->
 | 
			
		||||
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
 | 
			
		||||
        <!-- 正在记录的日志文档的路径及文档名 -->
 | 
			
		||||
        <file>${logging.pathwork}/error/work-log-error.log</file>
 | 
			
		||||
        <!--日志文档输出格式-->
 | 
			
		||||
        <encoder>
 | 
			
		||||
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
 | 
			
		||||
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
 | 
			
		||||
        </encoder>
 | 
			
		||||
        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
 | 
			
		||||
        <!--        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">-->
 | 
			
		||||
        <!--            <fileNamePattern>${logging.pathwork}/work-log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>-->
 | 
			
		||||
        <!--            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">-->
 | 
			
		||||
        <!--                <maxFileSize>100MB</maxFileSize>-->
 | 
			
		||||
        <!--            </timeBasedFileNamingAndTriggeringPolicy>-->
 | 
			
		||||
        <!--            <!–日志文档保留天数–>-->
 | 
			
		||||
        <!--            <maxHistory>999</maxHistory>-->
 | 
			
		||||
        <!--        </rollingPolicy>-->
 | 
			
		||||
 | 
			
		||||
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
 | 
			
		||||
            <!-- rollover daily -->
 | 
			
		||||
            <fileNamePattern>${logging.pathwork}/work-log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
 | 
			
		||||
            <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
 | 
			
		||||
            <maxFileSize>100MB</maxFileSize>
 | 
			
		||||
            <maxHistory>999</maxHistory>
 | 
			
		||||
            <totalSizeCap>200GB</totalSizeCap>
 | 
			
		||||
        </rollingPolicy>
 | 
			
		||||
 | 
			
		||||
        <!-- 此日志文档只记录ERROR级别的 -->
 | 
			
		||||
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
 | 
			
		||||
            <level>ERROR</level>
 | 
			
		||||
            <onMatch>ACCEPT</onMatch>
 | 
			
		||||
            <onMismatch>DENY</onMismatch>
 | 
			
		||||
        </filter>
 | 
			
		||||
    </appender>
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
 | 
			
		||||
        以及指定<appender>。<logger>仅有一个name属性,
 | 
			
		||||
        一个可选的level和一个可选的addtivity属性。
 | 
			
		||||
        name:用来指定受此logger约束的某一个包或者具体的某一个类。
 | 
			
		||||
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
 | 
			
		||||
              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
 | 
			
		||||
              如果未设置此属性,那么当前logger将会继承上级的级别。
 | 
			
		||||
        addtivity:是否向上级logger传递打印信息。默认是true。
 | 
			
		||||
        <logger name="org.springframework.web" level="info"/>
 | 
			
		||||
        <logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
 | 
			
		||||
        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
 | 
			
		||||
        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
 | 
			
		||||
        【logging.level.org.mybatis=debug logging.level.dao=debug】
 | 
			
		||||
     -->
 | 
			
		||||
 | 
			
		||||
    <!--
 | 
			
		||||
        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
 | 
			
		||||
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
 | 
			
		||||
        不能设置为INHERITED或者同义词NULL。默认是DEBUG
 | 
			
		||||
        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
 | 
			
		||||
    -->
 | 
			
		||||
 | 
			
		||||
    <!-- name就是包名,这个包下的 所有logger 输出就以下配置 -->
 | 
			
		||||
 | 
			
		||||
    <root level="info">
 | 
			
		||||
        <appender-ref ref="CONSOLE" />
 | 
			
		||||
        <appender-ref ref="DEBUG_FILE" />
 | 
			
		||||
        <appender-ref ref="INFO_FILE" />
 | 
			
		||||
        <appender-ref ref="WARN_FILE" />
 | 
			
		||||
        <appender-ref ref="ERROR_FILE" />
 | 
			
		||||
    </root>
 | 
			
		||||
 | 
			
		||||
    <!-- 4.2 生产环境:输出到文档
 | 
			
		||||
    <springProfile name="pro">
 | 
			
		||||
        <root level="info">
 | 
			
		||||
            <appender-ref ref="CONSOLE" />
 | 
			
		||||
            <appender-ref ref="DEBUG_FILE" />
 | 
			
		||||
            <appender-ref ref="INFO_FILE" />
 | 
			
		||||
            <appender-ref ref="ERROR_FILE" />
 | 
			
		||||
            <appender-ref ref="WARN_FILE" />
 | 
			
		||||
        </root>
 | 
			
		||||
    </springProfile> -->
 | 
			
		||||
</configuration>
 | 
			
		||||
		Reference in New Issue
	
	Block a user