Commit 6d235900 by xin.yang
parents 9f5b644a b96d84c0
......@@ -5,7 +5,7 @@
<div class="choose">
<p class="selectTitle">
1.请选择生产线
<span class="red">*</span>
<!-- <span class="red">*</span> -->
</p>
<div class="row">
<p
......@@ -19,17 +19,14 @@
</p>
</div>
<div class="choose">
<p class="selectTitle">
2.上下料工位
<span class="red">*</span>
</p>
<p class="selectTitle">2.上下料工位</p>
<div class="row">
<div
:key="index"
class="options2"
v-for="(item, index) in stationList"
@click="change(index)"
:class="{ active: a == index }"
@click="change2(index)"
:class="{ active: b == index }"
>
<p>{{ item.title }}</p>
<p>{{ item.status == 1 ? "待上料" : "运行中" }}</p>
......@@ -37,18 +34,19 @@
</div>
</div>
<div class="choose">
<p class="selectTitle">
3.操作
<span class="red">*</span>
</p>
<p class="selectTitle">3.操作</p>
<Tabs type="card">
<TabPane label="上料" :disabled="attr1">
<div class="filter">
<label style="font-size: 16px"
>上料信息:</label
>
<Input type="text" class="searchInput"
style="width: 300px"/>
<Input
type="text"
class="searchInput"
style="width: 300px"
@keyup.enter="getWorkOrderInfo()"
/>
</div>
<div class="row">
<p class="flex">
......@@ -149,8 +147,16 @@
</p>
</div>
<div>
<Button type="primary">准备上料</Button>
<Button type="primary">安装完成</Button>
<Button
type="primary"
@click="feedReady()"
>准备下料</Button
>
<Button
type="primary"
@click="installOver()"
>拆卸完成</Button
>
</div>
</div>
</div></TabPane
......@@ -199,6 +205,7 @@ export default {
productionLine: [],
stationList: [],
a: -1,
b: -1,
attr1: false, //上料、下料、上下料
attr2: false, //上料、下料、上下料
modal: false,
......@@ -209,26 +216,26 @@ export default {
render: (h, params) => {
return h(
"span",
params.index + (this.page - 1) * this.pagesize + 1
params.index + 1
);
},
width: 70,
},
{
title: "仓库",
key: "warehouse",
key: "wavehouse",
},
{
title: "储位编号",
key: "storage_sn",
key: "locationcode",
},
{
title: "工装编号",
key: "install_sn",
key: "code",
},
{
title: "工件编号",
key: "workpiece_sn",
key: "materialsn",
},
],
data1: [],
......@@ -239,22 +246,22 @@ export default {
render: (h, params) => {
return h(
"span",
params.index + (this.page - 1) * this.pagesize + 1
params.index+ 1
);
},
width: 70,
},
{
title: "储位编号",
key: "storage_sn",
key: "locationcode",
},
{
title: "工装编号",
key: "install_sn",
key: "code",
},
{
title: "工件编号",
key: "workpiece_sn",
key: "materialsn",
},
],
data2: [],
......@@ -262,6 +269,7 @@ export default {
},
created() {
this.getProLine();
this.getStorages();
},
mounted() {
// this.getStations()
......@@ -303,11 +311,22 @@ export default {
this.a = i;
this.getStations(this.productionLine[i].id);
},
change2(index) {
this.b = index;
let status = this.stationList[index].status;
if (status == 1) {
this.attr2 = true;
}
},
//获取储位
getStorages() {
this.request("", "", "")
this.request("/acc/AutomationLocation/GetLocationList", "", "get")
.then((res) => {
console.log(res.data.data);
if (res.data.ret == 1) {
this.data1 = res.data.data;
this.data2 = res.data.data;
}
})
.catch((err) => {
......@@ -325,6 +344,33 @@ export default {
console.log(err);
});
},
feedReady() {
// 准备上料
let data = {
section: 13,
code: "234324",
};
this.request("/acc/AutomationOperate/Loading", data, "post").thne((res) => {
if (res.data.ret == 1) {
}
});
},
installOver() {
// 安装完成
let data = {
section: 13
};
this.request("", data, "post").thne(
(res) => {
if (res.data.ret == 1) {
}
}
);
},
request(url, data, type) {
if (type == "get") {
return this.axios
......
......@@ -15,7 +15,17 @@
</Select>
</div>
<div class="filter">
<label>夹具类型:</label>
<label>工装编号:</label>
<Select
label-in-value
clearable
filterable
class="searchSelect"
>
</Select>
</div>
<div class="filter">
<label>状态:</label>
<Select
label-in-value
clearable
......@@ -112,8 +122,9 @@
export default {
data() {
return {
columns1: [
columns1:[
{
type: "index2",
title: this.$t("1008"),
key: "xuhao",
render: (h, params) => {
......@@ -122,13 +133,90 @@ export default {
params.index + (this.page - 1) * this.pagesize + 1
);
},
width: 70,
},
{
title: this.$t("100089"),
key: "productcode",
minWidth: 150,
title:'工装类型',
key:'category'
},
{
title:'管理类型',
key:'managetype',
render:(h,params)=>{
let str = '';
if(params.row.managetype===1){
str = '单件';
}else if(params.row.managetype===2){
str = '批次';
}
return h('span',str);
}
},
{
title:'工装料号',
key:'partnumber'
},
{
title:'工装名称',
key:'name'
},
{
title:'工装编号',
key:'code'
},
{
title:'规格型号',
key:'specification'
},
{
title:'数量',
key:'number'
},
{
title:'状态',
key:'status',
render:(h,params)=>{
let str = '';
if(params.row.status===1){
str = '可用';
}else{
str = '停用';
}
return h('span',str);
}
},
{
title:'备注',
key:'remark'
},
{
title:'附件',
key:'filename',
render:(h,params)=>{
return h('span',{
style:{
color:'#2b85e4',
cursor:'pointer'
},
on:{
click:()=>{
let name = params.row.filename;
let url = params.row.fileurl;
if(url){
this.downFile(url,name);
}
}
}
},params.row.filename);
}
},
{
title:'维护人',
key:'updator'
},
{
title:'维护时间',
key:'updatetime'
}
],
data1: [],
total: 0,
......
......@@ -7,20 +7,31 @@
</div>
<div class="filter">
<label>工装名称:</label>
<Input type="text" class="searchInput" v-model="frockname" />
<Select v-model="frockid" label-in-value clearable filterable filter-by-label class="searchSelect">
<Option
v-for="(item,index) in frockList"
:value="item.id"
:key="index"
:label="item.name+'#'+item.code"
>{{ item.name+'#'+item.code }}</Option>
</Select>
</div>
<div class="filter">
<label>状态:</label>
<Select v-model="status" clearable class="searchSelect">
<Option :value="1">可用</Option>
<Option :value="0">停用</Option>
<label>产品名称:</label>
<Select v-model="productid" label-in-value clearable filterable filter-by-label class="searchSelect">
<Option
v-for="(item,index) in productList"
:value="item.id"
:key="index"
:label="item.name+'#'+item.code+'#'+item.drawingcode"
>{{ item.name+'#'+item.code+'#'+item.drawingcode }}</Option>
</Select>
</div>
<div class="searchBtn">
<Button type="primary" class="twoWord" icon="ios-search" @click="tosearch()">{{ $t(1001) }}</Button>
<Button type="success" class="twoWord" icon="md-add-circle" @click="add()">{{$t('1002')}}</Button>
<Button type="warning" class="twoWord" icon="ios-create-outline" @click="edit()">{{$t('1003')}}</Button>
<Button type="error" class="twoWord intervalRight" icon="md-close-circle" @click="dele()">{{ $t(1004) }}</Button>
<Button type="primary" class="fourWord" icon="md-download" @click="loadexcel()">{{$t('1005')}}</Button>
<Upload
style="display:inline-block"
......@@ -32,7 +43,7 @@
:on-format-error="handleFormatError"
:on-success="handleSuccess"
:on-error="handleError"
:format="['xlsx']"
:format="['xlsx','xls']"
>
<Button
type="primary"
......@@ -77,42 +88,30 @@
<div>正在上传...</div>
</Spin>
<div class="filter">
<label><i>*</i>工装类型:</label>
<label>工装类型:</label>
<Cascader class="searchSelect" :data="frockTypeTree" v-model="parentType" change-on-select @on-change="changeFrockType1"></Cascader>
</div>
<div class="filter">
<label><i>*</i>管理类型:</label>
<Select v-model="addmtype" class="searchSelect">
<Option :value="1">单件</Option>
<Option :value="2">批次</Option>
</Select>
</div>
<div class="filter">
<label><i>*</i>工装名称:</label>
<Input type="text" class="searchInput" v-model="addfrockname" />
</div>
<div class="filter">
<label><i>*</i>工装料号:</label>
<Input type="text" class="searchInput" v-model="addfrockno" />
</div>
<div class="filter">
<label><i>*</i>工装编号:</label>
<Input type="text" class="searchInput" v-model="addfrockcode" />
</div>
<div class="filter">
<label><i>*</i>规格型号:</label>
<Input type="text" class="searchInput" v-model="addfrockspec" />
</div>
<div class="filter">
<label><i>*</i>数量:</label>
<InputNumber type="text" class="searchInput" :min="1" :formatter="value => `${parseInt(value)}`" v-model="addnum" />
<Select v-model="addfrockid" label-in-value clearable filterable filter-by-label class="searchSelect">
<Option
v-for="(item,index) in addfrockList"
:value="item.id"
:key="index"
:label="item.name+'#'+item.code"
>{{ item.name+'#'+item.code }}</Option>
</Select>
</div>
<div class="filter">
<label><i>*</i>状态:</label>
<RadioGroup v-model="addstatus">
<Radio label="1"><span>可用</span></Radio>
<Radio label="0"><span>停用</span></Radio>
</RadioGroup>
<label><i>*</i>产品名称:</label>
<Select v-model="addproductid" label-in-value clearable filterable filter-by-label class="searchSelect">
<Option
v-for="(item,index) in productList"
:value="item.id"
:key="index"
:label="item.name+'#'+item.code+'#'+item.drawingcode"
>{{ item.name+'#'+item.code+'#'+item.drawingcode }}</Option>
</Select>
</div>
<div class="filter">
<label>备注:</label>
......@@ -124,9 +123,9 @@
<Upload
ref="upload"
:show-upload-list="false"
:on-success="handleSuccess"
:on-success="handleSuccess1"
:before-upload="handleBeforeUpload"
:on-error="handleError"
:on-error="handleError1"
type="drag"
:headers="headers"
:action="UploadAction">
......@@ -162,9 +161,10 @@ export default {
frockTypeTree:[],//树形结构
frockType:[],//工装类型
frockTypeid:'',
frockcode:'',//工装编号
frockname:'',//工装名称
status:'',//状态
frockList:[],//工装列表
frockid:'',//工装id
productList:[],//产品列表
productid:'',//产品id
//列表
total:0,
......@@ -185,20 +185,7 @@ export default {
},
{
title:'工装类型',
key:'category'
},
{
title:'管理类型',
key:'managetype',
render:(h,params)=>{
let str = '';
if(params.row.managetype===1){
str = '单件';
}else if(params.row.managetype===2){
str = '批次';
}
return h('span',str);
}
key:'categoryname'
},
{
title:'工装料号',
......@@ -206,32 +193,19 @@ export default {
},
{
title:'工装名称',
key:'name'
},
{
title:'工装编号',
key:'code'
key:'fixturetool'
},
{
title:'规格型号',
key:'specification'
key:'specfication'
},
{
title:'数量',
key:'number'
title:'产品编号',
key:'productcode'
},
{
title:'状态',
key:'status',
render:(h,params)=>{
let str = '';
if(params.row.status===1){
str = '可用';
}else{
str = '停用';
}
return h('span',str);
}
title:'产品名称',
key:'productname'
},
{
title:'备注',
......@@ -272,16 +246,11 @@ export default {
detailobj:{},
addmodal:false,
type:0,//1添加 2编辑
parentType:[],//父级类型
parentType:[],//工装类型
parentTypeid:'',
frockTypename:'',//工装类型名称
addmtype:1,//管理类型
addfrockname:'',//工装名称
addfrockno:'',//工装料号
addfrockcode:'',//工装编号
addnum:0,
addstatus:'1',//状态 1可用 0停用
addfrockspec:'',//规格型号
addfrockList:[],
addfrockid:'',//工装id
addproductid:'',//产品
addremark:'',//备注
filename: '',//文件名称
fileurl:'',//文件路径
......@@ -297,6 +266,8 @@ export default {
},
created(){
this.initFrockType();//工装类型
this.getFrocks();//工装
this.iniproducts();//产品
this.tosearch();
this.tableColumns1 = this.$time.initTableTitle(this.tableColumns1);
},
......@@ -333,6 +304,7 @@ export default {
this.frockTypeid = "";
if(value!=undefined && value.length){
this.frockTypeid = value[value.length - 1];
this.getFrocksChange(1);
}
},
changeFrockType1(value){
......@@ -341,21 +313,85 @@ export default {
if(value!=undefined && value.length){
this.parentTypeid = value[value.length - 1];
this.parentType = value;
this.getFrocksChange(2);
}
},
//获取工装列表
//获取工装下拉框
getFrocks(){
// this.axios.request({
// url: "/fms/accountInfo/frockList",
// method: "get",
// })
// .then((res) => {
// this.frockList = [];
// let data = res.data.data;
// if (res.data.ret == 1&&Array.isArray(data)&&data.length) {
// this.frockList = data;
// }
// });
let params = {
category:'',//工装类型id
code:'',
name:'',
state:1, //0停用 1可用
page:1,
pagesize:1000000,
toexcel:0 //0查询 1导出
}
this.axios.request({
url: "/acc/FixtureTools/GetPageList",
params,
method: "get",
})
.then((res) => {
this.frockList = [];
this.addfrockList = [];
let data = res.data.data;
if (res.data.ret == 1 &&Array.isArray(data)&&data.length) {
this.frockList = res.data.data;
this.addfrockList = res.data.data;
}
});
},
getFrocksChange(num){
this.addfrockid = '';
let params = {
category:num==1?this.frockTypeid:this.parentTypeid,//工装类型id
code:'',
name:'',
state:1, //0停用 1可用
page:1,
pagesize:1000000,
toexcel:0 //0查询 1导出
}
this.axios.request({
url: "/acc/FixtureTools/GetPageList",
params,
method: "get",
})
.then((res) => {
if(num == 1){
this.frockList = [];
}else{
this.addfrockList = [];
}
let data = res.data.data;
if (res.data.ret == 1 &&Array.isArray(data)&&data.length) {
if(num == 1){
this.frockList = res.data.data;
}else{
this.addfrockList = res.data.data;
}
}
});
},
//查询产品
iniproducts() {
var params = {
name: '',
count: 1000000
}
this.axios.request({
url: '/config/ProjectProduct/GetProductsByCode',
params,
method: 'get'
})
.then(res => {
this.productList = [];
let data = res.data.data;
if(res.data.ret ===1 &&Array.isArray(data)&&data.length){
this.productList = res.data.data
}
})
},
tosearch(){
this.page = 1;
......@@ -364,17 +400,16 @@ export default {
},
search(toexcel){
let params = {
category:this.frockType,//工装类型id
code:this.frockcode,
name:this.frockname,
state:this.status, //0停用 1可用
category:this.frockTypeid,//工装类别ID
tool:this.frockid,//工装信息ID
product:this.productid,//产品ID
page:this.page,
pagesize:this.pagesize,
toexcel:toexcel //0查询 1导出
}
this.detailobj = {};
this.axios.request({
url: "/acc/FixtureTools/GetPageList",
url: "/acc/FixtureToolsProduct/GetPageList",
params,
method: "get",
})
......@@ -382,7 +417,7 @@ export default {
if(toexcel === 1){
if (res.data.ret === 1) {
window.location.href =
axios.publicPath + "" + res.data.data;
this.axios.publicPath + "" + res.data.data;
} else {
this.$Message.error(this.$t(res.data.msg));
}
......@@ -402,14 +437,8 @@ export default {
this.type = 1;
this.parentType = [];//工装类型 清空
this.parentTypeid = '';
this.addmtype = 1;//管理类型
this.addfrockname = '';//工装名称
this.addfrockno = '';//工装料号
this.addfrockcode = '';//工装编号
this.addnum = 1;
this.addfrockspec = '';
this.addstatus = '1';//状态 1可用 0停用
this.addfrockid = '';//工装id
this.addproductid = '';//产品
this.addremark = '';//备注
this.filename = '';//文件名称
this.fileurl = '';//文件路径
......@@ -421,68 +450,41 @@ export default {
return false;
}
this.type = 2;
this.parentType = [];//工装类型 清空
this.parentTypeid = this.detailobj.categoryid;
this.parentType = this.detailobj.categoryids;
this.addmtype = this.detailobj.managetype;//管理类型
this.addfrockname = this.detailobj.name;//工装名称
this.addfrockno = this.detailobj.partnumber;//工装料号
this.addfrockcode = this.detailobj.code;//工装编号
this.addnum = this.detailobj.number;
this.addfrockspec = this.detailobj.specification;
this.addstatus = this.detailobj.status+'';//状态 1可用 0停用
this.addfrockid = this.detailobj.fixturetoolid;//工装id
this.addproductid = this.detailobj.productid;//产品
this.addremark = this.detailobj.remark;//备注
this.filename = this.detailobj.filename;//文件名称
this.fileurl = this.detailobj.fileurl;//文件路径
this.addmodal = true;
},
addPost(){
if(!this.parentTypeid){
this.$Message.error("请选择工装类型");
return false;
}
if(!this.addfrockname){
if(!this.addfrockid){
this.$Message.error("请输入工装名称");
return false;
}
if(!this.addfrockno){
this.$Message.error("请输入工装料号");
return false;
}
if(!this.addfrockcode){
this.$Message.error("请输入工装编号");
return false;
}
if(!this.addfrockspec){
this.$Message.error("请输入规格型号");
if(!this.addproductid){
this.$Message.error("请输入产品名称");
return false;
}
if(!this.addnum){
this.$Message.error("请输入工装数量");
return false;
}
let url = '';
let id = '';
if(this.type === 1){
url = '/acc/FixtureTools/Add';
url = '/acc/FixtureToolsProduct/Add';
id = 0;
}
else{
url = '/acc/FixtureTools/Update';
url = '/acc/FixtureToolsProduct/Update';
id = this.detailobj.id;
}
let data = {
id:id,
categoryid:this.parentTypeid,//工装类型id
managetype:this.addmtype,
partnumber:this.addfrockno,//料号
code:this.addfrockcode,//编号
name:this.addfrockname,//名称
specifition:this.addfrockspec,//规格型号
number:this.addnum,//数量
fixturetoolid:this.addfrockid,//工装id
productid:this.addproductid,
remark:this.addremark,//备注
status:this.addstatus,//附件
fileurl:this.fileurl,
filename:this.filename
}
......@@ -515,7 +517,7 @@ export default {
return false;
}
},
handleSuccess (res,file) {
handleSuccess1 (res,file) {
this.spinShow = false;
if (res.ret == 1) {
this.$Message.success(this.$t("100378"));
......@@ -525,7 +527,8 @@ export default {
this.$Message.error(this.$t(res.msg+''));
}
},
handleError(){
handleError1(){
this.spinShow = false;
this.$Message.error(this.$t("600512") + "!");
},
delfile(){
......@@ -536,44 +539,65 @@ export default {
//下载文件
downFile(url,fileName){
let params = {
file_url: url,
url: url,
name:fileName
};
this.axios.request({
url: "/config/Download/DownloadFile",
url: "/config/Download/DownloadFileByUrl",
params,
method: "get",
responseType: "blob"
})
.then((res) => {
if (res.data.ret === 1) {
var info = res.data.data;
var content = info.content;
// 创建隐藏的可下载链接
var eleLink = document.createElement("a");
eleLink.download = fileName;
eleLink.style.display = "none";
// 字符内容转变成blob地址
var blob = new Blob([content]);
eleLink.href = URL.createObjectURL(blob);
// 触发点击
document.body.appendChild(eleLink);
eleLink.click();
// 然后移除
document.body.removeChild(eleLink);
} else {
this.$Message.error(this.$t(res.data.msg));
if (res.status == 200) {
let url;
let link = document.createElement("a");
url = window.URL.createObjectURL(res.data);
link.style.display = "none";
link.href = url;
link.setAttribute("download", fileName);
document.body.appendChild(link);
link.click();
}
})
// console.log(fileName)
// console.log(data)
// let url = window.URL.createObjectURL(new Blob([data]));
// let link = document.createElement("a");
// link.style.display = "none";
// link.href = url;
// link.setAttribute("download", fileName);
// document.body.appendChild(link);
// link.click();
}).catch(error=>{
this.$Message.error('请求错误')
});
},
//删除
dele(){
if (
this.detailobj.id === undefined ||
this.detailobj.id === null
) {
this.$Message.error(this.$t("1017"));
return false;
} else {
var params = {
id: this.detailobj.id,
};
this.$Modal.confirm({
title: this.$t("1018"),
content: "",
width: "290px",
closable: true,
okText: this.$t("1004"),
onOk: () => {
this.axios.request({
url: "/acc/FixtureToolsProduct/Delete",
params,
method: "get",
})
.then((res) => {
if (res.data.ret === 1) {
this.$Message.success(this.$t("1058"));
this.search(0);
} else {
this.$Message.error(this.$t(res.data.msg));
}
});
},
});
}
},
//导出模板
loadexcel() {
......
......@@ -35,7 +35,7 @@
:on-format-error="handleFormatError"
:on-success="handleSuccess"
:on-error="handleError"
:format="['xlsx']"
:format="['xlsx','xls']"
>
<Button
type="primary"
......@@ -275,7 +275,7 @@ export default {
detailobj:{},
addmodal:false,
type:0,//1添加 2编辑
parentType:[],//父级类型
parentType:[],//工装类型
parentTypeid:'',
frockTypename:'',//工装类型名称
addmtype:1,//管理类型
......@@ -346,20 +346,6 @@ export default {
this.parentType = value;
}
},
//获取工装列表
getFrocks(){
// this.axios.request({
// url: "/fms/accountInfo/frockList",
// method: "get",
// })
// .then((res) => {
// this.frockList = [];
// let data = res.data.data;
// if (res.data.ret == 1&&Array.isArray(data)&&data.length) {
// this.frockList = data;
// }
// });
},
tosearch(){
this.page = 1;
this.pagesize = 10;
......@@ -367,7 +353,7 @@ export default {
},
search(toexcel){
let params = {
category:this.frockType,//工装类型id
category:this.frockTypeid,//工装类型id
code:this.frockcode,
name:this.frockname,
state:this.status, //0停用 1可用
......@@ -385,7 +371,7 @@ export default {
if(toexcel === 1){
if (res.data.ret === 1) {
window.location.href =
axios.publicPath + "" + res.data.data;
this.axios.publicPath + "" + res.data.data;
} else {
this.$Message.error(this.$t(res.data.msg));
}
......@@ -518,7 +504,7 @@ export default {
return false;
}
},
handleSuccess (res,file) {
handleSuccess1 (res,file) {
this.spinShow = false;
if (res.ret == 1) {
this.$Message.success(this.$t("100378"));
......@@ -528,7 +514,8 @@ export default {
this.$Message.error(this.$t(res.msg+''));
}
},
handleError(){
handleError1(){
this.spinShow = false;
this.$Message.error(this.$t("600512") + "!");
},
delfile(){
......
......@@ -21,7 +21,7 @@
:on-format-error="handleFormatError"
:on-success="handleSuccess"
:on-error="handleError"
:format="['xlsx']"
:format="['xlsx','xls']"
>
<Button
type="primary"
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -28,7 +28,7 @@
:on-format-error="handleFormatError"
:on-success="handleSuccess"
:on-error="handleError"
:format="['xlsx']"
:format="['xlsx','xls']"
>
<Button
type="primary"
......
......@@ -33,7 +33,7 @@
:on-format-error="handleFormatError"
:on-success="handleSuccess"
:on-error="handleError"
:format="['xlsx']"
:format="['xlsx','xls']"
>
<Button
type="primary"
......
......@@ -28,8 +28,11 @@ namespace Siger.ApiACC.Controllers
private readonly IAutomationMachineStatus _automationMachineStatus;
private readonly ISigerProjectMachineAttributionRepository _sigerProjectMachineAttribution;
private readonly IAutomationTaskListRepository _automationTaskList;
private readonly IProductPlanDetails _planDetails;
private readonly IProductPlanRepository _productPlan;
public AutomationOperateController(IUnitOfWork unitOfWork,ISigerProjectLevelSectionRepository sigerProjectLevelSection , ISigerDict sigerDict,IAutomationMachineStatus automationMachineStatus,ISigerProjectMachineAttributionRepository sigerProjectMachineAttribution,IAutomationTaskListRepository automationTaskList)
public AutomationOperateController(IUnitOfWork unitOfWork,ISigerProjectLevelSectionRepository sigerProjectLevelSection , ISigerDict sigerDict,IAutomationMachineStatus automationMachineStatus,ISigerProjectMachineAttributionRepository sigerProjectMachineAttribution,IAutomationTaskListRepository automationTaskList,
IProductPlanDetails planDetails,IProductPlanRepository productPlan)
{
_unitOfWork = unitOfWork;
_sigerProjectLevelSection = sigerProjectLevelSection;
......@@ -37,6 +40,8 @@ namespace Siger.ApiACC.Controllers
_automationMachineStatus = automationMachineStatus;
_sigerProjectMachineAttribution = sigerProjectMachineAttribution;
_automationTaskList = automationTaskList;
_planDetails = planDetails;
_productPlan = productPlan;
}
/// <summary>
......@@ -163,7 +168,20 @@ namespace Siger.ApiACC.Controllers
{
throw new BadRequestException(AccEnum.TaskProcessing);
}
var plandts = _planDetails.Get(f => f.projectId == ProjectId && f.OrderNumber == loading.code);
if (plandts==null)
{
throw new BadRequestException(CncEnum.PlanHasExist);
}
var plan = _productPlan.Get(f => f.id == plandts.PlanId);
if (plan == null)
{
throw new BadRequestException(CncEnum.PlanHasExist);
}
var taskNo = _automationTaskList.CrateTaskNumber(Automation.TaskTrigerType.Manual);
var sn = _automationTaskList.CreateRandonSn(plan.product_code);
_automationTaskList.Insert(new siger_automation_task_list
{
......@@ -180,6 +198,9 @@ namespace Siger.ApiACC.Controllers
completetime=DateTime.MinValue,
trigger= Automation.TaskTrigerType.Manual,
projectId=ProjectId,
productid=plan.product_id,
sn=sn,
ordercode=plandts.OrderNumber,
remark="手动任务",
});
......
......@@ -15,6 +15,7 @@ namespace Siger.Middlelayer.Common.Helpers
public const string DateTimeFormatYmd = "yyyyMMdd";
public const string TimeFormat = "HH:mm:ss";
public const string DateTimeFormatYYmmdd = "yyMMdd";
/// <summary>
/// unix time to date-->yyyyMMdd
......
......@@ -165,5 +165,7 @@ namespace Siger.Middlelayer.AccRepository
public DbSet<siger_automation_machine_status> siger_automation_machine_status { 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; }
}
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Siger.Middlelayer.AccRepository.Entities
{
public class siger_automation_fixture_tools_monitor:AccEntityBase
{
/// <summary>
/// 工装ID
/// </summary>
public int fixtureId { get; set; }
/// <summary>
/// 当前工站ID
/// </summary>
public int section { get; set; }
/// <summary>
/// 当前Sn
/// </summary>
public string sn { get; set; }
/// <summary>
/// 工序ID
/// </summary>
public int route { get; set; }
/// <summary>
/// 工序描述
/// </summary>
public string routedesc { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime createtime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime updatetime { get; set; }
}
}
......@@ -26,7 +26,7 @@ namespace Siger.Middlelayer.AccRepository.Entities
/// <summary>
/// 工件ID
/// </summary>
public int materialid { get; set; }
public string sn { get; set; }
/// <summary>
/// 工单号
/// </summary>
......
using Siger.Middlelayer.AccRepository.Entities;
using Siger.Middlelayer.AccRepository.Repositories.Interface;
using System;
using System.Collections.Generic;
using System.Text;
namespace Siger.Middlelayer.AccRepository.Repositories
{
internal class AutomationFixtureMonitor : AccRepositoryBase<siger_automation_fixture_tools_monitor>, IAutomationFixtureMonitor
{
public AutomationFixtureMonitor(ApiAccDbContext context) : base(context)
{
}
}
}
......@@ -2,6 +2,7 @@
using System.Linq;
using System.Linq.Expressions;
using Microsoft.EntityFrameworkCore;
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
using Siger.Middlelayer.AccRepository.Entities;
using Siger.Middlelayer.AccRepository.Repositories.Interface;
using Siger.Middlelayer.Common.Helpers;
......@@ -45,5 +46,14 @@ namespace Siger.Middlelayer.AccRepository.Repositories
return $"M{radon}T{lable}";
}
}
public string CreateRandonSn(string productCode)
{
var date = DateTime.Now;
var serinum = date.DayOfYear+date.Hour + date.Minute + date.Second + date.Millisecond;
var randon = new Random().Next(1000, 9999);
return $"{productCode}{date.ToString(UnixTimeHelper.DateTimeFormatYmd)}{serinum}{randon}";
}
}
}
using Siger.Middlelayer.AccRepository.Entities;
using System;
using System.Collections.Generic;
using System.Text;
namespace Siger.Middlelayer.AccRepository.Repositories.Interface
{
public interface IAutomationFixtureMonitor : IAccRepositoryBase<siger_automation_fixture_tools_monitor>
{
}
}
......@@ -16,5 +16,11 @@ namespace Siger.Middlelayer.AccRepository.Repositories.Interface
/// <param name="section"></param>
/// <returns></returns>
bool CanTask(int projectId,int section);
/// <summary>
/// 创建随机工件号码 SN
/// </summary>
/// <returns></returns>
string CreateRandonSn(string productCode);
}
}
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