|
@@ -3,6 +3,7 @@
|
|
|
namespace App\Service;
|
|
|
|
|
|
use App\Jobs\ProcessDataJob;
|
|
|
+use App\Model\ProductSnInfo;
|
|
|
use App\Model\PurchaseOrder;
|
|
|
use App\Model\Setting;
|
|
|
use App\Model\U8Job;
|
|
@@ -90,4 +91,116 @@ class DataSyncToU8Service extends Service
|
|
|
|
|
|
return [true, $msg['data'] ?? []];
|
|
|
}
|
|
|
+
|
|
|
+ //校验sn码 施工单
|
|
|
+ public function checkSnConstructionRule($data){
|
|
|
+ $code = $sn = [];
|
|
|
+ foreach ($data['product'] as $value){
|
|
|
+ //没有sn码信息直接返回
|
|
|
+ if(empty($value['product_sn_info'])) continue;
|
|
|
+ if(count($value['product_sn_info']) > $value['number']) return [false, "产品编码:" . $value['code'] . "选择的sn码数量不能超过产品数量"];
|
|
|
+ if(empty($value['code'])) return [false, '产品编码不能为空'];
|
|
|
+ $code[] = $value['code'];
|
|
|
+ foreach ($value['product_sn_info'] as $sn_val){
|
|
|
+ $sn[] = $sn_val;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(empty($sn)) return [true, ''];
|
|
|
+
|
|
|
+ $header = ['Content-Type:application/json'];
|
|
|
+ $post = [
|
|
|
+ 'urlFromT9' => 'getSnMap',
|
|
|
+ 'code' => $code,
|
|
|
+ 'sn' => $sn,
|
|
|
+ ];
|
|
|
+ $post = json_encode($post);
|
|
|
+ list($status, $msg) = $this->post_helper("https://workapi.qingyaokeji.com/api/getSnforMap", $post, $header);
|
|
|
+ if($msg['code'] != 200) return [false, $msg['msg']];
|
|
|
+
|
|
|
+ //sn码
|
|
|
+ $sn_list = $msg['data'];
|
|
|
+ $sn_map = [];
|
|
|
+ foreach ($sn_list as $value){
|
|
|
+ $key = $value['code'] . $value['sn'];
|
|
|
+ $sn_map[$key] = "";
|
|
|
+ }
|
|
|
+
|
|
|
+ $submit_info = [];
|
|
|
+ foreach ($data['product'] as $value){
|
|
|
+ if(empty($value['product_sn_info'])) continue;
|
|
|
+ foreach ($value['product_sn_info'] as $sn_val){
|
|
|
+ $key = $value['code'] . $sn_val;
|
|
|
+ $submit_info[] = $key;
|
|
|
+ if(! isset($sn_map[$key])) return [false, "产品编码:" . $value['code'] . "的sn序列码:" . $sn_val . "在用友中不存在"];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $save = ProductSnInfo::where('del_time',0)
|
|
|
+ ->whereIn("code", $code)
|
|
|
+ ->whereIn('sn', $sn)
|
|
|
+ ->select('code','sn','data_id','type')
|
|
|
+ ->get()->toArray();
|
|
|
+
|
|
|
+ $construction_id = $data['id'] ?? 0;
|
|
|
+ foreach ($save as $value){
|
|
|
+ $key = $value['code'] . $value['sn'];
|
|
|
+ if(in_array($key, $submit_info)) {
|
|
|
+ if(! $construction_id){
|
|
|
+ return [false, '产品编码:' . $value['code'] . '的sn码已被' .ProductSnInfo::$type_name[$value['type']]] . '使用';
|
|
|
+ }else{
|
|
|
+ if($value['data_id'] != $construction_id || $value['type'] != ProductSnInfo::type_one) return [false, '产品编码:' . $value['code'] . '的sn码已被' .ProductSnInfo::$type_name[$value['type']]] . '使用';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return [true, ''];
|
|
|
+ }
|
|
|
+
|
|
|
+ //保存sn
|
|
|
+ public function saveSn($data, $type, $time){
|
|
|
+ $data_id = $data['id'] ?? 0;
|
|
|
+
|
|
|
+ ProductSnInfo::where('del_time',0)
|
|
|
+ ->where('data_id', $data_id)
|
|
|
+ ->where('type', $type)
|
|
|
+ ->update(['del_time' => $time]);
|
|
|
+
|
|
|
+ if(! empty($data['product'])){
|
|
|
+ $insert = [];
|
|
|
+ foreach ($data['product'] as $value){
|
|
|
+ //没有sn码信息直接返回
|
|
|
+ if(empty($value['product_sn_info'])) continue;
|
|
|
+ foreach ($value['product_sn_info'] as $sn_val){
|
|
|
+ $insert[] = [
|
|
|
+ 'product_id' => $value['product_id'],
|
|
|
+ 'code' => $value['code'],
|
|
|
+ 'sn' => $sn_val,
|
|
|
+ 'crt_time' => $time,
|
|
|
+ 'data_id' => $data_id,
|
|
|
+ 'type' => $type,
|
|
|
+ ];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if(! empty($insert)) ProductSnInfo::insert($insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取sn详情
|
|
|
+ public function getSn($data, $type){
|
|
|
+ $data_id = $data['id'] ?? 0;
|
|
|
+
|
|
|
+ $map = [];
|
|
|
+ $sn = ProductSnInfo::where('del_time',0)
|
|
|
+ ->where('data_id', $data_id)
|
|
|
+ ->where('type', $type)
|
|
|
+ ->select('product_id','code','sn')
|
|
|
+ ->get()->toArray();
|
|
|
+
|
|
|
+ foreach ($sn as $value){
|
|
|
+ $map[$value['code']][] = $value['sn'];
|
|
|
+ }
|
|
|
+
|
|
|
+ return $map;
|
|
|
+ }
|
|
|
}
|