Commit 3adba2a3 authored by Georgios Dagkakis's avatar Georgios Dagkakis

new model added so that user in CapacityStations can define what is completed....

new model added so that user in CapacityStations can define what is completed. Plugin added, not fully functional
parent 1b864880
from dream.plugins import plugin
class ChangeWIPSpreadsheet(plugin.InputPreparationPlugin):
""" Input prepration
if the wip is given based on what is completed use this plugin to calculate what is needed and update the spreadsheet.
"""
def preprocess(self, data):
projectData=data['input'].get('projects_spreadsheet', None)
# find the column where the WIP is given
i=0
for element in projectData[0]:
if element=='WIP':
wipColumn=i
break
i+=1
from pprint import pprint
if projectData:
alreadyConsideredProjects=[]
for row in range(1, len(projectData)):
if projectData[row][0] and not (projectData[row][0] in alreadyConsideredProjects):
projectId=projectData[row][0]
alreadyConsideredProjects.append(projectData[row][0])
numberOfOperations=1
i=1
# if the id changes or is empty it means there is no more data on the project
while (not projectData[row+i][0]) or (projectData[row+i][0]==projectId):
# if a completely empty line is found break
if all(v in [None, ''] for v in projectData[row+i]):
break
numberOfOperations+=1
i+=1
# for every operation get the wip and define it
completedCapacityDict={}
requiredCapacityDict={}
for stationRecord in range(numberOfOperations):
stationId=projectData[row+stationRecord][4]
completedCapacity=float(projectData[row+stationRecord][wipColumn])
requiredCapacity=float(projectData[row+stationRecord][5])
completedCapacityDict[stationId]=completedCapacity
requiredCapacityDict[stationId]=requiredCapacity
# print '------------',projectId
# pprint(completedCapacityDict)
wipDict=self.calculateWIPDict(data, completedCapacityDict,requiredCapacityDict)
print '------------',projectId
for stationRecord in range(numberOfOperations):
stationId=projectData[row+stationRecord][4]
projectData[row+stationRecord][wipColumn]=wipDict[stationId]
pprint(wipDict)
return data
# gets the dict that shows the completed capacities and returns the one with the actual wip
def calculateWIPDict(self,data,completedCapacityDict,requiredCapacityDict):
wipDict={}
for stationId, completedCapacity in completedCapacityDict.iteritems():
if self.checkIfStationIsFirst(data, stationId):
wipDict[stationId]=requiredCapacityDict[stationId]-completedCapacityDict[stationId]
else:
wipDict[stationId]=0
return wipDict
# returns True if the station has no predecessors
def checkIfStationIsFirst(self,data,stationId):
previous=self.getPredecessors(data, stationId)
if previous:
return False
return True
\ No newline at end of file
{
"application_configuration": {
"general": {
"properties": {
"assemblySpace": {
"default": 100,
"description": "Total assembly Space in square meters",
"title": "Assembly Space",
"type": "number"
},
"confidenceLevel": {
"default": 0.95,
"description": "Confidence level for statistical analysis of stochastic experiments",
"title": "Confidence level",
"type": "number"
},
"currentDate": {
"default": "2014/10/01",
"description": "The day the experiment starts, in YYYY/MM/DD format",
"title": "SimulationStartTime",
"type": "string"
},
"ke_url": {
"default": "http: //git.erp5.org/gitweb/dream.git/blob_plain/HEAD: /dream/KnowledgeExtraction/Mockup_Processingtimes.xls",
"description": "The URL for knowledge extraction to access its data for example http: //git.erp5.org/gitweb/dream.git/blob_plain/HEAD: /dream/KnowledgeExtraction/Mockup_Processingtimes.xls",
"title": "URL for Knowledge Extraction Spreadsheet",
"type": "string"
},
"maxSimTime": {
"default": 100,
"description": "Length of the simulation run",
"title": "Length of Experiment",
"type": "number"
},
"numberOfReplications": {
"default": 10,
"description": "Number of replications to run",
"title": "Number of replications",
"type": "integer"
},
"processTimeout": {
"default": 10,
"description": "Number of seconds before the calculation process is interrupted",
"title": "ProcessTimeout",
"type": "number"
},
"seed": {
"default": "1",
"description": "When using the same seed, the random number generator produce the same sequence of numbers",
"title": "Seed for random number generator",
"type": "number"
},
"timeUnit": {
"default": "day",
"description": "Used for input and reporting widgets.",
"enum": [
"minute",
"hour",
"day",
"week",
"month",
"year"
],
"name": "Time unit",
"type": "string"
},
"trace": {
"default": "No",
"description": "Create an excel trace file (Yes or No)",
"enum": [
"No",
"Yes"
],
"title": "OutputTrace",
"type": "string"
}
}
},
"input": {
"debug": {
"gadget": "Input_viewDebugJson",
"title": "Edit Configuration",
"type": "object_view"
},
"view": {
"gadget": "Input_viewProductionLine",
"title": "ProductionLine",
"type": "object_view"
},
"view_available_capacity_spreadsheet": {
"configuration": {
"columns": [
{
"format": "date-time",
"name": "Day",
"type": "string"
},
{
"name": "Station 1 (Rename)",
"type": "string"
},
{
"name": "Station 2 (Rename)",
"type": "string"
}
],
"extend": [
"x",
"y"
],
"handsontable_options": {
"minSpareCols": 1
}
},
"gadget": "Input_viewSpreadsheet",
"title": "Available Capacity Spreadsheet",
"type": "object_view"
},
"view_management": {
"gadget": "Input_viewDocumentManagement",
"title": "Manage document",
"type": "object_view"
},
"view_projects_spreadsheet": {
"configuration": {
"columns": [
{
"name": "Project ID",
"type": "string"
},
{
"format": "date",
"name": "Order Date",
"type": "string"
},
{
"format": "date",
"name": "Due Date",
"type": "string"
},
{
"name": "Assembly Space",
"type": "number"
},
{
"name": "Operation",
"type": "string"
},
{
"name": "Capacity Requirement",
"type": "number"
},
{
"name": "WIP",
"type": "number"
},
{
"format": "date",
"name": "Earliest Start Date",
"type": "string"
}
],
"extend": [
"y"
]
},
"gadget": "Input_viewSpreadsheet",
"title": "Projects Spreadsheet",
"type": "object_view"
},
"view_result": {
"gadget": "Input_viewResultList",
"title": "Results",
"type": "object_view"
},
"view_run_simulation": {
"gadget": "Input_viewSimulation",
"title": "Run Simulation",
"type": "object_view"
}
},
"output": {
"view_project_gantt": {
"configuration": {
"output_id": "capacity_project_gantt"
},
"gadget": "Output_viewGantt",
"title": "Project Schedule",
"type": "object_view"
},
"view_station_gantt": {
"configuration": {
"output_id": "capacity_station_gantt"
},
"gadget": "Output_viewGantt",
"title": "Station Schedule",
"type": "object_view"
},
"view_station_utilization": {
"configuration": {
"output_id": "station_utilization"
},
"gadget": "Output_viewGraph",
"title": "Station Utilization",
"type": "object_view"
}
},
"post_processing": {
"plugin_list": [
{
"_class": "dream.plugins.CapacityStations.CapacityProjectStationUtilization.CapacityProjectStationUtilization",
"family": "CapacityStation",
"output_id": "station_utilization"
},
{
"_class": "dream.plugins.CapacityStations.CapacityProjectGantt.CapacityProjectGantt",
"output_id": "capacity_project_gantt"
},
{
"_class": "dream.plugins.CapacityStations.CapacityStationGantt.CapacityStationGantt",
"output_id": "capacity_station_gantt"
}
]
},
"pre_processing": {
"plugin_list": [
{
"_class": "dream.plugins.CapacityStations.ChangeWIPSpreadsheet.ChangeWIPSpreadsheet",
"input_id": "createCapacityStationWIP"
},
{
"_class": "dream.plugins.CapacityStations.CapacityStationsSetAssemblySpace.CapacityStationsSetAssemblySpace",
"input_id": "assemblySpace"
},
{
"_class": "dream.plugins.CapacityStations.AvailableCapacitySpreadsheet.AvailableCapacitySpreadsheet",
"input_id": "availableCapacity"
},
{
"_class": "dream.plugins.CapacityStations.CapacityProjectSpreadsheet.CapacityProjectSpreadsheet",
"input_id": "capacityProject"
},
{
"_class": "dream.plugins.CapacityStations.CreateCapacityStations.CreateCapacityStations",
"input_id": "createCapacityStations"
},
{
"_class": "dream.plugins.CapacityStations.CapacityStationWIP.CapacityStationWIP",
"input_id": "createCapacityStationWIP"
}
]
},
"processing_plugin": {
"_class": "dream.plugins.plugin.DefaultExecutionPlugin",
"input_id": "Simulation"
}
},
"class_definition": {
"Dream.Edge": {
"_class": "edge",
"allOf": [
{
"$ref": "#/class_defintion/edge"
}
],
"description": "Connect stations together"
},
"definitions": {
"_capacity": {
"default": 1,
"description": "capacity of the queue. -1 means infinite",
"oneOf": [
{
"enum": [
-1
]
},
{
"multipleOf": 1
}
],
"type": "number"
},
"_dist": {
"allOf": [
{
"properties": {
"distribution": {
"default": "Fixed",
"enum": [
"Fixed",
"Exp",
"Normal",
"Lognormal",
"Binomial",
"Poisson",
"Logistic",
"Cauchy",
"Geometric",
"Gama",
"Weibull"
],
"type": "string"
}
},
"type": "object"
},
{
"oneOf": [
{
"$ref": "#/definitions/distributionTypes/_fixed"
},
{
"$ref": "#/definitions/distributionTypes/_exp"
},
{
"$ref": "#/definitions/distributionTypes/_normal"
},
{
"$ref": "#/definitions/distributionTypes/_lognormal"
},
{
"$ref": "#/definitions/distributionTypes/_binomial"
},
{
"$ref": "#/definitions/distributionTypes/_poisson"
},
{
"$ref": "#/definitions/distributionTypes/_logistic"
},
{
"$ref": "#/definitions/distributionTypes/_cauchy"
},
{
"$ref": "#/definitions/distributionTypes/_geometric"
},
{
"$ref": "#/definitions/distributionTypes/_gama"
},
{
"$ref": "#/definitions/distributionTypes/_weibull"
}
]
}
]
},
"_failureDist": {
"allOf": [
{
"properties": {
"failureDistribution": {
"default": "No",
"enum": [
"No",
"Yes"
],
"type": "string"
}
},
"type": "object"
},
{
"oneOf": [
{
"$ref": "#/definitions/distributionTypes/_failure"
},
{
"$ref": "#/definitions/distributionTypes/_no"
}
]
}
]
},
"_operationType": {
"default": "Automatic",
"description": "the type of operations that are performed manually in the machine",
"enum": [
"Automatic",
"Manual"
],
"type": "string"
},
"_schedulingRule": {
"default": "FIFO",
"description": "Scheduling Rule, one of FIFO Priority EDD EOD NumStages RPC LPT SPT MS WINQ",
"enum": [
"FIFO",
"Priority",
"EDD",
"EOD",
"NumStages",
"RPC",
"LPT",
"SPT",
"MS",
"WINQ",
"WT"
],
"type": "string"
},
"distributionTypes": {
"_binomial": {
"description": "Binomial",
"properties": {
"mean": {
"default": 0,
"type": "number"
},
"size": {
"default": 0,
"type": "number"
}
},
"title": "Binomial",
"type": "object"
},
"_cauchy": {
"description": "Cauchy",
"properties": {
"location": {
"default": 0,
"type": "number"
},
"scale": {
"default": 0,
"type": "number"
}
},
"title": "Cauchy",
"type": "object"
},
"_exp": {
"description": "Exponential",
"properties": {
"mean": {
"default": 0,
"required": true,
"type": "number"
}
},
"title": "Exp",
"type": "object"
},
"_failure": {
"description": "Fixed",
"properties": {
"TTF": {
"$ref": "#/definitions/_dist",
"name": "Time to Failure"
},
"TTR": {
"$ref": "#/definitions/_dist",
"name": "Time to Repair"
},
"repairman": {
"description": "Repairman",
"required": true,
"type": "string"
}
},
"title": "Yes",
"type": "object"
},
"_fixed": {
"description": "Fixed",
"properties": {
"mean": {
"default": 0.75,
"required": true,
"type": "number"
}
},
"title": "Fixed",
"type": "object"
},
"_gama": {
"description": "Gama",
"properties": {
"rate": {
"default": 0,
"required": true,
"type": "number"
},
"shape": {
"default": 0,
"required": true,
"type": "number"
}
},
"title": "Gama",
"type": "object"
},
"_geometric": {
"description": "Geometric",
"properties": {
"probability": {
"default": 0,
"required": true,
"type": "number"
}
},
"title": "Geometric",
"type": "object"
},
"_logistic": {
"description": "Logistic",
"properties": {
"location": {
"default": 0,
"required": true,
"type": "number"
},
"scale": {
"default": 0,
"required": true,
"type": "number"
}
},
"title": "Logistic",
"type": "object"
},
"_lognormal": {
"description": "Lognormal",
"properties": {
"mean": {
"_class": "Dream.Property",
"default": 0,
"name": "Mean",
"type": "number"
},
"stdev": {
"_class": "Dream.Property",
"default": 0,
"name": "Standard Deviation",
"type": "number"
}
},
"title": "Lognormal",
"type": "object"
},
"_no": {
"description": "None",
"title": "No",
"type": "string"
},
"_normal": {
"description": "Normal",
"properties": {
"mean": {
"default": 0,
"required": true,
"type": "number"
},
"stdev": {
"default": 0,
"required": true,
"type": "number"
}
},
"title": "Normal",
"type": "object"
},
"_poisson": {
"description": "Poisson",
"properties": {
"lambda": {
"default": 0,
"type": "number"
}
},
"title": "Poisson",
"type": "object"
},
"_weibull": {
"description": "Weibull",
"properties": {
"scale": {
"default": 0,
"required": true,
"type": "number"
},
"shape": {
"default": 0,
"required": true,
"type": "number"
}
},
"title": "Weibull",
"type": "object"
}
}
},
"dream.simulation.applications.CapacityStations.CapacityStation.CapacityStation": {
"_class": "node",
"allOf": [
{
"$ref": "#/node"
},
{
"properties": {
"id": {
"default": "M",
"required": true,
"type": "string"
},
"name": {
"default": "Machine",
"type": "string"
},
"pool": {
"_default": "",
"description": "The pool of workers that is used for this station. If this station does not share resources leave empty",
"required": false,
"type": "string"
},
"priority": {
"_default": "",
"description": "The priority against other stations. If this station does not share resources leave empty",
"required": false,
"type": "number"
},
"requireFullProject": {
"_default": 0,
"description": "Is this station an assembly? Yes: 1, No: 0",
"required": true,
"type": "number"
}
},
"type": "object"
}
],
"css": {
"backgroundColor": "#fef",
"backgroundImage": "linear-gradient(to bottom, #fef 0%, #ede 100%)",
"border": "1px solid #cbc"
},
"description": "A station processing items for some time given by a distribution",
"name": "Machine"
},
"edge": {
"description": "Base definition for edge",
"properties": {
"_class": {
"type": "string"
},
"destination": {
"type": "string"
},
"name": {
"type": "string"
},
"source": {
"type": "string"
}
},
"required": [
"_class",
"source",
"destination"
],
"type": "object"
},
"node": {
"description": "Base definition for node",
"properties": {
"_class": {
"type": "string"
},
"coordinate": {
"properties": {
"left": "number",
"top": "number"
},
"type": "object"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"_class"
],
"type": "object"
}
},
"constraints": {},
"general": {
"assemblySpace": 600,
"confidenceLevel": 0.95,
"currentDate": "2014/02/20",
"ke_url": "http: //git.erp5.org/gitweb/dream.git/blob_plain/HEAD: /dream/KnowledgeExtraction/Mockup_Processingtimes.xls",
"maxSimTime": -1,
"name": "CapacityProject7OrdersNoWIPSpreadsheet.json",
"numberOfReplications": "1",
"processTimeout": 10,
"seed": 1,
"timeUnit": "day",
"trace": "No"
},
"graph": {
"edge": {
"con_111": {
"_class": "Dream.Edge",
"destination": "PPASB",
"source": "MCH"
},
"con_129": {
"_class": "Dream.Edge",
"destination": "ASBTST",
"source": "EEP"
},
"con_143": {
"_class": "Dream.Edge",
"destination": "PAINT",
"source": "PPASB"
},
"con_155": {
"_class": "Dream.Edge",
"destination": "ASBTST",
"source": "PAINT"
},
"con_53": {
"_class": "Dream.Edge",
"destination": "WELD",
"source": "SMF"
},
"con_69": {
"_class": "Dream.Edge",
"destination": "PPASB",
"source": "WELD"
},
"con_91": {
"_class": "Dream.Edge",
"destination": "PPASB",
"source": "CNC"
}
},
"node": {
"ASBTST": {
"_class": "dream.simulation.applications.CapacityStations.CapacityStation.CapacityStation",
"coordinate": {
"left": 0.4748049078628899,
"top": 0.725986317834675
},
"id": "ASBTST",
"name": "ASBTST",
"pool": "ASB",
"priority": 3,
"requireFullProject": 1
},
"CNC": {
"_class": "dream.simulation.applications.CapacityStations.CapacityStation.CapacityStation",
"coordinate": {
"left": 0.19503291923602395,
"top": 0.055153702206292815
},
"name": "CNC",
"requireFullProject": 0
},
"EEP": {
"_class": "dream.simulation.applications.CapacityStations.CapacityStation.CapacityStation",
"coordinate": {
"left": 0.47570913933753145,
"top": 0.08206596769592567
},
"name": "EEP",
"requireFullProject": 0
},
"MCH": {
"_class": "dream.simulation.applications.CapacityStations.CapacityStation.CapacityStation",
"coordinate": {
"left": 0.3349253399057431,
"top": 0.06653715527072322
},
"name": "MCH",
"requireFullProject": 0
},
"PAINT": {
"_class": "dream.simulation.applications.CapacityStations.CapacityStation.CapacityStation",
"coordinate": {
"left": 0.3111040179667153,
"top": 0.7430615552634912
},
"name": "PAINT",
"requireFullProject": 0
},
"PPASB": {
"_class": "dream.simulation.applications.CapacityStations.CapacityStation.CapacityStation",
"coordinate": {
"left": 0.15782822210919625,
"top": 0.7563202742806299
},
"id": "PPASB",
"name": "PPASB",
"pool": "ASB",
"priority": 1,
"requireFullProject": 1
},
"SMF": {
"_class": "dream.simulation.applications.CapacityStations.CapacityStation.CapacityStation",
"coordinate": {
"left": 0.0679425723598465,
"top": 0.06693194658097301
},
"name": "SMF",
"requireFullProject": 0
},
"WELD": {
"_class": "dream.simulation.applications.CapacityStations.CapacityStation.CapacityStation",
"coordinate": {
"left": 0.05224682159961414,
"top": 0.47035271303157006
},
"name": "WELD",
"requireFullProject": 0
}
}
},
"input": {
"available_capacity_spreadsheet": [
[
"DAY",
"SMF",
"WELD",
"CNC",
"MCH",
"EEP",
"ASB",
"PAINT",
""
],
[
"MONDAY",
"20",
"70",
"90",
"20",
"290",
"170",
"20",
""
],
[
"TUESDAY",
"30",
"170",
"190",
"70",
"100",
"270",
"20",
""
],
[
"WEDNESDAY",
"130",
"270",
"290",
"170",
"200",
"370",
"20",
""
],
[
"THURSDAY",
"80",
"80",
"390",
"270",
"300",
"20",
"320",
""
],
[
"FRIDAY",
"180",
"180",
"490",
"370",
"390",
"20",
"420",
""
],
[
"SATURDAY",
"20",
"20",
"20",
"20",
"20",
"20",
"20",
""
],
[
"SUNDAY",
"0",
"0",
"0",
"0",
"0",
"0",
"0",
""
],
[
"2014/03/22",
"70",
"90",
"80",
"20",
"70",
"50",
"70",
""
],
[
"2014/04/24",
"70",
"90",
"80",
"60",
"70",
"80",
"170",
""
],
[
"2014/03/25",
"120",
"170",
"80",
"160",
"370",
"80",
"170",
""
],
[
"",
null,
null,
null,
null,
null,
null,
null,
null
]
],
"projects_spreadsheet": [
[
"Project ID",
"Order Date",
"Due Date",
"Assembly Space",
"Operation",
"Capacity Requirement",
"WIP",
"Earliest Start Date"
],
[
"P1",
"2014/01/26",
"2014/03/26",
"400",
"SMF",
"80",
"80",
null
],
[
"",
"",
"",
"",
"WELD",
"90",
"0",
null
],
[
"",
"",
"",
"",
"CNC",
"130",
"130",
null
],
[
"",
"",
"",
"",
"MCH",
"125",
"125",
null
],
[
"",
"",
"",
"",
"EEP",
"30",
"30",
null
],
[
"",
"",
"",
"",
"PPASB",
"700",
"0",
null
],
[
"",
"",
"",
"",
"PAINT",
"50",
"0",
null
],
[
"",
"",
"",
"",
"ASBTST",
"300",
"0",
null
],
[
"P2",
"2014/01/26",
"2014/04/04",
"300",
"SMF",
"70",
"70",
null
],
[
"",
"",
"",
"",
"WELD",
"180",
"0",
null
],
[
"",
"",
"",
"",
"CNC",
"45",
"45",
null
],
[
"",
"",
"",
"",
"MCH",
"90",
"90",
null
],
[
"",
"",
"",
"",
"EEP",
"50",
"50",
null
],
[
"",
"",
"",
"",
"PPASB",
"900",
"0",
null
],
[
"",
"",
"",
"",
"PAINT",
"250",
"0",
null
],
[
"",
"",
"",
"",
"ASBTST",
"380",
"0",
null
],
[
"P3",
"2014/01/26",
"",
"400",
"SMF",
"130",
"130",
null
],
[
"",
"",
"",
"",
"WELD",
"115",
"0",
null
],
[
"",
"",
"",
"",
"CNC",
"145",
"145",
null
],
[
"",
"",
"",
"",
"MCH",
"90",
"90",
null
],
[
"",
"",
"",
"",
"EEP",
"35",
"35",
null
],
[
"",
"",
"",
"",
"PPASB",
"600",
"0",
null
],
[
"",
"",
"",
"",
"PAINT",
"100",
"0",
null
],
[
"",
"",
"",
"",
"ASBTST",
"130",
"0",
null
],
[
"P4",
"2014/01/26",
"2014/04/06",
"400",
"SMF",
"100",
"100",
""
],
[
"",
"",
"",
"",
"WELD",
"115",
"0",
""
],
[
"",
"",
"",
"",
"CNC",
"145",
"145",
""
],
[
"",
"",
"",
"",
"MCH",
"105",
"105",
""
],
[
"",
"",
"",
"",
"EEP",
"15",
"15",
""
],
[
"",
"",
"",
"",
"PPASB",
"700",
"0",
""
],
[
"",
"",
"",
"",
"PAINT",
"50",
"0",
""
],
[
"",
"",
"",
"",
"ASBTST",
"230",
"0",
""
],
[
"P5",
"2014/01/26",
"2014/04/16",
"400",
"SMF",
"80",
"80",
null
],
[
"",
"",
"",
"",
"WELD",
"90",
"0",
null
],
[
"",
"",
"",
"",
"CNC",
"130",
"130",
null
],
[
"",
"",
"",
"",
"MCH",
"125",
"125",
null
],
[
"",
"",
"",
"",
"EEP",
"30",
"30",
null
],
[
"",
"",
"",
"",
"PPASB",
"700",
"0",
null
],
[
"",
"",
"",
"",
"PAINT",
"50",
"0",
null
],
[
"",
"",
"",
"",
"ASBTST",
"300",
"0",
null
],
[
"P6",
"2014/01/26",
"2014/04/21",
"300",
"SMF",
"70",
"70",
""
],
[
"",
"",
"",
"",
"WELD",
"180",
"0",
""
],
[
"",
"",
"",
"",
"CNC",
"45",
"45",
""
],
[
"",
"",
"",
"",
"MCH",
"90",
"90",
""
],
[
"",
"",
"",
"",
"EEP",
"35",
"35",
""
],
[
"",
"",
"",
"",
"PPASB",
"600",
"0",
""
],
[
"",
"",
"",
"",
"PAINT",
"100",
"0",
""
],
[
"",
"",
"",
"",
"ASBTST",
"130",
"0",
""
],
[
"P7",
"2014/01/26",
"2014/04/10",
"400",
"SMF",
"80",
"80",
null
],
[
"",
"",
"",
"",
"WELD",
"90",
"0",
null
],
[
"",
"",
"",
"",
"CNC",
"130",
"130",
null
],
[
"",
"",
"",
"",
"MCH",
"125",
"125",
null
],
[
"",
"",
"",
"",
"EEP",
"35",
"35",
null
],
[
"",
"",
"",
"",
"PPASB",
"600",
"0",
null
],
[
"",
"",
"",
"",
"PAINT",
"100",
"0",
null
],
[
"",
"",
"",
"",
"ASBTST",
"130",
"0",
null
],
[
null,
null,
null,
null,
null,
null,
null,
null
]
]
},
"result": {
"result_list": []
}
}
\ No newline at end of file
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment