| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506 |
- <?php
- namespace app\api\controller;
- use app\common\controller\Api;
- use think\Request;
- /**
- * 印版库管理
- */
- class PrintingPlate extends Api
- {
- protected $noNeedLogin = ['*'];
- protected $noNeedRight = ['*'];
- /**
- * 印版库管理左侧菜单
- * @return void
- */
- public function getTab()
- {
- if (!$this->request->isGet()) {
- $this->error('请求错误');
- }
- $data = [
- 'MN印版' => $this->buildTree('05'),
- '翌星印版' => $this->buildTree('Y05')
- ];
- $this->success('成功', $data);
- }
- //私有方法,构建数据
- private function buildTree($prefix)
- {
- $list = db('物料_存货结构')
- ->where('编号', 'like', $prefix . '%')
- ->order('编号', 'asc')
- ->select();
- $map = [];
- $tree = [];
- // 创建编号映射表
- foreach ($list as $item) {
- $map[$item['编号']] = $item['名称'];
- }
- // 构建树形结构
- foreach ($list as $item) {
- $code = $item['编号'];
- $name = $item['名称'];
- $key = "{$code} {$name}";
- $depth = strlen($code) - strlen($prefix);
- switch ($depth) {
- case 0: // 根节点 (05/Y05)
- $tree[$key] = [];
- break;
- case 2: // 二级节点 (0501/Y0501)
- $parentCode = substr($code, 0, strlen($prefix));
- $parentKey = "{$parentCode} {$map[$parentCode]}";
- $tree[$parentKey][$key] = [];
- break;
- case 4: // 三级节点 (050100/Y050101)
- $parentCode = substr($code, 0, strlen($prefix) + 2);
- $grandCode = substr($code, 0, strlen($prefix));
- $grandKey = "{$grandCode} {$map[$grandCode]}";
- $parentKey = "{$parentCode} {$map[$parentCode]}";
- if (isset($tree[$grandKey][$parentKey])) {
- $tree[$grandKey][$parentKey][] = $key;
- }
- break;
- }
- }
- return $tree;
- }
- /**
- * 存货编码列表
- * @return void
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function MaterailCodeList()
- {
- if (!$this->request->isGet()) {
- $this->error('请求错误');
- }
- $params = $this->request->param();
- if (empty($params)) {
- $this->error('参数错误');
- }
- $page = intval($params['page']);
- $limit = intval($params['limit']);
- $where = [];
- if (!empty($params['code'])) {
- $code = preg_match('/[a-zA-Z]/', $params['code'])
- ? substr($params['code'], 0, 7)
- : substr($params['code'], 0, 6);
- $where['a.存货编码'] = ['like', $code . '%'];
- }
- if (!empty($params['search'])) {
- $where['b.物料名称'] = ['like', '%' . $params['search'] . '%'];
- }
- //总数
- $total = db('产品_印版库')
- ->alias('a')
- ->join('物料_存货编码 b', 'a.存货编码 = b.物料代码')
- ->join('工单_印版领用记录 c',
- 'a.存货编码 = c.Yb_存货编码 AND a.供方批号 = c.Yb_供方批号',
- 'LEFT')
- ->where($where)
- ->group('a.存货编码, a.供方批号')
- ->count();
- $list = db('产品_印版库')
- ->alias('a')
- ->join('物料_存货编码 b', 'a.存货编码 = b.物料代码')
- ->join('工单_印版领用记录 c',
- 'a.存货编码 = c.Yb_存货编码 AND a.供方批号 = c.Yb_供方批号',
- 'LEFT')
- ->where($where)
- ->group('a.存货编码, a.供方批号')
- ->order('报废日期, a.存货编码')
- ->field([
- 'rtrim(a.存货编码) as 存货编码',
- 'rtrim(b.物料名称) as 物料名称',
- 'rtrim(a.印版名称) as 印版名称',
- 'rtrim(a.供方批号) as 供方批号',
- 'DATE(a.制造日期) as 制造日期',
- "CASE
- WHEN a.报废日期 = '1900-01-01 00:00:00' THEN NULL
- ELSE DATE(a.报废日期)
- END as 报废日期",
- 'a.原始印数',
- 'a.考核印数',
- 'a.UniqID',
- 'rtrim(a.Sys_id) as 创建用户',
- 'a.Sys_rq as 创建日期',
- 'a.Mod_rq as 修改时间',
- 'SUM(c.Yb_印数) as 累计印数',
- "MAX(CASE WHEN c.Yb_领用日期 IS NOT NULL AND c.Yb_退还日期 IS NULL THEN c.Yb_工单编号 END) as 工单编号"
- ])
- ->limit(($page - 1) * $limit, $limit)
- ->select();
- if (empty($list)) {
- $this->error('未找到相关记录');
- }
- $this->success('查询成功', [
- 'data' => $list,
- 'total' => $total,
- ]);
- }
- /**
- * 印版管理印版修改
- * @return void
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function MaterailDetail()
- {
- if ($this->request->isGet() === false){
- $this->error('请求错误');
- }
- $param = $this->request->param();
- if (empty($param) || !isset($param['UniqID'])){
- $this->error('参数错误');
- }
- $result = db('产品_印版库')
- ->alias('a')
- ->join('物料_存货编码 b', 'a.存货编码 = b.物料代码')
- ->where('a.UniqID', $param['UniqID'])
- ->order('报废日期, a.存货编码')
- ->field('
- rtrim(a.存货编码) as 存货编码,
- rtrim(b.物料名称) as 物料名称,
- rtrim(a.印版名称) as 印版备注,
- rtrim(a.供方批号) as 供方批号,
- DATE(a.制造日期) as 制造日期,
- CASE
- WHEN a.报废日期 = "1900-01-01 00:00:00" THEN NULL
- ELSE DATE(a.报废日期)
- END as 报废日期,
- a.原始印数,
- a.考核印数,
- a.UniqID
- ')
- ->find();
- if (empty($result)) {
- $this->error('未找到数据');
- }else{
- $this->success('成功', $result);
- }
- }
- /**
- * 印版资料新增修改
- * @return void
- * @throws \think\Exception
- * @throws \think\db\exception\BindParamException
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- * @throws \think\exception\PDOException
- */
- public function MaterailEdit()
- {
- if ($this->request->isPost() === false){
- $this->error('请求错误');
- }
- $param = Request::instance()->post();
- if (empty($param) || !isset($param['code'])){
- $this->error('参数错误');
- }
- $data = [
- '存货编码' => $param['code'],
- '供方批号' => $param['batch'],
- '印版名称' => $param['desc'],
- '制造日期' => $param['Manufactur_date'],
- '原始印数' => $param['start_num'],
- '考核印数' => $param['Assessment_num'],
- '报废日期' => $param['Scrappe_date']?:'1900-01-01 00:00:00',
- 'Sys_id' => $param['sys_id']
- ];
- //查询数据是否存在,存在则修改,不存在则增加
- $res = db('产品_印版库')
- ->where('存货编码',$param['code'])
- ->where('供方批号',$param['batch'])
- ->find();
- if (empty($res)){
- $data['Sys_rq'] = date('Y-m-d H:i:s',time());
- if ($param['number'] !== '' || $param['number'] !== '0'){
- for ($i = 1; $i <= $param['number']; $i++){
- if ($i<10){
- $number = '0'.$i;
- }
- $data['供方批号'] = $param['batch'].'-'.$number;
- $resData[] = $data;
- }
- // halt($resData);
- $sql = db('产品_印版库')->fetchSql(true)->insertAll($resData);
- }else{
- $sql = db('产品_印版库')->fetchSql(true)->insert($data);
- }
- }else{
- $UniqID = $param['UniqID'];
- $data['Mod_rq'] = date('Y-m-d H:i:s',time());
- $sql = db('产品_印版库')->where('UniqID',$UniqID)->fetchSql(true)->update($data);
- }
- $result = db()->query($sql);
- if ($result === false){
- $this->error('修改失败');
- }else{
- $this->success('修改成功');
- }
- }
- /**
- * 印版新增->存货编码获取
- * @return void
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getInventoryCode()
- {
- if (!$this->request->isGet()) {
- $this->error('请求错误');
- }
- $param = $this->request->param();
- if (empty($param) || !isset($param['code'])) {
- $this->error('参数错误');
- }
- // 提取前缀
- $codeLength = preg_match('/[a-zA-Z]/', $param['code']) ? 5 : 4;
- $code = substr($param['code'], 0, $codeLength);
- $where['物料代码'] = ['like', $code . '%'];
- if (!empty($param['search'])) {
- $where['物料代码'] = $param['search'];
- }
- // 查询物料存货编码
- $list = db('物料_存货编码')
- ->where($where)
- ->field('rtrim(物料代码) as 物料代码, rtrim(物料名称) as 物料名称, rtrim(规格) as 规格')
- ->select();
- // 数据处理
- $data = [];
- foreach ($list as $item) {
- // 提取物料代码的前缀
- $prefixLength = preg_match('/[a-zA-Z]/', $item['物料代码']) ? [3, 5, 7] : [2, 4, 6];
- // 使用普通的数组映射替代箭头函数
- $num1 = substr($item['物料代码'], 0, $prefixLength[0]);
- $num2 = substr($item['物料代码'], 0, $prefixLength[1]);
- $num3 = substr($item['物料代码'], 0, $prefixLength[2]);
- // 批量查询物料结构名称
- $names = db('物料_存货结构')
- ->whereIn('编号', [$num1, $num2, $num3])
- ->column('名称', '编号');
- // 将数据组织进数组
- $name1 = isset($names[$num1]) ? $names[$num1] : '';
- $name2 = isset($names[$num2]) ? $names[$num2] : '';
- $name3 = isset($names[$num3]) ? $names[$num3] : '';
- if (!isset($data["$num1/$name1"][$num2][$num3.'/'.$name3])) {
- $data["$num1/$name1"][$num2][$num3.'/'.$name3] = [];
- }
- $data["$num1/$name1"][$num2][$num3.'/'.$name3][] = "{$item['物料代码']}/{$item['物料名称']}/{$item['规格']}";
- }
- $this->success('成功', $data);
- }
- /**
- * 印版领用
- * @return void
- * @throws \think\db\exception\BindParamException
- * @throws \think\exception\PDOException
- */
- public function PrintingPlateReceive()
- {
- if (!$this->request->isPost()) {
- $this->error('请求错误');
- }
- $param = Request::instance()->post();
- if (empty($param) || !isset($param['gdbh'])) {
- $this->error('参数错误');
- }
- $data = [
- 'Yb_工单编号' => $param['gdbh'],
- 'Yb_印件号' => $param['yjno'],
- 'Yb_存货编码' => $param['code'],
- 'Yb_供方批号' => $param['batch'],
- 'Yb_领用日期' => date('Y-m-d',time()),
- 'Yb_领用机台' => $param['machine'],
- 'Sys_id' => $param['sys_id'],
- 'Sys_rq' => date('Y-m-d H:i:s',time()),
- ];
- $sql = db('工单_印版领用记录')
- ->fetchSql(true)
- ->insert($data);
- $res = db('')->query($sql);
- if ($res === false){
- $this->error('领用失败');
- }else{
- $this->success('领用成功');
- }
- }
- /**
- * 印版工单领用
- * @return void
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function PrintDetailReceive()
- {
- if (!$this->request->isGet()) {
- $this->error('请求错误');
- }
- $param = $this->request->param();
- if (empty($param) || !isset($param['code'])) {
- $this->error('参数错误');
- }
- $list = db('工单_印版领用记录')
- ->alias('a')
- ->field('a.Yb_工单编号 as 工单编号,a.Yb_印件号 as 印件号,a.Yb_领用日期 as 领用日期,a.Yb_退还日期 as 退还日期,a.Yb_领用机台 as 领用机台,
- a.Yb_印数 as 印数,a.Sys_id as 创建用户,a.Sys_rq as 创建时间,a.UniqID,b.成品代号,rtrim(b.成品名称) as 成品名称')
- ->join('工单_基本资料 b', 'a.Yb_工单编号 = b.Gd_gdbh','left')
- ->where('a.Yb_存货编码',$param['code'])
- ->where('a.Yb_供方批号',$param['batch'])
- ->order('a.UniqID desc')
- ->group('a.Yb_工单编号,a.Yb_印件号,a.UniqID')
- ->select();
- if (empty($list)){
- $this->error('未找到领用记录');
- }else{
- $this->success('成功', $list);
- }
- }
- /**
- * 印版领用记录删除
- * @return void
- * @throws \think\Exception
- * @throws \think\exception\PDOException
- */
- public function PrintReceiveDelete()
- {
- if ($this->request->isGet() === false) {
- $this->error('请求错误');
- }
- $param = $this->request->param();
- if (empty($param) || !isset($param['id'])) {
- $this->error('参数错误');
- }
- $id = explode(',', $param['id']);
- if (empty($id)) {
- $this->error('请先选中要删除数据');
- }
- $res = db('工单_印版领用记录')
- ->where('UniqID','in',$id)
- ->delete();
- if ($res === false){
- $this->error('删除失败');
- }else{
- $this->success('删除成功');
- }
- }
- //印版库管理菜单下方客户产品印版管理
- public function PrintDetailTab()
- {
- if($this->request->isGet() === false){
- $this->error('请求错误');
- }
- $list = db('产品_印版资料')
- ->alias('a')
- ->field('
- rtrim(a.YB_Cpdh) as 产品代号,
- rtrim(b.产品名称) as 产品名称,
- rtrim(b.客户编号) as 客户编号,
- rtrim(b.客户名称) as 客户名称,
- rtrim(a.存货编码) as 存货编码,
- rtrim(c.名称) as 名称
- ')
- ->join('产品_基本资料 b', 'a.YB_Cpdh = b.产品编号')
- ->join('物料_存货结构 c',
- "(CASE
- WHEN a.存货编码 REGEXP '[A-Za-z]'
- THEN LEFT(rtrim(a.存货编码), 5)
- ELSE LEFT(rtrim(a.存货编码), 4)
- END) = rtrim(c.编号)"
- )
- ->group('a.YB_Cpdh,名称')
- ->order('a.YB_Cpdh,a.存货编码')
- ->select();
- if (empty($list)){
- $this->error('未找到客户数据');
- }
- foreach ($list as $item) {
- $customerKey = $item['客户编号'] . '【' . $item['客户名称'] . '】';
- $productKey = $item['产品代号'] . '【' . $item['产品名称'] . '】';
- if (!isset($data[$customerKey])) {
- $data[$customerKey] = [];
- }
- if (!isset($data[$customerKey][$productKey])) {
- $data[$customerKey][$productKey] = [];
- }
- if (!in_array($item['名称'], $data[$customerKey][$productKey])) {
- $data[$customerKey][$productKey][] = $item['名称'];
- }
- }
- $this->success('成功', $data);
- }
- //客户印版库右侧列表
- public function PrintDetail()
- {
- if ($this->request->isGet() === false) {
- $this->error('请求错误');
- }
- $param = $this->request->param();
- if (empty($param) || !isset($param['code']) || !isset($param['category'])) {
- $this->error('请求错误');
- }
- //获取印版库分类编号
- $categoryNumber = db('物料_存货');
- $where = [
- 'a.YB_Cpdh' => $param['code'],
- 'b.YB_Cpdh' => $param['category'],
- ];
- // $list = db('<UNK>_<UNK>')
- }
- }
|