|
|
@@ -131,6 +131,7 @@ class WorkOrder extends Api
|
|
|
$relatedOrders = \db('工单_相关附件')
|
|
|
->whereIn('关联编号', $orderIds)
|
|
|
->whereIn('附件备注', '技术附件')
|
|
|
+ ->whereNull('mod_rq')
|
|
|
->column('关联编号');
|
|
|
|
|
|
// 遍历数据,判断每个订单编号是否在相关附件表中
|
|
|
@@ -140,8 +141,16 @@ class WorkOrder extends Api
|
|
|
} else {
|
|
|
$value['status'] = '*'; // 没有相关附件,标记为新订单
|
|
|
}
|
|
|
+ if ($value['落货日期']) {
|
|
|
+ $value['落货日期'] = date('Y-m-d', strtotime($value['落货日期']));
|
|
|
+ }
|
|
|
+ // 格式化接单日期,去掉时间部分
|
|
|
+ if ($value['接单日期']) {
|
|
|
+ $value['接单日期'] = date('Y-m-d', strtotime($value['接单日期']));
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
$this->success('成功', ['data' => $list, 'total' => count($count)]);
|
|
|
}
|
|
|
|
|
|
@@ -813,8 +822,41 @@ class WorkOrder extends Api
|
|
|
$this->error('不支持的附件类型');
|
|
|
}
|
|
|
|
|
|
+ // 获取最新的记录,按 sys_rq 降序排列
|
|
|
+ $latestItems = \db('工单_相关附件')
|
|
|
+ ->where('关联编号', $relateId) // 根据关联编号筛选
|
|
|
+ ->where('附件备注', $req['附件备注']) // 根据附件备注筛选
|
|
|
+ ->whereNull('mod_rq')
|
|
|
+ ->order('sys_rq desc') // 按照 sys_rq 降序排列
|
|
|
+ ->group('关联编号') // 按关联编号分组,获取每个订单的最新记录
|
|
|
+ ->find();
|
|
|
+
|
|
|
+ // 假设获取到的 version 字段是类似 v1.1, v1.2, v1.9 这样的格式
|
|
|
+ $currentVersion = $latestItems['version']; // 当前记录的 version
|
|
|
+
|
|
|
+ // 解析当前版本号
|
|
|
+ if (preg_match('/v(\d+)\.(\d+)/', $currentVersion, $matches)) {
|
|
|
+ $majorVersion = (int)$matches[1]; // 主版本号
|
|
|
+ $minorVersion = (int)$matches[2]; // 次版本号
|
|
|
+
|
|
|
+ // 递增次版本号,若次版本号为 9,则主版本号加 1,次版本号置为 0
|
|
|
+ if ($minorVersion < 9) {
|
|
|
+ $minorVersion++;
|
|
|
+ } else {
|
|
|
+ $majorVersion++;
|
|
|
+ $minorVersion = 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 生成新的版本号
|
|
|
+ $newVersion = 'v' . $majorVersion . '.' . $minorVersion;
|
|
|
+ } else {
|
|
|
+ // 如果没有匹配到版本号(例如没有 `v`),可以默认从 `v1.0` 开始
|
|
|
+ $newVersion = 'v1.0';
|
|
|
+ }
|
|
|
+
|
|
|
// 组织数据
|
|
|
$data = [
|
|
|
+ 'version' => $newVersion,
|
|
|
'关联编号' => $relateId,
|
|
|
'sys_id' => $req['sys_id'],
|
|
|
'附件备注' => $req['附件备注'],
|
|
|
@@ -1466,54 +1508,123 @@ class WorkOrder extends Api
|
|
|
$this->error('请求错误');
|
|
|
}
|
|
|
$param = $this->request->param();
|
|
|
- if (empty($param)){
|
|
|
- $this->error('参数错误');
|
|
|
+ $page = input('page');
|
|
|
+ $limit = input('limit');
|
|
|
+ if($param['order'] == ''){
|
|
|
+ //查询全部附件
|
|
|
+ $list = \db('工单_相关附件')
|
|
|
+ ->field('UniqId, mod_rq, pdf, sys_id, sys_rq, updatetime, url, version,
|
|
|
+ 关联编号,
|
|
|
+ 关联编号 as 订单编号,
|
|
|
+ 附件内容, 附件备注, 附件类型')
|
|
|
+ ->where('附件备注', '技术附件')
|
|
|
+ ->where('version', '<>', '')
|
|
|
+ ->whereNull('mod_rq')
|
|
|
+ ->limit(($page - 1) * $limit, $limit)
|
|
|
+ ->order('sys_rq desc')
|
|
|
+ ->select();
|
|
|
+ $count = \db('工单_相关附件')
|
|
|
+ ->field('UniqId, mod_rq, pdf, sys_id, sys_rq, updatetime, url, version,
|
|
|
+ 关联编号,
|
|
|
+ 关联编号 as 订单编号,
|
|
|
+ 附件内容, 附件备注, 附件类型')
|
|
|
+ ->where('附件备注', '技术附件')
|
|
|
+ ->where('version', '<>', '')
|
|
|
+ ->whereNull('mod_rq')
|
|
|
+ ->order('sys_rq desc')
|
|
|
+ ->count();
|
|
|
+ $data['total'] = $count;
|
|
|
+ $data['list'] = $list;
|
|
|
+ $this->success('成功',$data);
|
|
|
+ }else{
|
|
|
+ //查询订单对应附件
|
|
|
+ $list = \db('工单_相关附件')
|
|
|
+ ->field('UniqId, mod_rq, pdf, sys_id, sys_rq, updatetime, url, version,
|
|
|
+ 关联编号,
|
|
|
+ 关联编号 as 订单编号,
|
|
|
+ 附件内容, 附件备注, 附件类型')
|
|
|
+ ->where('关联编号', $param['order'])
|
|
|
+ ->where('附件备注', $param['desc'])
|
|
|
+ ->where('version', '<>', '')
|
|
|
+ ->whereNull('mod_rq')
|
|
|
+ ->order('sys_rq desc')
|
|
|
+ ->select();
|
|
|
+ $this->success('成功', $list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 工单附件删除
|
|
|
+ */
|
|
|
+ public function delfujian(){
|
|
|
+ if (!$this->request->isPost()) {
|
|
|
+ $this->error('非法请求');
|
|
|
+ }
|
|
|
+ $params = $this->request->param();
|
|
|
+ $updateData = [
|
|
|
+ 'mod_rq' => date('Y-m-d H:i:s'),
|
|
|
+ ];
|
|
|
+ $res = \db('工单_相关附件')->where('UniqId', $params['UniqId'])->update($updateData);
|
|
|
+ if ($res) {
|
|
|
+ $this->success('删除成功');
|
|
|
+ } else {
|
|
|
+ $this->error('删除失败');
|
|
|
}
|
|
|
- $list = \db('工单_相关附件')
|
|
|
- ->where('关联编号',$param['order'])
|
|
|
- ->where('附件备注',$param['desc'])
|
|
|
- ->whereNull('Mod_rq')
|
|
|
- ->order('sys_rq desc')
|
|
|
- ->limit(1)
|
|
|
- ->select();
|
|
|
- $this->success('成功',$list);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 订单BOM资料显示
|
|
|
- * @return void
|
|
|
- * @throws \think\db\exception\DataNotFoundException
|
|
|
- * @throws \think\db\exception\ModelNotFoundException
|
|
|
- * @throws \think\exception\DbException
|
|
|
*/
|
|
|
public function OrderBomList()
|
|
|
{
|
|
|
- if ($this->request->isGet() === false){
|
|
|
+ if ($this->request->isGet() === false) {
|
|
|
$this->error('请求错误');
|
|
|
}
|
|
|
$param = $this->request->param();
|
|
|
- if (empty($param) || !isset($param['order'])){
|
|
|
+ if (empty($param) || !isset($param['order'])) {
|
|
|
$this->error('参数错误');
|
|
|
}
|
|
|
- $where = ['a.BOM_工单编号'=>$param['order']];
|
|
|
+ $where = ['a.BOM_工单编号' => $param['order']];
|
|
|
+
|
|
|
$list = \db('工单_bom资料')
|
|
|
->alias('a')
|
|
|
- ->join('工单_基本资料 b','b.订单编号 = a.BOM_工单编号')
|
|
|
+ ->join('工单_基本资料 b', 'b.订单编号 = a.BOM_工单编号')
|
|
|
->field('a.BOM_工单编号 as 订单编号,b.生产款号 as 生产款号,b.客户编号 as 客户编号,b.款式 as 款式,
|
|
|
a.BOM_物料名称 as 物料名称,a.BOM_投料单位 as 投料单位,a.BOM_计划用量 as 计划用料,a.BOM_标准用量 as 定额用料,
|
|
|
- a.BOM_实际用量 as 裁床实际用料,a.BOM_desc as 备注,a.UNIQID,
|
|
|
+ a.BOM_实际用量 as 裁床实际用料,a.BOM_desc as 备注,a.UNIQID,a.物料分类,
|
|
|
a.BOM_计划门幅 as 计划门幅, a.BOM_定额门幅 as 定额门幅,a.Sys_ID as ID,a.Sys_rq as 日期')
|
|
|
->where($where)
|
|
|
->whereNull('a.Mod_rq')
|
|
|
->select();
|
|
|
+
|
|
|
if (!empty($list)) {
|
|
|
+ // 获取去重后的物料名称
|
|
|
+ $materialNames = array_column($list, '物料名称');
|
|
|
+ $materialNames = array_unique($materialNames);
|
|
|
+
|
|
|
+ // 根据去重后的物料名称查询工单_面料资料表,并获取BOM_desc
|
|
|
+ $materialDetails = \db('工单_面料资料')
|
|
|
+ ->field('BOM_物料名称 as 物料名称,BOM_desc')
|
|
|
+ ->whereIn('BOM_物料名称', $materialNames)
|
|
|
+ ->select();
|
|
|
+
|
|
|
+ // 将物料名称与BOM_desc对应起来
|
|
|
+ $materialDescMap = [];
|
|
|
+ foreach ($materialDetails as $detail) {
|
|
|
+ $materialDescMap[$detail['物料名称']] = $detail['BOM_desc'];
|
|
|
+ }
|
|
|
+ // 在list中添加对应的BOM_desc
|
|
|
+ foreach ($list as &$item) {
|
|
|
+ if (isset($materialDescMap[$item['物料名称']])) {
|
|
|
+ $item['BOM_desc'] = $materialDescMap[$item['物料名称']];
|
|
|
+ } else {
|
|
|
+ $item['BOM_desc'] = '';
|
|
|
+ }
|
|
|
+ }
|
|
|
$this->success('成功', $list);
|
|
|
} else {
|
|
|
- // 调用其他方法处理逻辑(例如记录日志、执行其他操作等)
|
|
|
$this->GdGtpAiOrder($param['order']);
|
|
|
-
|
|
|
- // 返回空数据的统一处理
|
|
|
return $this->success('没有找到相关数据', []);
|
|
|
}
|
|
|
}
|
|
|
@@ -1526,43 +1637,30 @@ class WorkOrder extends Api
|
|
|
if ($this->request->isGet() === false) {
|
|
|
$this->error('请求错误');
|
|
|
}
|
|
|
-
|
|
|
- // 获取请求参数
|
|
|
$param = $this->request->param();
|
|
|
-
|
|
|
- // 检查参数是否为空或者缺少UNIQID
|
|
|
if (empty($param) || !isset($param['UNIQID'])) {
|
|
|
$this->error('参数错误');
|
|
|
}
|
|
|
-
|
|
|
- // 判断UNIQID是否是逗号分隔的多个ID,如果是则拆分成数组,否则直接处理为单个ID
|
|
|
$uniqids = strpos($param['UNIQID'], ',') !== false ? explode(',', $param['UNIQID']) : [$param['UNIQID']];
|
|
|
-
|
|
|
$where = [];
|
|
|
$where['Mod_rq'] = date('Y-m-d H:i:s', time());
|
|
|
|
|
|
- // 定义一个标志变量来追踪是否所有更新都成功
|
|
|
$allUpdated = true;
|
|
|
$failedUniqids = [];
|
|
|
// 遍历所有UNIQID并更新数据库
|
|
|
foreach ($uniqids as $uniqid) {
|
|
|
- // 更新指定UNIQID的记录
|
|
|
$result = \db('工单_bom资料')
|
|
|
->where('UNIQID', $uniqid)
|
|
|
->update($where);
|
|
|
-
|
|
|
- // 检查更新结果
|
|
|
if (!$result) {
|
|
|
// 如果某个UNIQID更新失败,记录失败的ID
|
|
|
$allUpdated = false;
|
|
|
$failedUniqids[] = $uniqid;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // 如果所有更新都成功,返回成功信息
|
|
|
if ($allUpdated) {
|
|
|
$list = \db('工单_bom资料')
|
|
|
- ->whereIn('UNIQID', $uniqids) // 查询所有传入的UNIQID
|
|
|
+ ->whereIn('UNIQID', $uniqids)
|
|
|
->select();
|
|
|
if (!empty($list)) {
|
|
|
$this->success('删除成功');
|
|
|
@@ -1571,7 +1669,6 @@ class WorkOrder extends Api
|
|
|
return $this->success('没有找到相关数据', []);
|
|
|
}
|
|
|
} else {
|
|
|
- // 如果有更新失败的记录,返回失败的UNIQID
|
|
|
$this->error('部分更新失败,无法更新以下UNIQID: ' . implode(', ', $failedUniqids));
|
|
|
}
|
|
|
|
|
|
@@ -1621,12 +1718,16 @@ class WorkOrder extends Api
|
|
|
$data[] = [
|
|
|
'BOM_工单编号' => $list['订单编号'],
|
|
|
'BOM_物料名称' => $value,
|
|
|
- 'BOM_desc' => $massage,
|
|
|
+ 'BOM_desc' => '',
|
|
|
+ '物料分类' => '',
|
|
|
'Sys_rq' => date('Y-m-d H:i:s'),
|
|
|
- 'Sys_ID' => '超级管理员'
|
|
|
+ 'Sys_ID' => $list['Sys_id']
|
|
|
];
|
|
|
}
|
|
|
}
|
|
|
+ echo "<pre>";
|
|
|
+ print_r($data);
|
|
|
+ echo "<pre>";
|
|
|
// 批量插入BOM资料
|
|
|
if (!empty($data)) {
|
|
|
\db('工单_bom资料')->insertAll($data);
|
|
|
@@ -1671,22 +1772,74 @@ class WorkOrder extends Api
|
|
|
$newNumericPart = str_pad((int)$numericPart + 1, strlen($numericPart), '0', STR_PAD_LEFT);
|
|
|
$param['订单编号'] = $order . $newNumericPart;
|
|
|
|
|
|
- // 处理物料信息
|
|
|
+// // 处理物料信息
|
|
|
+// $massage = empty($list['粘衬']) || $list['粘衬'] == '无' ? $list['面料'] : $list['面料'] . ',粘衬:' . $list['粘衬'];
|
|
|
+// $mianliao = $this->Gpt($massage);
|
|
|
+// // 插入物料数据
|
|
|
+// $data = [];
|
|
|
+// foreach ($mianliao as $key => $value) {
|
|
|
+// if (!empty($value) && $value !== '粘衬') { // 排除空值和粘衬
|
|
|
+// $data[] = [
|
|
|
+// 'BOM_工单编号' => $list['订单编号'],
|
|
|
+// 'BOM_物料名称' => $value,
|
|
|
+// 'BOM_desc' => '',
|
|
|
+// '物料分类' => '',
|
|
|
+// 'Sys_rq' => date('Y-m-d H:i:s'),
|
|
|
+// 'Sys_ID' => '超级管理员'
|
|
|
+// ];
|
|
|
+// }
|
|
|
+// }
|
|
|
+ // 假设massage是从数据库获取的数据
|
|
|
$massage = empty($list['粘衬']) || $list['粘衬'] == '无' ? $list['面料'] : $list['面料'] . ',粘衬:' . $list['粘衬'];
|
|
|
+
|
|
|
+ $materialCategories = [];
|
|
|
+ $pattern = '/(\S+?):([^,]+)/'; // 匹配 类别:物料 格式
|
|
|
+
|
|
|
+ preg_match_all($pattern, $massage, $matches, PREG_SET_ORDER);
|
|
|
+
|
|
|
+ foreach ($matches as $match) {
|
|
|
+ $category = $match[1]; // 分类名称
|
|
|
+ $materials = explode('+', $match[2]); // 如果物料名称中有‘+’,则分开处理多个物料
|
|
|
+
|
|
|
+ // 将分类和对应的物料添加到数组中
|
|
|
+ foreach ($materials as $material) {
|
|
|
+ $materialCategories[$category][] = trim($material); // 去除物料两边的空格
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$mianliao = $this->Gpt($massage);
|
|
|
- // 插入物料数据
|
|
|
+
|
|
|
$data = [];
|
|
|
- foreach ($mianliao as $key => $value) {
|
|
|
+ foreach ($mianliao as $value) {
|
|
|
if (!empty($value) && $value !== '粘衬') { // 排除空值和粘衬
|
|
|
+ $category = '';
|
|
|
+
|
|
|
+ // 查找物料对应的分类
|
|
|
+ foreach ($materialCategories as $cat => $materials) {
|
|
|
+ if (in_array($value, $materials)) {
|
|
|
+ $category = $cat;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 如果找到分类,将数据存入BOM
|
|
|
$data[] = [
|
|
|
'BOM_工单编号' => $list['订单编号'],
|
|
|
'BOM_物料名称' => $value,
|
|
|
- 'BOM_desc' => $massage,
|
|
|
+ 'BOM_desc' => '',
|
|
|
+ '物料分类' => $category ? $category : '',
|
|
|
'Sys_rq' => date('Y-m-d H:i:s'),
|
|
|
'Sys_ID' => '超级管理员'
|
|
|
];
|
|
|
}
|
|
|
}
|
|
|
+ foreach ($data as &$item) {
|
|
|
+ if (empty($item['物料分类'])) {
|
|
|
+ $item['物料分类'] = '';
|
|
|
+ }
|
|
|
+ // 去除所有非汉字字符
|
|
|
+ $item['物料分类'] = preg_replace('/[^\p{Han}]/u', '', $item['物料分类']);
|
|
|
+ }
|
|
|
|
|
|
// 批量插入BOM资料
|
|
|
if (!empty($data)) {
|