Commit 1ed21e65 by xin.yang
parents 8127a445 73e7b9f0
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="divborder newSearchDiv" style="margin:0px;"> <div class="divborder newSearchDiv" style="margin:0px;">
<div class="filter"> <div class="filter">
<label>{{$t('100088')}}</label> <label>{{$t('100088')}}</label>
<!-- <Select v-model="productname" label-in-value filterable clearable remote <!-- <Select v-model="productname " label-in-value filterable clearable remote
:remote-method="remoteMethod" :remote-method="remoteMethod"
:loading="loading1" class="searchSelect" > :loading="loading1" class="searchSelect" >
<Option v-for="item in products" :value="item.id" :key="item.id">{{ item.name }}({{item.code}})</Option> <Option v-for="item in products" :value="item.id" :key="item.id">{{ item.name }}({{item.code}})</Option>
......
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
:key="index" :key="index"
:style="{ :style="{
background: item.bgc, background: item.bgc,
color: item.status != 0 ? fontColor : '', color: item.machineStatus != 0 ? fontColor : '',
}" }"
> >
<p class="flex"> <p class="flex">
...@@ -176,11 +176,11 @@ export default { ...@@ -176,11 +176,11 @@ export default {
let str = ""; let str = "";
str = str =
params.row.status == 1 params.row.status == 1
? "待上料" ? "待执行"
: params.row.status == 2 : params.row.status == 2
? "生产中" ? "执行中"
: params.row.status == 3 : params.row.status == 3
? "待下料" ? "执行完成"
: ""; : "";
return h("div", str); return h("div", str);
}, },
...@@ -362,17 +362,17 @@ export default { ...@@ -362,17 +362,17 @@ export default {
arr.forEach((ele) => { arr.forEach((ele) => {
let bgc = ""; let bgc = "";
if (ele.status == 1) { if (ele.machineStatus == 1) {
bgc = "#ff9900"; bgc = "#ff9900";
} }
if (ele.status == 2) { if (ele.machineStatus == 2) {
bgc = "#19be6b"; bgc = "#19be6b";
} }
if (ele.status == 3) { if (ele.machineStatus == 3) {
bgc = "#2db7f5"; bgc = "#2db7f5";
} }
if (ele.enable == 0) { if (ele.enable == 0) {
bgc = "red"; bgc = "#ed4014";
} }
ele.bgc = bgc; ele.bgc = bgc;
}); });
......
...@@ -98,8 +98,7 @@ ...@@ -98,8 +98,7 @@
<div class="filter"> <div class="filter">
<label>触发时间:</label> <label>触发时间:</label>
<DatePicker <DatePicker
type="datetime" type="datetimerange"
placeholder="Select date"
style="width: 200px" style="width: 200px"
v-model="startTime" v-model="startTime"
@on-change="getTime" @on-change="getTime"
...@@ -108,8 +107,7 @@ ...@@ -108,8 +107,7 @@
<div class="filter"> <div class="filter">
<label>完成时间:</label> <label>完成时间:</label>
<DatePicker <DatePicker
type="datetime" type="datetimerange"
placeholder="Select date"
style="width: 200px" style="width: 200px"
v-model="endTime" v-model="endTime"
@on-change="getTime2" @on-change="getTime2"
...@@ -124,13 +122,13 @@ ...@@ -124,13 +122,13 @@
>{{ $t("1001") }}</Button >{{ $t("1001") }}</Button
> >
<!-- --> <!-- -->
<!-- <Button <Button
type="warning" type="warning"
class="twoWord" class="twoWord"
icon="ios-search" icon="ios-search"
@click="cancel()" @click="cancel()"
>取消</Button >取消</Button
> --> >
<!--只有状态是待执行的可以改成取消--> <!--只有状态是待执行的可以改成取消-->
<Button <Button
type="primary" type="primary"
...@@ -199,11 +197,12 @@ export default { ...@@ -199,11 +197,12 @@ export default {
{ {
title: "任务编号", title: "任务编号",
key: "taskno", key: "taskno",
width: 300, width: 150,
}, },
{ {
title: "产线层级", title: "产线层级",
key: "section", key: "section",
width: 150,
}, },
{ {
title: "触发方", title: "触发方",
...@@ -216,6 +215,7 @@ export default { ...@@ -216,6 +215,7 @@ export default {
{ {
title: "工件编号", title: "工件编号",
key: "sn", key: "sn",
width: 150,
}, },
{ {
title: "工单编号", title: "工单编号",
...@@ -230,7 +230,7 @@ export default { ...@@ -230,7 +230,7 @@ export default {
key: "routeNo", key: "routeNo",
}, },
{ {
title: "工序", title: "工序名称",
key: "route", key: "route",
}, },
{ {
...@@ -248,6 +248,7 @@ export default { ...@@ -248,6 +248,7 @@ export default {
{ {
title: "动作", title: "动作",
key: "action", key: "action",
width: 150,
}, },
{ {
title: "执行类型", title: "执行类型",
...@@ -296,8 +297,8 @@ export default { ...@@ -296,8 +297,8 @@ export default {
sn: "", sn: "",
state: 0, state: 0,
performType: 0, performType: 0,
startTime: "", startTime: [],
endTime: "", endTime: [],
detailobj: {}, detailobj: {},
}; };
}, },
...@@ -316,8 +317,11 @@ export default { ...@@ -316,8 +317,11 @@ export default {
sn: this.sn, sn: this.sn,
status: this.status, status: this.status,
actionType: this.performType, actionType: this.performType,
triggertime: this.startTime, triggerbegin:
complatetime: this.endTime, this.startTime.length > 0 ? this.startTime[0] : "",
triggerend: this.startTime.length > 0 ? this.startTime[1] : "",
complatebegin: this.endTime.length > 0 ? this.endTime[0] : "",
complatend: this.endTime.length > 0 ? this.endTime[1] : "",
page: page, page: page,
pageSize: pagesize, pageSize: pagesize,
}; };
...@@ -337,23 +341,30 @@ export default { ...@@ -337,23 +341,30 @@ export default {
}); });
}, },
cancel() { cancel() {
if (this.detailobj.status != 1) { console.log(this.detailobj);
if (!this.detailobj.id) {
this.$Message.error(this.$t(1043));
return false;
}
if (this.detailobj.send != 0) {
this.$Message.error("该任务清单状态不能取消"); this.$Message.error("该任务清单状态不能取消");
return false; return false;
} }
return; // return;
let data = { // let data = {
section: this.sectionid, // section: this.sectionid,
}; // };
this.request( this.request(
// "/acc/AutomationOperate/CompalateAssemble", "/acc/AutomationState/DeleteTask?id=" + this.detailobj.id,
data, "",
"post" "get"
).then((res) => { ).then((res) => {
if (res.data.ret == 1) { if (res.data.ret == 1) {
this.$Message.success(this.$t(res.data.msg)); this.$Message.success(this.$t(res.data.msg));
this.search(1, 10);
} else { } else {
this.$Message.error(this.$t(res.data.msg)); this.$Message.error(this.$t(res.data.msg));
this.search(1, 10);
} }
}); });
}, },
......
...@@ -361,6 +361,9 @@ namespace Siger.ApiACC.Controllers ...@@ -361,6 +361,9 @@ namespace Siger.ApiACC.Controllers
[HttpGet] [HttpGet]
public IActionResult GetLocationList(string productcode, int fillsn=0) public IActionResult GetLocationList(string productcode, int fillsn=0)
{ {
var productFix = _automationFixtureToolsProduct.Get(f => f.productcode == productcode);
var locations = _autoLocationRepository.GetFulllocation(ProjectId, fillsn); var locations = _autoLocationRepository.GetFulllocation(ProjectId, fillsn);
return new ObjectResult(locations); return new ObjectResult(locations);
//if (fillsn == 1) //if (fillsn == 1)
......
...@@ -10,19 +10,23 @@ using Siger.Middlelayer.AccRepository.Response; ...@@ -10,19 +10,23 @@ using Siger.Middlelayer.AccRepository.Response;
using Siger.ApiCommon.Result; using Siger.ApiCommon.Result;
using Siger.Middlelayer.Common; using Siger.Middlelayer.Common;
using Siger.Middlelayer.Share.Enum.ModuleEnum; using Siger.Middlelayer.Share.Enum.ModuleEnum;
using Siger.Middlelayer.Repository;
using Siger.Middlelayer.Log;
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
namespace Siger.ApiACC.Controllers namespace Siger.ApiACC.Controllers
{ {
public class AutomationStateController : BaseController public class AutomationStateController : BaseController
{ {
private readonly IUnitOfWork _unitOfWork;
private readonly ISigerProjectLevelSectionRepository _sigerProjectLevelSection; private readonly ISigerProjectLevelSectionRepository _sigerProjectLevelSection;
private readonly IAutomationMachineStatus _automationMachineStatus; private readonly IAutomationMachineStatus _automationMachineStatus;
private readonly IAutomationTaskListRepository _automationTaskList; private readonly IAutomationTaskListRepository _automationTaskList;
private readonly IAutomationFixtureMonitor _automationFixtureMonitor; private readonly IAutomationFixtureMonitor _automationFixtureMonitor;
public AutomationStateController(ISigerProjectLevelSectionRepository sigerProjectLevelSection, IAutomationMachineStatus automationMachineStatus, IAutomationTaskListRepository automationTaskList, IAutomationFixtureMonitor automationFixtureMonitor) public AutomationStateController(IUnitOfWork unitOfWork, ISigerProjectLevelSectionRepository sigerProjectLevelSection, IAutomationMachineStatus automationMachineStatus, IAutomationTaskListRepository automationTaskList, IAutomationFixtureMonitor automationFixtureMonitor)
{ {
_unitOfWork = unitOfWork;
_sigerProjectLevelSection = sigerProjectLevelSection; _sigerProjectLevelSection = sigerProjectLevelSection;
_automationMachineStatus = automationMachineStatus; _automationMachineStatus = automationMachineStatus;
_automationTaskList = automationTaskList; _automationTaskList = automationTaskList;
...@@ -58,7 +62,7 @@ namespace Siger.ApiACC.Controllers ...@@ -58,7 +62,7 @@ namespace Siger.ApiACC.Controllers
fixtureCode="", fixtureCode="",
fixtureName="", fixtureName="",
lastupdate="", lastupdate="",
status=(int)Automation.MachineStatus.Waiting, machineStatus=d.status,
linemode=d.linemode linemode=d.linemode
}; };
...@@ -71,6 +75,7 @@ namespace Siger.ApiACC.Controllers ...@@ -71,6 +75,7 @@ namespace Siger.ApiACC.Controllers
item.fixtureCode = fixture.fixtureguid; item.fixtureCode = fixture.fixtureguid;
item.fixtureName = fixture.fixturename; item.fixtureName = fixture.fixturename;
item.machineStatus = d.status;
item.status = fixture.status; item.status = fixture.status;
} }
result.Add(item); result.Add(item);
...@@ -80,9 +85,9 @@ namespace Siger.ApiACC.Controllers ...@@ -80,9 +85,9 @@ namespace Siger.ApiACC.Controllers
{ {
sum=new ResponseAutomationMachineStatusTotal { sum=new ResponseAutomationMachineStatusTotal {
waittingTotal =result.Where(f=>f.status==(int)Automation.MachineStatus.Waiting).Count(), waittingTotal =result.Where(f=>f.machineStatus == (int)Automation.MachineStatus.Waiting).Count(),
produceTotal= result.Where(f => f.status == (int)Automation.MachineStatus.Produce).Count(), produceTotal= result.Where(f => f.machineStatus == (int)Automation.MachineStatus.Produce).Count(),
complateTotal= result.Where(f => f.status == (int)Automation.MachineStatus.Complated).Count(), complateTotal= result.Where(f => f.machineStatus == (int)Automation.MachineStatus.Complated).Count(),
disableTotal= result.Where(f => f.enable ==0).Count(), disableTotal= result.Where(f => f.enable ==0).Count(),
}, },
dts=result dts=result
...@@ -90,16 +95,35 @@ namespace Siger.ApiACC.Controllers ...@@ -90,16 +95,35 @@ namespace Siger.ApiACC.Controllers
return new ObjectResult(output); return new ObjectResult(output);
} }
[HttpGet] [HttpGet]
public IActionResult GetTasklist(int section, int tasktype, string productCode, string taskno, string sn, int status, int actionType, string triggertime, string complatetime,int page,int pageSize) public IActionResult GetTasklist(int section, int tasktype, string productCode, string taskno, string sn, int status, int actionType, string triggerbegin,string triggerend, string complatebegin,string complatend,int page,int pageSize)
{ {
var ids = new List<int>(); var ids = new List<int>();
if (section != 0) if (section != 0)
{ {
ids = _sigerProjectLevelSection.GetLevelSectionIds(section, ProjectId).ToList(); ids = _sigerProjectLevelSection.GetLevelSectionIds(section, ProjectId).ToList();
} }
var resulst = _automationTaskList.GetTasklistPagedList(ids, tasktype, productCode, taskno, sn, status, actionType, triggertime, complatetime,ProjectId,page,pageSize); var resulst = _automationTaskList.GetTasklistPagedList(ids, tasktype, productCode, taskno, sn, status, actionType, triggerbegin, triggerend, complatebegin, complatend, ProjectId,page,pageSize);
return new PagedObjectResult(resulst, resulst.Total, page, pageSize); return new PagedObjectResult(resulst, resulst.Total, page, pageSize);
} }
public IActionResult DeleteTask(int id)
{
var record = _automationTaskList.Get(f => f.id == id);
if (record == null)
{
throw new BadRequestException(CommonEnum.RecordNotFound);
}
_automationTaskList.Delete(record);
if (_unitOfWork.Commit() > 0)
{
Logger.WriteLineError($"手动任务创建成功-{Siger.Middlelayer.Common.Helpers.EnumHelper.GetEnumDesc(Automation.TaskAction.Step_LK_SXLW)}");
return new ObjectResult(CommonEnum.Succefull);
}
else
{
throw new BadRequestException(CommonEnum.Fail);
}
}
} }
} }
...@@ -320,16 +320,11 @@ namespace Siger.ApiACC.Controllers ...@@ -320,16 +320,11 @@ namespace Siger.ApiACC.Controllers
private void CreateTaskList(int section, int productid, string productcode, string sn, int routeid) private void CreateTaskList(int section, int productid, string productcode, string sn, int routeid)
{ {
if (section <= 0 || string.IsNullOrEmpty(sn) || string.IsNullOrEmpty(productcode) || productid <= 0) var monitor = _fixtureMonitor.Get(f => f.section == section);
if (monitor==null)
{ {
return; Logger.WriteLineInfo($"检验工站{section} monitor 为空");
} }
var monitor = _fixtureMonitor.GetList(q => q.section == section && q.sn == sn).OrderByDescending(q => q.updatetime).FirstOrDefault();
if (monitor == null)
{
return;
}
var taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Manual); var taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Manual);
_automationTaskList.Insert(new siger_automation_task_list _automationTaskList.Insert(new siger_automation_task_list
...@@ -357,6 +352,7 @@ namespace Siger.ApiACC.Controllers ...@@ -357,6 +352,7 @@ namespace Siger.ApiACC.Controllers
programnumber = "", programnumber = "",
remark = "质量检验", remark = "质量检验",
}); });
monitor.taskno = taskNo;
_unitOfWork.Commit(); _unitOfWork.Commit();
} }
......
...@@ -64,8 +64,7 @@ namespace Siger.ApiACC.Controllers ...@@ -64,8 +64,7 @@ namespace Siger.ApiACC.Controllers
[HttpGet] [HttpGet]
public IActionResult GetSn(int sectionid) public IActionResult GetSn(int sectionid)
{ {
var monitor = _fixtureMonitor.GetList(q => q.projectId == ProjectId && q.status == (int)RowState.Valid && q.section == sectionid).OrderByDescending(q => q.updatetime). var monitor = _fixtureMonitor.Get(sectionid);
FirstOrDefault();
return new ObjectResult(monitor?.sn ?? ""); return new ObjectResult(monitor?.sn ?? "");
} }
} }
......
...@@ -50,11 +50,18 @@ namespace Siger.ApiACC.Tasks ...@@ -50,11 +50,18 @@ namespace Siger.ApiACC.Tasks
if (attr == null) if (attr == null)
return; return;
var fixtrue = dbhelper.GetFixture(task.fixtureguid);
if (fixtrue==null)
{
Logger.WriteLineError($"自动工装未找到");
return;
}
var sendToPLC = new RequestPLC var sendToPLC = new RequestPLC
{ {
ProductCode=task.productcode,
LineID= levelsction.parentid, LineID= levelsction.parentid,
RStation = attr.machine, RStation = attr.machine,
Fixture = task.fixtureguid, Fixture = fixtrue.code,
RequestForm = task.no, RequestForm = task.no,
RobotStep = (int)task.action, RobotStep = (int)task.action,
StorageNo = task.locationid, StorageNo = task.locationid,
......
...@@ -70,6 +70,10 @@ namespace Siger.ApiACC.Tasks ...@@ -70,6 +70,10 @@ namespace Siger.ApiACC.Tasks
{ {
return AccDbContext.siger_project_machine_attribution.FirstOrDefault(f => f.station==section && f.status==1); return AccDbContext.siger_project_machine_attribution.FirstOrDefault(f => f.station==section && f.status==1);
} }
public siger_automation_fixture_tools GetFixture(string guid)
{
return AccDbContext.siger_automation_fixture_tools.FirstOrDefault(f => f.guid==guid && f.status == 1);
}
public void Dispose() public void Dispose()
{ {
CncDbContext?.Dispose(); CncDbContext?.Dispose();
......
...@@ -23,14 +23,16 @@ namespace Siger.ApiCNC.Controllers ...@@ -23,14 +23,16 @@ namespace Siger.ApiCNC.Controllers
private readonly IProductionBeatSetRepository _beatSetRepository; private readonly IProductionBeatSetRepository _beatSetRepository;
private readonly ISigerProjectMachineRepository _machineRepository; private readonly ISigerProjectMachineRepository _machineRepository;
private readonly ISigerProjectProductRepository _productRepository; private readonly ISigerProjectProductRepository _productRepository;
private readonly IProductRouteRepository _productRoute;
public BeatAllocationController(IUnitOfWork unitOfWork, IProductionBeatSetRepository beatSetRepository, ISigerProjectMachineRepository machineRepository, public BeatAllocationController(IUnitOfWork unitOfWork, IProductionBeatSetRepository beatSetRepository, ISigerProjectMachineRepository machineRepository,
ISigerProjectProductRepository productRepository) ISigerProjectProductRepository productRepository, IProductRouteRepository productRoute)
{ {
_unitOfWork = unitOfWork; _unitOfWork = unitOfWork;
_beatSetRepository = beatSetRepository; _beatSetRepository = beatSetRepository;
_machineRepository = machineRepository; _machineRepository = machineRepository;
_productRepository = productRepository; _productRepository = productRepository;
_productRoute = productRoute;
} }
[HttpGet] [HttpGet]
...@@ -43,6 +45,7 @@ namespace Siger.ApiCNC.Controllers ...@@ -43,6 +45,7 @@ namespace Siger.ApiCNC.Controllers
var validMachines = _machineRepository.GetLevelSectionNames(sectionID, ProjectId); var validMachines = _machineRepository.GetLevelSectionNames(sectionID, ProjectId);
foreach (var time in data.Data) foreach (var time in data.Data)
{ {
var route = _productRoute.Get(f => f.id == time.route_number.ToInt());
var entity = Mapper<ResponseBeatSet, ResponseBeatSet>.Map(time); var entity = Mapper<ResponseBeatSet, ResponseBeatSet>.Map(time);
var section = validMachines.FirstOrDefault(q => q.machine_id == time.machineID); var section = validMachines.FirstOrDefault(q => q.machine_id == time.machineID);
if (section != null) if (section != null)
...@@ -50,6 +53,10 @@ namespace Siger.ApiCNC.Controllers ...@@ -50,6 +53,10 @@ namespace Siger.ApiCNC.Controllers
entity.sectionName = section.machine_name; entity.sectionName = section.machine_name;
entity.stationName = section.lastSecondSectionTitle + "-" + section.lastSectionTitle; entity.stationName = section.lastSecondSectionTitle + "-" + section.lastSectionTitle;
} }
if (route!=null)
{
entity.routeName = route.name;
}
list.Add(entity); list.Add(entity);
} }
return new PagedObjectResult(list, data.Total, page, pagesize); return new PagedObjectResult(list, data.Total, page, pagesize);
...@@ -104,6 +111,11 @@ namespace Siger.ApiCNC.Controllers ...@@ -104,6 +111,11 @@ namespace Siger.ApiCNC.Controllers
{ {
throw new BadRequestException(RequestEnum.ProductNotFound); throw new BadRequestException(RequestEnum.ProductNotFound);
} }
var route = _productRoute.Get(f =>f.id==request.route_id);
if (route==null)
{
throw new BadRequestException(RequestEnum.RouteNotFound);
}
var beatSet = new siger_project_beat_set var beatSet = new siger_project_beat_set
{ {
daily_standard_output = request.daily_standard_output, daily_standard_output = request.daily_standard_output,
...@@ -117,8 +129,8 @@ namespace Siger.ApiCNC.Controllers ...@@ -117,8 +129,8 @@ namespace Siger.ApiCNC.Controllers
standard_besat = request.standard_besat, standard_besat = request.standard_besat,
projectID = ProjectId, projectID = ProjectId,
changemodeltime = request.time_num.ToInt(), changemodeltime = request.time_num.ToInt(),
route_number = request.route_number.ToStr(), route_number = request.route_id.ToStr(),
route_name = request.route_name, route_name = route.name,
updown_besat = request.updown_besat.ToDouble(), updown_besat = request.updown_besat.ToDouble(),
yieldrate = request.yieldratio, yieldrate = request.yieldratio,
start_time = timSet ? start : DateTime.MinValue, start_time = timSet ? start : DateTime.MinValue,
......
...@@ -167,5 +167,7 @@ namespace Siger.Middlelayer.AccRepository ...@@ -167,5 +167,7 @@ namespace Siger.Middlelayer.AccRepository
public DbSet<siger_automation_produce_history> siger_automation_produce_history { get; set; } public DbSet<siger_automation_produce_history> siger_automation_produce_history { get; set; }
public DbSet<siger_automation_fixture_tools_monitor> siger_automation_fixture_tools_moniter { get; set; } public DbSet<siger_automation_fixture_tools_monitor> siger_automation_fixture_tools_moniter { get; set; }
public DbSet<siger_check_sn_trace_inspection> siger_check_sn_trace_inspection { get; set; }
} }
} }
...@@ -11,7 +11,7 @@ namespace Siger.Middlelayer.AccRepository.Entities ...@@ -11,7 +11,7 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// </summary> /// </summary>
public string fixtureguid { get; set; } public string fixtureguid { get; set; }
/// <summary> /// <summary>
/// 工装名称 /// 工装编号
/// </summary> /// </summary>
public string fixturename { get; set; } public string fixturename { get; set; }
/// <summary> /// <summary>
...@@ -50,5 +50,9 @@ namespace Siger.Middlelayer.AccRepository.Entities ...@@ -50,5 +50,9 @@ namespace Siger.Middlelayer.AccRepository.Entities
public string productName { get; set; } public string productName { get; set; }
public int locationId { get; set; } public int locationId { get; set; }
public int unixtime { get; set; } public int unixtime { get; set; }
/// <summary>
/// 当前任务
/// </summary>
public string taskno { get; set; }
} }
} }
...@@ -30,5 +30,10 @@ namespace Siger.Middlelayer.AccRepository.Entities ...@@ -30,5 +30,10 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// </summary> /// </summary>
public string program { get; set; } public string program { get; set; }
/// <summary>
/// 1: 自动设备 0:上下料设备
/// </summary>
public int auto { get; set; }
} }
} }
...@@ -103,5 +103,7 @@ namespace Siger.Middlelayer.AccRepository.Entities ...@@ -103,5 +103,7 @@ namespace Siger.Middlelayer.AccRepository.Entities
public string remark { get; set; } public string remark { get; set; }
public string extend1 { get; set; } public string extend1 { get; set; }
public int route { get; set; }
} }
} }
...@@ -67,8 +67,8 @@ namespace Siger.Middlelayer.AccRepository.Entities ...@@ -67,8 +67,8 @@ namespace Siger.Middlelayer.AccRepository.Entities
public int changemodeltime { get; set; } public int changemodeltime { get; set; }
/// <summary> /// <summary>
/// 工序顺序 /// 工序ID Route.Id
/// </summary> /// </summary>
public string route_number { get; set; } = ""; public string route_number { get; set; } = "";
/// <summary> /// <summary>
......
...@@ -103,11 +103,11 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -103,11 +103,11 @@ namespace Siger.Middlelayer.AccRepository.Repositories
/// <param name="productIds"></param> /// <param name="productIds"></param>
/// <param name="projectId"></param> /// <param name="projectId"></param>
/// <returns></returns> /// <returns></returns>
public IEnumerable<ResponseAutomationPlanOrder> GetDeliveryOrder(List<int>productIds,int projectId) public IEnumerable<ResponseAutomationPlanOrder> GetDeliveryOrder(List<string>Ordernums,int projectId)
{ {
var query = from d in _context.siger_project_product_plan_detail var query = from d in _context.siger_project_product_plan_detail
join p in _context.siger_project_product_plan on d.PlanId equals p.id join p in _context.siger_project_product_plan on d.PlanId equals p.id
where d.projectId == projectId && productIds.Contains(p.product_id) && d.status != (int)RowState.Invalid && p.status != (int)RowState.Invalid where d.projectId == projectId && Ordernums.Contains(d.OrderNumber) && d.status != (int)RowState.Invalid && p.status != (int)RowState.Invalid
select new ResponseAutomationPlanOrder select new ResponseAutomationPlanOrder
{ {
productId=p.product_id, productId=p.product_id,
...@@ -136,7 +136,8 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -136,7 +136,8 @@ namespace Siger.Middlelayer.AccRepository.Repositories
ProductName = p.product_name, ProductName = p.product_name,
Url=pd.image, Url=pd.image,
FixtureName=t.name, FixtureName=t.name,
FixtureGuid=t.code, FixtureGuid=t.guid,
FixtureCode=t.code,
ProductCode =q!=null? q.productcode:"", ProductCode =q!=null? q.productcode:"",
Location =l!=null? l.locationid:0, Location =l!=null? l.locationid:0,
}; };
......
...@@ -33,7 +33,7 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -33,7 +33,7 @@ namespace Siger.Middlelayer.AccRepository.Repositories
join w in _context.siger_wms_storage on l.storageid equals w.id join w in _context.siger_wms_storage on l.storageid equals w.id
join u in _context.siger_project_user on q.updator equals u.mid into uu join u in _context.siger_project_user on q.updator equals u.mid into uu
from u in uu.DefaultIfEmpty() from u in uu.DefaultIfEmpty()
join r in _context.siger_project_beat_set on q.routeid equals r.id into rr join r in _context.siger_project_product_route on q.routeid equals r.id into rr
from r in rr.DefaultIfEmpty() from r in rr.DefaultIfEmpty()
where q.projectId == projectid && q.status == (int)RowState.Valid where q.projectId == projectid && q.status == (int)RowState.Valid
select new ResponseAutomationLocation select new ResponseAutomationLocation
...@@ -56,8 +56,9 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -56,8 +56,9 @@ namespace Siger.Middlelayer.AccRepository.Repositories
status = q.status, status = q.status,
updatetime = q.updatetime.HasValue && q.updatetime > DateTime.MinValue ? q.updatetime.Value.ToString(ParameterConstant.DateTimeFormat) : "", updatetime = q.updatetime.HasValue && q.updatetime > DateTime.MinValue ? q.updatetime.Value.ToString(ParameterConstant.DateTimeFormat) : "",
sn = q.sn ?? "", sn = q.sn ?? "",
route = r.route_name ?? "", route = r.name ?? "",
routenumber = r == null ? "" : r.route_number.ToString(), routenumber = r == null ? "" : r.serialNumber.ToString(),
routeid=q.routeid,
cate_guid = c.guid ?? "", cate_guid = c.guid ?? "",
categoryId = c == null ? 0 : c.id categoryId = c == null ? 0 : c.id
}; };
...@@ -238,42 +239,64 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -238,42 +239,64 @@ namespace Siger.Middlelayer.AccRepository.Repositories
public IEnumerable<ResponseAutomationLocationList> GetFulllocation(int projectId,int full) public IEnumerable<ResponseAutomationLocationList> GetFulllocation(int projectId,int full)
{ {
var query = from q in _context.siger_automation_location //获取有SN 的储位
join t in _context.siger_automation_fixture_tools on q.fixturetools equals t.guid if (full==1)
join l in _context.siger_wms_storage_location on q.location_cid equals l.id
join w in _context.siger_wms_storage on l.storageid equals w.id
where q.projectId==projectId
&& q.status==(int)RowState.Valid
&& t.status==(int)RowState.Valid
&& l.status==(int)RowState.Valid
&& w.status==(int)RowState.Valid
select new ResponseAutomationLocationList
{
id = q.id,
typeid = t.id,
fixtureguid = t.guid,
locationid = l.locationid,
location = l.realname,
locationcode = l.serial_number,
wavehouseid = w.id,
wavehouse = w.name,
wavehousecode = w.serial_number,
fixturetoolid = t.id,
code = t.code,
name = t.name,
materialsn = q.sn ?? ""
};
Expression<Func<ResponseAutomationLocationList, bool>> locationidExpression = f => true;
if (full != 0)
{ {
locationidExpression = q => !string.IsNullOrEmpty(q.materialsn); var query = from q in _context.siger_automation_location
join t in _context.siger_automation_fixture_tools on q.fixturetools equals t.guid
join l in _context.siger_wms_storage_location on q.location_cid equals l.id
join w in _context.siger_wms_storage on l.storageid equals w.id
where q.projectId == projectId && !string.IsNullOrEmpty(q.sn)
&& q.status == (int)RowState.Valid&& t.status == (int)RowState.Valid
&& l.status == (int)RowState.Valid && w.status == (int)RowState.Valid
select new ResponseAutomationLocationList
{
id = q.id,
typeid = t.id,
fixtureguid = t.guid,
locationid = l.locationid,
location = l.realname,
locationcode = l.serial_number,
wavehouseid = w.id,
wavehouse = w.name,
wavehousecode = w.serial_number,
fixturetoolid = t.id,
code = t.code,
name = t.name,
materialsn = q.sn
};
Expression<Func<ResponseAutomationLocationList, bool>> locationidExpression = f => true;
return query.Where(locationidExpression);
}else }else
{ {
locationidExpression = q => string.IsNullOrEmpty(q.materialsn); //选择SN为空的储位
var query = from q in _context.siger_automation_location
join t in _context.siger_automation_fixture_tools on q.fixturetools equals t.guid
join l in _context.siger_wms_storage_location on q.location_cid equals l.id
join w in _context.siger_wms_storage on l.storageid equals w.id
where q.projectId == projectId && string.IsNullOrEmpty(q.sn)
&& q.status == (int)RowState.Valid && t.status == (int)RowState.Valid
&& l.status == (int)RowState.Valid&& w.status == (int)RowState.Valid
select new ResponseAutomationLocationList
{
id = q.id,
typeid = t.id,
fixtureguid = t.guid,
locationid = l.locationid,
location = l.realname,
locationcode = l.serial_number,
wavehouseid = w.id,
wavehouse = w.name,
wavehousecode = w.serial_number,
fixturetoolid = t.id,
code = t.code,
name = t.name,
materialsn = q.sn
};
Expression<Func<ResponseAutomationLocationList, bool>> locationidExpression = f => true;
return query.Where(locationidExpression);
} }
return query.Where(locationidExpression);
} }
} }
} }
...@@ -29,7 +29,6 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -29,7 +29,6 @@ namespace Siger.Middlelayer.AccRepository.Repositories
{ {
//已经下发,并且任务完成 //已经下发,并且任务完成
var taskObjs = _context.siger_automation_task_list.Where(f => f.projectId == projectId && f.send==0 ); var taskObjs = _context.siger_automation_task_list.Where(f => f.projectId == projectId && f.send==0 );
if (taskObjs.Any()) if (taskObjs.Any())
{ {
return false; return false;
...@@ -90,10 +89,12 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -90,10 +89,12 @@ namespace Siger.Middlelayer.AccRepository.Repositories
} }
public IPagedCollectionResult<ResponseAutomationTasklist> GetTasklistPagedList(List<int> sections, int taskType, string productCode, string TaskNo, string sn, int status, int actionType, string tiggertime, string comptime, int projectid, int page, int pagesize) public IPagedCollectionResult<ResponseAutomationTasklist> GetTasklistPagedList(List<int> sections, int taskType, string productCode, string TaskNo, string sn, int status, int actionType, string tirbeigin, string triend, string compbegin, string compend, int projectid, int page, int pagesize)
{ {
var query = from q in _context.siger_automation_task_list var query = from q in _context.siger_automation_task_list
join t in _context.siger_automation_fixture_tools on q.fixtureguid equals t.guid join t in _context.siger_automation_fixture_tools on q.fixtureguid equals t.guid
join r in _context.siger_project_product_route on q.route equals r.id into rtemp
from r in rtemp.DefaultIfEmpty()
join s in _context.siger_project_level_section on q.sectionid equals s.id join s in _context.siger_project_level_section on q.sectionid equals s.id
join lv in _context.siger_project_level_section on s.parentid equals lv.id join lv in _context.siger_project_level_section on s.parentid equals lv.id
where q.projectId == projectid where q.projectId == projectid
...@@ -117,7 +118,8 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -117,7 +118,8 @@ namespace Siger.Middlelayer.AccRepository.Repositories
ordernumber=q.ordercode, ordernumber=q.ordercode,
productCode=q.productcode, productCode=q.productcode,
program=q.programnumber, program=q.programnumber,
route=q.remark, route=r!=null?$"{r.serialNumber}-{r.name}":"",
send=q.send,
tasktype=EnumHelper.GetEnumDesc(q.tasktype), tasktype=EnumHelper.GetEnumDesc(q.tasktype),
status=q.status, status=q.status,
...@@ -153,15 +155,15 @@ namespace Siger.Middlelayer.AccRepository.Repositories ...@@ -153,15 +155,15 @@ namespace Siger.Middlelayer.AccRepository.Repositories
actionTypeExpression = q => q.actionTypeid==actionType; actionTypeExpression = q => q.actionTypeid==actionType;
} }
Expression<Func<ResponseAutomationTasklist, bool>> triggerTimeTypeExpression = f => true; Expression<Func<ResponseAutomationTasklist, bool>> triggerTimeTypeExpression = f => true;
if (!string.IsNullOrEmpty(tiggertime)) if (!string.IsNullOrEmpty(triend) && !string.IsNullOrEmpty(tirbeigin))
{ {
triggerTimeTypeExpression = q => q.triggervalue == tiggertime.ToDateTime(); triggerTimeTypeExpression = q => q.triggervalue >= tirbeigin.ToDateTime() && q.triggervalue<=triend.ToDateTime();
} }
Expression<Func<ResponseAutomationTasklist, bool>> comptimeExpression = f => true; Expression<Func<ResponseAutomationTasklist, bool>> comptimeExpression = f => true;
if (!string.IsNullOrEmpty(comptime)) if (!string.IsNullOrEmpty(compbegin) && !string.IsNullOrEmpty(compend))
{ {
comptimeExpression = q => q.complatevalue == comptime.ToDateTime(); comptimeExpression = q => q.complatevalue >= compbegin.ToDateTime() && q.complatevalue <= compend.ToDateTime();
} }
var expression = sectonsExpression.And(taskTypeExpression).And(productCodeExpression).And(tasknoExpression).And(snExpression) var expression = sectonsExpression.And(taskTypeExpression).And(productCodeExpression).And(tasknoExpression).And(snExpression)
......
...@@ -37,7 +37,7 @@ namespace Siger.Middlelayer.AccRepository.Repositories.Interface ...@@ -37,7 +37,7 @@ namespace Siger.Middlelayer.AccRepository.Repositories.Interface
/// <param name="productIds"></param> /// <param name="productIds"></param>
/// <param name="projectId"></param> /// <param name="projectId"></param>
/// <returns></returns> /// <returns></returns>
IEnumerable<ResponseAutomationPlanOrder> GetDeliveryOrder(List<int> productIds, int projectId); IEnumerable<ResponseAutomationPlanOrder> GetDeliveryOrder(List<string> Ordernums, int projectId);
} }
} }
...@@ -26,6 +26,6 @@ namespace Siger.Middlelayer.AccRepository.Repositories.Interface ...@@ -26,6 +26,6 @@ namespace Siger.Middlelayer.AccRepository.Repositories.Interface
string CreateRandonSn(string productCode); string CreateRandonSn(string productCode);
IPagedCollectionResult<ResponseAutomationTasklist> GetTasklistPagedList(List<int> sections, int taskType, string productCode, string TaskNo, string sn, int status, int actionType, string tiggertime, string comptime, int projectid, int page, int pagesize); IPagedCollectionResult<ResponseAutomationTasklist> GetTasklistPagedList(List<int> sections, int taskType, string productCode, string TaskNo, string sn, int status, int actionType, string tirbeigin,string triend,string compbegin, string compend, int projectid, int page, int pagesize);
} }
} }
...@@ -9,7 +9,7 @@ namespace Siger.Middlelayer.AccRepository.Request ...@@ -9,7 +9,7 @@ namespace Siger.Middlelayer.AccRepository.Request
{ {
[Required(ErrorMessage = "guidNotNull")] [Required(ErrorMessage = "guidNotNull")]
/// <summary> /// <summary>
/// 任务列表GUID /// 任务列表taskNo
/// </summary> /// </summary>
public string guid { get; set; } public string guid { get; set; }
[Required(ErrorMessage = "status")] [Required(ErrorMessage = "status")]
......
...@@ -6,6 +6,7 @@ namespace Siger.Middlelayer.AccRepository.Request ...@@ -6,6 +6,7 @@ namespace Siger.Middlelayer.AccRepository.Request
{ {
public class RequestPLC public class RequestPLC
{ {
public string ProductCode { get; set; }
/// <summary> /// <summary>
/// 工件唯一识别SN /// 工件唯一识别SN
/// </summary> /// </summary>
......
...@@ -31,6 +31,8 @@ namespace Siger.Middlelayer.AccRepository.Response ...@@ -31,6 +31,8 @@ namespace Siger.Middlelayer.AccRepository.Response
public class ResponseAutomationLocationRouteInfo public class ResponseAutomationLocationRouteInfo
{ {
public int section { get; set; }
public int machine { get; set; }
public string fixture { get; set; } public string fixture { get; set; }
public string fixturename { get; set; } public string fixturename { get; set; }
public string ordernumber { get; set; } public string ordernumber { get; set; }
...@@ -39,8 +41,35 @@ namespace Siger.Middlelayer.AccRepository.Response ...@@ -39,8 +41,35 @@ namespace Siger.Middlelayer.AccRepository.Response
public int productId { get; set; } public int productId { get; set; }
public string productCode { get; set; } public string productCode { get; set; }
public string productName { get; set; } public string productName { get; set; }
public string route { get; set; } public int route { get; set; }
public string pn { get; set; } public string pn { get; set; }
/// <summary>
/// location.id主键
/// </summary>
public int lid { get; set; }
} }
public class ResponseAutoRouteInfo
{
public int Section { get; set; }
public int Machine { get; set; }
public string Pn { get; set; }
public int ProductId { get; set; }
public string ProductName { get; set; }
public int Route { get; set; }
public string RouteName { get; set; }
public string OrderNo { get; set; }
public string FixtureGuid { get; set; }
public string FixtureName { get; set; }
public string Sn { get; set; }
/// <summary>
/// 储位编号
/// </summary>
public int Location { get; set; }
/// <summary>
/// location.id
/// </summary>
public int LId { get; set; }
}
} }
...@@ -31,9 +31,19 @@ namespace Siger.Middlelayer.AccRepository.Response ...@@ -31,9 +31,19 @@ namespace Siger.Middlelayer.AccRepository.Response
/// 工件 /// 工件
/// </summary> /// </summary>
public string sn { get; set; } public string sn { get; set; }
/// <summary>
/// 工序顺序
/// </summary>
public string routenumber { get; set; } public string routenumber { get; set; }
/// <summary>
/// 工序萌宠
/// </summary>
public string route { get; set; } public string route { get; set; }
/// <summary> /// <summary>
/// 工序id
/// </summary>
public int routeid { get; set; }
/// <summary>
/// 物料状态 /// 物料状态
/// </summary> /// </summary>
public int materialstate { get; set; } public int materialstate { get; set; }
......
...@@ -15,6 +15,13 @@ namespace Siger.Middlelayer.AccRepository.Response ...@@ -15,6 +15,13 @@ namespace Siger.Middlelayer.AccRepository.Response
public int location { get; set; } public int location { get; set; }
public string sn { get; set; } public string sn { get; set; }
public int enable { get; set; } public int enable { get; set; }
/// <summary>
/// 设备状态
/// </summary>
public int machineStatus { get; set; }
/// <summary>
/// 任务状态
/// </summary>
public int status { get; set; } public int status { get; set; }
public string lastupdate { get; set; } public string lastupdate { get; set; }
public string linemode { get; set; } public string linemode { get; set; }
......
...@@ -46,5 +46,6 @@ namespace Siger.Middlelayer.AccRepository.Response ...@@ -46,5 +46,6 @@ namespace Siger.Middlelayer.AccRepository.Response
public string triggerTime { get; set; } public string triggerTime { get; set; }
public DateTime? complatevalue { get; set; } public DateTime? complatevalue { get; set; }
public string complatetime { get; set; } public string complatetime { get; set; }
public int send { get; set; }
} }
} }
...@@ -101,6 +101,8 @@ namespace Siger.Middlelayer.CncRepository.Repositories ...@@ -101,6 +101,8 @@ namespace Siger.Middlelayer.CncRepository.Repositories
var sectionIds = new List<int>(); var sectionIds = new List<int>();
var productIds = new List<string>(); var productIds = new List<string>();
var machineIds = new List<int>(); var machineIds = new List<int>();
var validates = new List<BeatSetEntity>();
foreach (var beatSetEntity in beatSetEntities) foreach (var beatSetEntity in beatSetEntities)
{ {
var sectionId = 0; var sectionId = 0;
...@@ -180,14 +182,26 @@ namespace Siger.Middlelayer.CncRepository.Repositories ...@@ -180,14 +182,26 @@ namespace Siger.Middlelayer.CncRepository.Repositories
{ {
errors.Add($"{rowIndex},{(int)RequestEnum.UpDownBesatNotInteger}"); errors.Add($"{rowIndex},{(int)RequestEnum.UpDownBesatNotInteger}");
} }
var route = _context.siger_project_product_route.FirstOrDefault(f =>f.projectId==projectid && f.productId == product.id && f.name == beatSetEntity.RouteName);
if (route == null)
{
errors.Add($"{rowIndex},{(int)RequestEnum.RouteNotFound}");
}
if (errors.Any()) if (errors.Any())
{ {
return new CommonImportResult(0, string.Join(";", errors)); return new CommonImportResult(0, string.Join(";", errors));
} }
beatSetEntity.RouteNumber = route.id.ToString();
validates.Add(beatSetEntity);
} }
var index = 0; var index = 0;
var maxTime = "2199-01-01 00:00:00".ToDateTime(); var maxTime = "2199-01-01 00:00:00".ToDateTime();
foreach (var entity in beatSetEntities) foreach (var entity in validates)
{ {
var beat = new siger_project_beat_set var beat = new siger_project_beat_set
{ {
...@@ -201,12 +215,14 @@ namespace Siger.Middlelayer.CncRepository.Repositories ...@@ -201,12 +215,14 @@ namespace Siger.Middlelayer.CncRepository.Repositories
product_name = productIds[index], product_name = productIds[index],
section_id = sectionIds[index], section_id = sectionIds[index],
standard_besat = entity.CycleTime.ToInt(), standard_besat = entity.CycleTime.ToInt(),
route_name = entity.RouteName, route_name = entity.RouteName,
machineID = machineIds.Count>index?machineIds[index]:0, machineID = machineIds.Count>index?machineIds[index]:0,
changemodeltime = entity.ChangeModelTime.ToInt(), changemodeltime = entity.ChangeModelTime.ToInt(),
updown_besat = entity.UpDownBesat.ToDouble(), updown_besat = entity.UpDownBesat.ToDouble(),
yieldrate = entity.YieldRate.ToInt(), yieldrate = entity.YieldRate.ToInt(),
route_number = entity.RouteNumber, //route_number = entity.RouteNumber,
route_number=entity.RouteNumber,
start_time = string.IsNullOrEmpty(entity.StartTime) ? DateTime.MinValue : entity.StartTime.ToDateTime(), start_time = string.IsNullOrEmpty(entity.StartTime) ? DateTime.MinValue : entity.StartTime.ToDateTime(),
end_time = string.IsNullOrEmpty(entity.EndTime) ? maxTime : entity.EndTime.ToDateTime().AddDays(1).AddSeconds(-1) end_time = string.IsNullOrEmpty(entity.EndTime) ? maxTime : entity.EndTime.ToDateTime().AddDays(1).AddSeconds(-1)
}; };
......
...@@ -13,6 +13,10 @@ namespace Siger.Middlelayer.CncRepository.Request ...@@ -13,6 +13,10 @@ namespace Siger.Middlelayer.CncRepository.Request
public string product_name_text { get; set; } public string product_name_text { get; set; }
/// <summary>
/// productId
/// </summary>
[Required(ErrorMessage = "ProductNameIsEmpty")] [Required(ErrorMessage = "ProductNameIsEmpty")]
public string product_name { get; set; } public string product_name { get; set; }
...@@ -24,6 +28,11 @@ namespace Siger.Middlelayer.CncRepository.Request ...@@ -24,6 +28,11 @@ namespace Siger.Middlelayer.CncRepository.Request
public string time_num { get; set; } public string time_num { get; set; }
/// <summary>
/// 产品工序表ID
/// </summary>
public int route_id { get; set; }
public string route_number { get; set; } public string route_number { get; set; }
public string route_name { get; set; } public string route_name { get; set; }
......
...@@ -375,6 +375,7 @@ CREATE TABLE `siger_automation_machine_status` ( ...@@ -375,6 +375,7 @@ CREATE TABLE `siger_automation_machine_status` (
`machineid` int NOT NULL DEFAULT '0' COMMENT '工位对应设备ID', `machineid` int NOT NULL DEFAULT '0' COMMENT '工位对应设备ID',
`projectid` int NOT NULL DEFAULT '0', `projectid` int NOT NULL DEFAULT '0',
`enable` int NOT NULL DEFAULT '1' COMMENT '设备可用状态 0:不可用 1:可用', `enable` int NOT NULL DEFAULT '1' COMMENT '设备可用状态 0:不可用 1:可用',
`auto` int NOT NULL DEFAULT '1' COMMENT '设备可用状态 0:上下料设备 1:自动设备',
`status` int NOT NULL DEFAULT '1' COMMENT '完工状态 0:取消 1:待生产 2:生产中 3:生产完成 ', `status` int NOT NULL DEFAULT '1' COMMENT '完工状态 0:取消 1:待生产 2:生产中 3:生产完成 ',
`updatetime` datetime DEFAULT NULL COMMENT '操作时间', `updatetime` datetime DEFAULT NULL COMMENT '操作时间',
`program` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '程序号', `program` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '程序号',
...@@ -445,6 +446,8 @@ CREATE TABLE `siger_automation_fixture_tools_moniter` ( ...@@ -445,6 +446,8 @@ CREATE TABLE `siger_automation_fixture_tools_moniter` (
`productCode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '产品CODE', `productCode` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '产品CODE',
`productName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '产品名称', `productName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '产品名称',
`locationId` int(11) NOT NULL DEFAULT 0, `locationId` int(11) NOT NULL DEFAULT 0,
`unixtime` int(1) NOT NULL DEFAULT 1 COMMENT 'task时间',
`taskno` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '当前任务单',
`status` int(1) NOT NULL DEFAULT 1 COMMENT '', `status` int(1) NOT NULL DEFAULT 1 COMMENT '',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; ) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
......
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