Index.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\Api;
  4. use think\Controller;
  5. use think\Db;
  6. /**
  7. * 达成大屏数据接口
  8. */
  9. class Index extends Controller{
  10. protected $noNeedLogin = ['*'];
  11. protected $noNeedRight = ['*'];
  12. /**首页*/
  13. public function index(){$this->success('成功');}
  14. /**
  15. *近30天班组生产效率完成情况【缓存】
  16. */
  17. public function bzDbToRedis(){
  18. //存缓存Redis
  19. $redis = redis();
  20. $redis_key = md5('bzDbToRedis');
  21. // 获取当天的日期
  22. $todays = date('Y-8-d');
  23. $today = date('Y-m-d');
  24. // 查询设备_产量计酬表,当日班组报工产量情况,排除车缝班组,按班组和日期分组并累计数量
  25. $res = db('设备_产量计酬')
  26. ->alias('c')
  27. ->where('c.sczl_bh', 'not like', '%车缝%') // 排除车缝班组
  28. ->where('c.sys_rq', '>=', $todays . ' 00:00:00') // 当日开始时间
  29. ->where('c.sys_rq', '<=', $today . ' 23:59:59') // 当日结束时间
  30. ->whereNull('c.mod_rq') // 删除日期为空
  31. ->field('c.sczl_bh, SUM(c.ci_num) as total_num, DATE(c.sys_rq) as date') // 班组编号,数量累计,日期
  32. ->group('c.sczl_bh, DATE(c.sys_rq)') // 按班组编号和日期分组
  33. ->select();
  34. $redis->set($redis_key, json_encode($res));
  35. echo date("Y-m-d H:i:s").'存进去了';
  36. return $res;
  37. }
  38. /**
  39. *近30天班组生产效率完成情况【接口】
  40. */
  41. public function getBzByRedis(){
  42. $redis = redis();
  43. $row = json_decode($redis->get(md5('bzDbToRedis')), true);
  44. echo "<pre>";
  45. print_r($row);
  46. echo "<pre>";
  47. }
  48. /**
  49. *当日班组报工产量【缓存】
  50. */
  51. public function numDbToRedis(){
  52. //存缓存Redis
  53. $redis = redis();
  54. $redis_key = md5('numDbToRedis');
  55. // 获取当天的日期
  56. $todays = date('Y-8-d');
  57. $today = date('Y-m-d');
  58. // 查询设备_产量计酬表,当日班组报工产量情况,排除车缝班组,按班组和日期分组并累计数量
  59. $res = db('设备_产量计酬')
  60. ->alias('c')
  61. ->where('c.sczl_bh', 'not like', '%车缝%') // 排除车缝班组
  62. ->where('c.sys_rq', '>=', $todays . ' 00:00:00') // 当日开始时间
  63. ->where('c.sys_rq', '<=', $today . ' 23:59:59') // 当日结束时间
  64. ->whereNull('c.mod_rq')
  65. ->field('c.sczl_bh, SUM(c.ci_num) as total_num, DATE(c.sys_rq) as date') // 班组编号,数量累计,日期
  66. ->group('c.sczl_bh, DATE(c.sys_rq)') // 按班组编号和日期分组
  67. ->select();
  68. echo "<pre>";
  69. print_r($res);
  70. echo "<pre>";die;
  71. $redis->set($redis_key, json_encode($res));
  72. echo date("Y-m-d H:i:s").'存进去了';
  73. return $res;
  74. }
  75. /**
  76. *当日班组报工产量【接口】
  77. */
  78. public function getPczByRedis(){
  79. // $list=['categories'=>[$list2021['rq'],$list2022['rq'],$list2023['rq']],'series'=>[['name'=>'色令数',
  80. // 'data'=>[round($list2021['nyssl']/10000),round($list2022['nyssl']/10000),round($list2023['nyssl']/10000)]]]];
  81. // $res['status']=0;
  82. // $res['msg']='';
  83. // $res['data']=$list;
  84. // $redis->set($redis_key, json_encode($res));
  85. // return json_encode($res);
  86. $redis = redis();
  87. $row = json_decode($redis->get(md5('numDbToRedis')), true);
  88. echo "<pre>";
  89. print_r($row);
  90. echo "<pre>";
  91. }
  92. /**
  93. * 在产订单工序完工详情【缓存】
  94. */
  95. public function getJhzByRedis(){
  96. //存缓存Redis
  97. $redis = redis();
  98. $redis_key = md5('getJhzByRedis');
  99. $startTime = date('Y-m-d', strtotime('-30 days'));
  100. $endTime = date('Y-m-d');
  101. // 修改查询条件为近30天
  102. $where['b.Sys_rq'] = ['between', [$startTime, $endTime]];
  103. $list = \db('设备_产量计酬')
  104. ->alias('a')
  105. ->join('工单_基本资料 b','a.订单编号 = b.订单编号')
  106. ->join('工单_印件资料 c','a.订单编号 = c.订单编号 AND a.子订单编号 = c.子订单编号')
  107. ->field('c.订单编号,c.子订单编号,c.款号,c.颜色,c.zdtotal as 制单总数,c.sctotal as 裁切总数,c.ck_rq as 出库日期,
  108. SUM(a.数量) as 产量,a.工序名称,b.客户编号,b.单位')
  109. ->where($where)
  110. ->group('a.订单编号,a.工序名称')
  111. ->order('c.Uniqid')
  112. ->select();
  113. $orderList = \db('设备_产量计酬')
  114. ->alias('a')
  115. ->join('工单_基本资料 b','a.订单编号 = b.订单编号')
  116. ->join('工单_印件资料 c','a.订单编号 = c.订单编号 AND a.子订单编号 = c.子订单编号')
  117. ->field('c.订单编号,c.子订单编号,c.款号,c.颜色,c.zdtotal as 制单总数,c.sctotal as 裁切总数,c.ck_rq as 出库日期,b.客户编号,b.单位')
  118. ->where($where)
  119. ->group('a.子订单编号')
  120. ->order('c.Uniqid')
  121. ->select();
  122. foreach ($orderList as $key=>$value){
  123. $data[$key] = $value;
  124. foreach ($list as $k=>$v){
  125. if ($value['子订单编号'] === $v['子订单编号']){
  126. if (isset($data[$key][$v['工序名称']]) === false){
  127. $data[$key][$v['工序名称']] = $v['产量'];
  128. }
  129. }
  130. }
  131. }
  132. $redis->set($redis_key, json_encode($data));
  133. echo date("Y-m-d H:i:s").'存进去了';
  134. return $data;
  135. }
  136. /**
  137. * 在产订单工序完工详情【接口】
  138. */
  139. public function getZczByRedis(){
  140. $redis = redis();
  141. $row = json_decode($redis->get(md5('getJhzByRedis')), true);
  142. // 列定义
  143. $result['columns'] = [
  144. ['name' => '订单编号', 'id' => 'order', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'left'],
  145. ['name' => '客户', 'id' => 'kehu', 'width' => '16', 'textAlign' => 'left'],
  146. ['name' => '制单总数', 'id' => 'zdnum', 'width' => '20', 'autoWrap' => "true", 'textAlign' => 'left'],
  147. ['name' => '单位', 'id' => 'dw', 'width' => '16', 'autoWrap' => "true", 'textAlign' => 'left'],
  148. ['name' => '出库确认', 'id' => 'chuku', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'left'],
  149. ['name' => '裁切', 'id' => 'caiqie', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
  150. ['name' => '缝制小烫', 'id' => 'fegnzhi', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
  151. ['name' => '后道收样', 'id' => 'houdao', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
  152. ['name' => '大烫', 'id' => 'datang', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
  153. ['name' => '总检', 'id' => 'zongjian', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
  154. ['name' => '包装', 'id' => 'baozhaung', 'width' => '14', 'autoWrap' => "true", 'textAlign' => 'center'],
  155. ];
  156. if ($row) {
  157. foreach ($row as $k => $v) {
  158. $result['rows'][$k]['order'] = $v['订单编号'];
  159. $result['rows'][$k]['kehu'] = $v['客户编号'];
  160. $result['rows'][$k]['zdnum'] = $v['制单总数'];
  161. $result['rows'][$k]['dw'] = $v['单位'];
  162. // 判断出库日期,设置出库确认
  163. $result['rows'][$k]['chuku'] = isset($v['出库日期']) && !empty($v['出库日期']) ? '已出库' : '未出库';
  164. $result['rows'][$k]['caiqie'] = $v['裁切'] ?? '';
  165. $result['rows'][$k]['fegnzhi'] = $v['缝制小烫'] ?? '';
  166. $result['rows'][$k]['houdao'] = $v['后道收样'] ?? '';
  167. $result['rows'][$k]['datang'] = $v['大烫'] ?? '';
  168. $result['rows'][$k]['zongjian'] = $v['总检'] ?? '';
  169. $result['rows'][$k]['baozhaung'] = $v['包装'] ?? '';
  170. }
  171. } else {
  172. // 如果没有数据,初始化空行
  173. $result['rows'][0] = [
  174. 'order' => '', 'kehu' => '', 'zdnum' => '', 'dw' => '', 'chuku' => '',
  175. 'caiqie' => '', 'fegnzhi' => '', 'houdao' => '', 'datang' => '', 'zongjian' => '', 'baozhaung' => ''
  176. ];
  177. }
  178. // echo "<pre>";print_r($result);echo "<pre>";die;
  179. // 构造最终的返回数据
  180. $res['status'] = 0;
  181. $res['msg'] = '';
  182. $res['data'] = $result;
  183. return json($res);
  184. }
  185. /**
  186. *已制单样衣未审、已审核待生产、生产中未完成【缓存】
  187. */
  188. public function yscjDbToRedis(){
  189. //存缓存Redis
  190. $redis = redis();
  191. $redis_key = md5('yscjDbToRedis');
  192. $res = \db('工单_基本资料')
  193. ->where('sys_rq', '>=', date('Y-m-d', strtotime('-30 days')))
  194. ->select();
  195. $redis->set($redis_key, json_encode($res));
  196. echo date("Y-m-d H:i:s").'存进去了';
  197. return $res;
  198. }
  199. /**
  200. *已制单样衣未审【接口】
  201. */
  202. public function yhcjDbToRedis(){
  203. $redis = redis();
  204. // 从 Redis 中获取数据
  205. $row = json_decode($redis->get(md5('yscjDbToRedis')), true);
  206. // 初始化计数器
  207. $count = 0;
  208. // 遍历数据,统计审核日期为空、mod_rq 为空、审核状态为空的数据
  209. foreach ($row as $item) {
  210. if (empty($item['审核日期']) && empty($item['Mod_rq']) && empty($item['审核'])) {
  211. $count++;
  212. }
  213. }
  214. // 构造返回数据
  215. $result = [
  216. 'name' => '已制单样衣未审',
  217. 'value' => $count,
  218. ];
  219. // 构造最终的返回结构
  220. $res = [
  221. 'status' => 0,
  222. 'msg' => '',
  223. 'data' => [$result],
  224. ];
  225. // 返回JSON格式的结果
  226. return json($res);
  227. }
  228. /**
  229. *已审核待生产【接口】
  230. */
  231. public function getYscjByRedis(){
  232. $redis = redis();
  233. // 从 Redis 中获取数据
  234. $row = json_decode($redis->get(md5('yscjDbToRedis')), true);
  235. // 初始化计数器
  236. $count = 0;
  237. // 遍历数据,统计审核日期为空、mod_rq 为空、审核状态为空的数据
  238. foreach ($row as $item) {
  239. if (empty($item['出库日期'])) {
  240. $count++;
  241. }
  242. }
  243. // 构造返回数据
  244. $result = [
  245. 'name' => '已审核待生产',
  246. 'value' => $count,
  247. ];
  248. // 构造最终的返回结构
  249. $res = [
  250. 'status' => 0,
  251. 'msg' => '',
  252. 'data' => [$result],
  253. ];
  254. // 返回JSON格式的结果
  255. return json($res);
  256. }
  257. /**
  258. *生产中未完成【缓存】
  259. */
  260. public function getJtClDbByRedis(){
  261. //存缓存Redis
  262. $redis = redis();
  263. $redis_key = md5('getJtClDbByRedis');
  264. $res = \db('工单_排程班次')
  265. ->alias('a')
  266. ->join('工单_印件资料 b','b.订单编号 = a.订单编号 AND a.子订单编号 = a.子订单编号')
  267. ->join('设备_产量计酬 c','a.订单编号 = c.订单编号 AND a.子订单编号 = c.子订单编号','LEFT')
  268. ->field('a.订单编号,a.子订单编号,b.款号,b.颜色,b.船样,b.zdtotal as 制单数,SUM(c.数量) as 已完成')
  269. ->where('a.mod_rq',null)
  270. ->select();
  271. $redis->set($redis_key, json_encode($res));
  272. echo date("Y-m-d H:i:s").'存进去了';
  273. return $res;
  274. }
  275. /**
  276. *生产中未完成【接口】
  277. */
  278. public function getYhcjByRedis(){
  279. $redis = redis();
  280. // 从 Redis 中获取数据
  281. $row = json_decode($redis->get(md5('getJtClDbByRedis')), true);
  282. // 初始化计数器
  283. $count = 0;
  284. // 遍历数据,统计未完成的记录条数
  285. foreach ($row as $item) {
  286. // 假设 '制单数' 是生产总数,'已完成' 是完成的数量
  287. if (isset($item['制单数']) && isset($item['已完成'])) {
  288. // 判断未完成数量是否大于0
  289. if ($item['制单数'] > $item['已完成']) {
  290. $count++;
  291. }
  292. }
  293. }
  294. // 构造返回数据
  295. $result = [
  296. 'name' => '生产中未完成',
  297. 'value' => $count,
  298. ];
  299. // 构造最终的返回结构
  300. $res = [
  301. 'status' => 0,
  302. 'msg' => '',
  303. 'data' => [$result],
  304. ];
  305. // 返回JSON格式的结果
  306. return json($res);
  307. }
  308. public function jtClDbToRedis(){
  309. }
  310. }