From 7464ba067ccc26879f48e607eeb2f0256db43cc9 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 20 Jun 2023 11:04:46 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E7=8F=AD=E7=BB=84=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E3=80=81=E4=BA=BA=E5=91=98=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E8=AE=BE=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PersoncorrdeviceController.java | 52 ++++- .../IPdmBiPersoncorrdeviceService.java | 6 +- .../userdevice/dao/PdmBiPersoncorrdevice.java | 6 +- .../mapper/PdmBiPersoncorrdeviceMapper.java | 6 +- .../xml/PdmBiPersoncorrdeviceMapper.xml | 26 +++ .../userdevice/dto/DeviceUserQuery.java | 27 +++ .../PdmBiPersoncorrdeviceServiceImpl.java | 12 +- .../PdmBiTeamcorrpersonController.java | 120 ++++++++++ .../java/org/nl/wms/product_manage/pdm.xls | Bin 215040 -> 215552 bytes .../IPdmBiTeamcorrpersonService.java | 23 ++ .../dao/PdmBiTeamcorrperson.java | 41 ++++ .../dao/mapper/PdmBiTeamcorrpersonMapper.java | 24 ++ .../mapper/xml/PdmBiTeamcorrpersonMapper.xml | 34 +++ .../teamcorrPerson/dto/WorkTeamQuery.java | 27 +++ .../impl/PdmBiTeamcorrpersonServiceImpl.java | 33 +++ mes/qd/src/api/wms/mps/teamcorrperson.js | 43 ---- .../mps/personcorrdevice/DevicesDialog.vue | 144 ------------ .../personcorrdevice/SelectDeviceDialog.vue | 93 ++------ .../personcorrdevice/SelectPeersonDialog.vue | 153 ------------- .../wms/mps/personcorrdevice/dictDetail.vue | 152 +++++++++++++ .../views/wms/mps/personcorrdevice/index.vue | 135 +++++------ .../wms/mps/teamcorrperson/PersonDialog.vue | 111 --------- .../mps/teamcorrperson/SelectDeviceDialog.vue | 128 +++++++++++ .../teamcorrperson/SelectPeersonDialog.vue | 151 ------------- .../wms/mps/teamcorrperson/dictDetail.vue | 157 +++++++++++++ .../views/wms/mps/teamcorrperson/index.vue | 211 ++++++------------ .../wms/mps/teamcorrperson/teamcorrperson.js | 27 +++ 27 files changed, 1037 insertions(+), 905 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dto/DeviceUserQuery.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/teamcorrPerson/PdmBiTeamcorrpersonController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/IPdmBiTeamcorrpersonService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/PdmBiTeamcorrperson.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/mapper/PdmBiTeamcorrpersonMapper.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/mapper/xml/PdmBiTeamcorrpersonMapper.xml create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dto/WorkTeamQuery.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/impl/PdmBiTeamcorrpersonServiceImpl.java delete mode 100644 mes/qd/src/api/wms/mps/teamcorrperson.js delete mode 100644 mes/qd/src/views/wms/mps/personcorrdevice/DevicesDialog.vue delete mode 100644 mes/qd/src/views/wms/mps/personcorrdevice/SelectPeersonDialog.vue create mode 100644 mes/qd/src/views/wms/mps/personcorrdevice/dictDetail.vue delete mode 100644 mes/qd/src/views/wms/mps/teamcorrperson/PersonDialog.vue create mode 100644 mes/qd/src/views/wms/mps/teamcorrperson/SelectDeviceDialog.vue delete mode 100644 mes/qd/src/views/wms/mps/teamcorrperson/SelectPeersonDialog.vue create mode 100644 mes/qd/src/views/wms/mps/teamcorrperson/dictDetail.vue create mode 100644 mes/qd/src/views/wms/mps/teamcorrperson/teamcorrperson.js diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/controller/userdevice/PersoncorrdeviceController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/controller/userdevice/PersoncorrdeviceController.java index 272be715..691f7e18 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/controller/userdevice/PersoncorrdeviceController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/controller/userdevice/PersoncorrdeviceController.java @@ -2,7 +2,9 @@ package org.nl.wms.device_manage.controller.userdevice; +import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import io.jsonwebtoken.lang.Assert; @@ -14,14 +16,14 @@ import org.nl.common.anno.Log; import lombok.extern.slf4j.Slf4j; import org.nl.common.domain.query.PageQuery; import org.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; import org.nl.wms.device_manage.service.userdevice.IPdmBiPersoncorrdeviceService; import org.nl.wms.device_manage.service.userdevice.dao.PdmBiPersoncorrdevice; +import org.nl.wms.device_manage.service.userdevice.dto.DeviceUserQuery; import org.nl.wms.mps.service.PersoncorrdeviceService; -import org.nl.wms.mps.service.dto.PersoncorrdeviceDto; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Arrays; @@ -45,7 +47,7 @@ public class PersoncorrdeviceController { @GetMapping @Log("查询人员设备维护") @ApiOperation("查询人员设备维护") - public ResponseEntity query(@RequestParam Map query, PageQuery page){ + public ResponseEntity query(DeviceUserQuery query, PageQuery page){ Page result = PageHelper.startPage(page.getPage() + 1, page.getSize()); List list = pdmBiPersoncorrdeviceService.queryAll(query); TableDataInfo build = TableDataInfo.build(list); @@ -53,24 +55,64 @@ public class PersoncorrdeviceController { return new ResponseEntity<>(build,HttpStatus.OK); } + @GetMapping("/device") + @Log("查询设备") + @ApiOperation("查询设备") + public ResponseEntity device(DeviceUserQuery query, PageQuery page){ + Page result = PageHelper.startPage(page.getPage() + 1, page.getSize()); + List list = pdmBiPersoncorrdeviceService.queryAllDevice(query); + TableDataInfo build = TableDataInfo.build(list); + build.setTotalElements(result.getTotal()); + return new ResponseEntity<>(build,HttpStatus.OK); + } + @PostMapping @Log("新增人员设备维护") @ApiOperation("新增人员设备维护") //@PreAuthorize("@el.check('personcorrdevice:add')") public ResponseEntity create(@RequestBody JSONObject entity){ Assert.notNull(entity,"请求参数不能为空"); + + PdmBiPersoncorrdevice one = pdmBiPersoncorrdeviceService.getOne( + new QueryWrapper().lambda() + .eq(PdmBiPersoncorrdevice::getUser_id, entity.getString("user_id")) + .eq(PdmBiPersoncorrdevice::getDevice_code, entity.getString("device_code")) + ); + + if (ObjectUtil.isNotEmpty(one)) throw new BadRequestException("设备重复"); + PdmBiPersoncorrdevice pdmBiPersoncorrdevice = entity.toJavaObject(PdmBiPersoncorrdevice.class); - pdmBiPersoncorrdevice.setId(IdUtil.getStringId()); + pdmBiPersoncorrdevice.setPerson_id(IdUtil.getStringId()); pdmBiPersoncorrdeviceService.save(pdmBiPersoncorrdevice); return new ResponseEntity<>(HttpStatus.CREATED); } + @PutMapping + @Log("修改人员设备维护") + @ApiOperation("修改人员设备维护") + //@PreAuthorize("@el.check('personcorrdevice:add')") + public ResponseEntity update(@RequestBody JSONObject entity){ + + PdmBiPersoncorrdevice one = pdmBiPersoncorrdeviceService.getOne( + new QueryWrapper().lambda() + .eq(PdmBiPersoncorrdevice::getUser_id, entity.getString("user_id")) + .eq(PdmBiPersoncorrdevice::getDevice_code, entity.getString("device_code")) + ); + + if (ObjectUtil.isNotEmpty(one)) throw new BadRequestException("设备重复"); + + PdmBiPersoncorrdevice pdmBiPersoncorrdevice = pdmBiPersoncorrdeviceService.getById(entity.getString("person_id")); + pdmBiPersoncorrdevice.setDevice_code(entity.getString("device_code")); + pdmBiPersoncorrdeviceService.updateById(pdmBiPersoncorrdevice); + return new ResponseEntity<>(HttpStatus.CREATED); + } + @Log("删除人员设备维护") @ApiOperation("删除人员设备维护") //@PreAuthorize("@el.check('personcorrdevice:del')") @DeleteMapping - public ResponseEntity delete(@RequestBody Long[] ids) { + public ResponseEntity delete(@RequestBody String[] ids) { if (ids != null && ids.length>0){ pdmBiPersoncorrdeviceService.removeByIds(Arrays.asList(ids)); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/IPdmBiPersoncorrdeviceService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/IPdmBiPersoncorrdeviceService.java index d4b836ce..a7d9d67c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/IPdmBiPersoncorrdeviceService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/IPdmBiPersoncorrdeviceService.java @@ -2,9 +2,9 @@ package org.nl.wms.device_manage.service.userdevice; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.common.domain.query.PageQuery; import org.nl.wms.device_manage.service.userdevice.dao.PdmBiPersoncorrdevice; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.device_manage.service.userdevice.dto.DeviceUserQuery; import org.nl.wms.mps.service.dto.PersoncorrdeviceDto; import org.springframework.data.domain.Pageable; @@ -27,7 +27,7 @@ public interface IPdmBiPersoncorrdeviceService extends IService */ - List queryAll(Map whereJson); + List queryAll(DeviceUserQuery whereJson); /** @@ -80,4 +80,6 @@ public interface IPdmBiPersoncorrdeviceService extends IService queryAllDevice(DeviceUserQuery whereJson); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/PdmBiPersoncorrdevice.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/PdmBiPersoncorrdevice.java index ba887e34..adbabf55 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/PdmBiPersoncorrdevice.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/PdmBiPersoncorrdevice.java @@ -16,13 +16,13 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = false) -@TableName("pdm_bi_personcorrdevice") +@TableName("mps_personcorrdevice") public class PdmBiPersoncorrdevice implements Serializable { private static final long serialVersionUID = 1L; - @TableId(value = "id") - private String id; + @TableId + private String person_id; /** * 用户id */ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/mapper/PdmBiPersoncorrdeviceMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/mapper/PdmBiPersoncorrdeviceMapper.java index 09753fe3..2b4ee409 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/mapper/PdmBiPersoncorrdeviceMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/mapper/PdmBiPersoncorrdeviceMapper.java @@ -1,7 +1,9 @@ package org.nl.wms.device_manage.service.userdevice.dao.mapper; +import org.apache.ibatis.annotations.Param; import org.nl.wms.device_manage.service.userdevice.dao.PdmBiPersoncorrdevice; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.device_manage.service.userdevice.dto.DeviceUserQuery; import java.util.List; import java.util.Map; @@ -16,5 +18,7 @@ import java.util.Map; */ public interface PdmBiPersoncorrdeviceMapper extends BaseMapper { - List queryAll(Map query); + List queryAll(@Param("query") DeviceUserQuery query); + + List queryAllDevice(@Param("query") DeviceUserQuery query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/mapper/xml/PdmBiPersoncorrdeviceMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/mapper/xml/PdmBiPersoncorrdeviceMapper.xml index 48fe08c2..8bf3506b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/mapper/xml/PdmBiPersoncorrdeviceMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dao/mapper/xml/PdmBiPersoncorrdeviceMapper.xml @@ -3,6 +3,32 @@ + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dto/DeviceUserQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dto/DeviceUserQuery.java new file mode 100644 index 00000000..bb50fef4 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/dto/DeviceUserQuery.java @@ -0,0 +1,27 @@ +package org.nl.wms.device_manage.service.userdevice.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp; +import org.nl.wms.system_manage.service.user.dto.UserDto; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class DeviceUserQuery extends BaseQuery { + + private String username; + + private String user_id; + + @Override + public void paramMapping() { + super.doP.put("username", QParam.builder().k(new String[]{"username"}).type(QueryTEnum.LK).build()); + } + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/impl/PdmBiPersoncorrdeviceServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/impl/PdmBiPersoncorrdeviceServiceImpl.java index 0ed1305e..c6b08d3d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/impl/PdmBiPersoncorrdeviceServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/service/userdevice/impl/PdmBiPersoncorrdeviceServiceImpl.java @@ -2,11 +2,11 @@ package org.nl.wms.device_manage.service.userdevice.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.common.domain.query.PageQuery; import org.nl.wms.device_manage.service.userdevice.dao.PdmBiPersoncorrdevice; import org.nl.wms.device_manage.service.userdevice.dao.mapper.PdmBiPersoncorrdeviceMapper; import org.nl.wms.device_manage.service.userdevice.IPdmBiPersoncorrdeviceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.device_manage.service.userdevice.dto.DeviceUserQuery; import org.nl.wms.mps.service.dto.PersoncorrdeviceDto; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -26,9 +26,8 @@ import java.util.Map; public class PdmBiPersoncorrdeviceServiceImpl extends ServiceImpl implements IPdmBiPersoncorrdeviceService { @Override - public List queryAll(Map query) { - this.baseMapper.queryAll(query); - return null; + public List queryAll(DeviceUserQuery query) { + return this.baseMapper.queryAll(query); } @Override @@ -85,4 +84,9 @@ public class PdmBiPersoncorrdeviceServiceImpl extends ServiceImpl queryAllDevice(DeviceUserQuery query) { + return this.baseMapper.queryAllDevice(query); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/teamcorrPerson/PdmBiTeamcorrpersonController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/teamcorrPerson/PdmBiTeamcorrpersonController.java new file mode 100644 index 00000000..39e215d4 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/teamcorrPerson/PdmBiTeamcorrpersonController.java @@ -0,0 +1,120 @@ +package org.nl.wms.product_manage.controller.teamcorrPerson; + + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import io.jsonwebtoken.lang.Assert; +import io.swagger.annotations.ApiOperation; +import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.device_manage.service.userdevice.dao.PdmBiPersoncorrdevice; +import org.nl.wms.device_manage.service.userdevice.dto.DeviceUserQuery; +import org.nl.wms.product_manage.service.teamcorrPerson.IPdmBiTeamcorrpersonService; +import org.nl.wms.product_manage.service.teamcorrPerson.dao.PdmBiTeamcorrperson; +import org.nl.wms.product_manage.service.teamcorrPerson.dto.WorkTeamQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + *

+ * 班组与人员对应关系表 前端控制器 + *

+ * + * @author generator + * @since 2023-06-20 + */ +@RestController +@RequestMapping("/api/pdmBiTeamcorrperson") +public class PdmBiTeamcorrpersonController { + + @Autowired + private IPdmBiTeamcorrpersonService iPdmBiTeamcorrpersonService; + + @GetMapping + @Log("查询人员设备维护") + @ApiOperation("查询人员设备维护") + public ResponseEntity query(WorkTeamQuery query, PageQuery page){ + Page result = PageHelper.startPage(page.getPage() + 1, page.getSize()); + List list = iPdmBiTeamcorrpersonService.queryAll(query); + TableDataInfo build = TableDataInfo.build(list); + build.setTotalElements(result.getTotal()); + return new ResponseEntity<>(build, HttpStatus.OK); + } + + @GetMapping("/queryUser") + @Log("查询人员设备维护") + @ApiOperation("查询人员设备维护") + public ResponseEntity queryUser(WorkTeamQuery query, PageQuery page){ + Page result = PageHelper.startPage(page.getPage() + 1, page.getSize()); + List list = iPdmBiTeamcorrpersonService.queryUser(query); + TableDataInfo build = TableDataInfo.build(list); + build.setTotalElements(result.getTotal()); + return new ResponseEntity<>(build, HttpStatus.OK); + } + + + @PostMapping + @Log("新增班组对应人员") + @ApiOperation("新增班组对应人员") + public ResponseEntity create(@RequestBody JSONObject entity){ + Assert.notNull(entity,"请求参数不能为空"); + + PdmBiTeamcorrperson one = iPdmBiTeamcorrpersonService.getOne( + new QueryWrapper().lambda() + .eq(PdmBiTeamcorrperson::getUser_id, entity.getString("user_id")) + .eq(PdmBiTeamcorrperson::getTeam_id, entity.getString("team_id")) + ); + + if (ObjectUtil.isNotEmpty(one)) throw new BadRequestException("人员重复"); + + PdmBiTeamcorrperson pdmBiTeamcorrperson = entity.toJavaObject(PdmBiTeamcorrperson.class); + pdmBiTeamcorrperson.setTeam_person_id(IdUtil.getStringId()); + iPdmBiTeamcorrpersonService.save(pdmBiTeamcorrperson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + + @PutMapping + @Log("修改班组对应人员") + @ApiOperation("修改班组对应人员") + public ResponseEntity update(@RequestBody JSONObject entity){ + + PdmBiTeamcorrperson one = iPdmBiTeamcorrpersonService.getOne( + new QueryWrapper().lambda() + .eq(PdmBiTeamcorrperson::getUser_id, entity.getString("user_id")) + .eq(PdmBiTeamcorrperson::getTeam_id, entity.getString("team_id")) + ); + + if (ObjectUtil.isNotEmpty(one)) throw new BadRequestException("人员重复"); + + PdmBiTeamcorrperson pdmBiTeamcorrperson = iPdmBiTeamcorrpersonService.getById(entity.getString("team_person_id")); + pdmBiTeamcorrperson.setUser_id(entity.getString("user_id")); + iPdmBiTeamcorrpersonService.updateById(pdmBiTeamcorrperson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @Log("删除班组对应人员") + @ApiOperation("删除班组对应人员") + @DeleteMapping + public ResponseEntity delete(@RequestBody String[] ids) { + if (ids != null && ids.length>0){ + iPdmBiTeamcorrpersonService.removeByIds(Arrays.asList(ids)); + } + return new ResponseEntity<>(HttpStatus.OK); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls index aa248e2c31646aa7ed7b37377314b3fa90da27b9..442ec9d846d279f5081f2082c25a122bb3a10d30 100644 GIT binary patch delta 25166 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 delta 25532 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 YKRFT2Mjnb~yD$>^OQ3qMA#64NKc2F^LjV8( diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/IPdmBiTeamcorrpersonService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/IPdmBiTeamcorrpersonService.java new file mode 100644 index 00000000..ab37c72d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/IPdmBiTeamcorrpersonService.java @@ -0,0 +1,23 @@ +package org.nl.wms.product_manage.service.teamcorrPerson; + +import org.nl.wms.product_manage.service.teamcorrPerson.dao.PdmBiTeamcorrperson; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.product_manage.service.teamcorrPerson.dto.WorkTeamQuery; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 班组与人员对应关系表 服务类 + *

+ * + * @author generator + * @since 2023-06-20 + */ +public interface IPdmBiTeamcorrpersonService extends IService { + + List queryAll(WorkTeamQuery query); + + List queryUser(WorkTeamQuery query); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/PdmBiTeamcorrperson.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/PdmBiTeamcorrperson.java new file mode 100644 index 00000000..538e3e96 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/PdmBiTeamcorrperson.java @@ -0,0 +1,41 @@ +package org.nl.wms.product_manage.service.teamcorrPerson.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 班组与人员对应关系表 + *

+ * + * @author generator + * @since 2023-06-20 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("pdm_bi_teamcorrperson") +public class PdmBiTeamcorrperson implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 班组人员对应标识 + */ + @TableId + private String team_person_id; + + /** + * 班组标识 + */ + private String team_id; + + /** + * 操作工标识 + */ + private String user_id; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/mapper/PdmBiTeamcorrpersonMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/mapper/PdmBiTeamcorrpersonMapper.java new file mode 100644 index 00000000..65376f99 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/mapper/PdmBiTeamcorrpersonMapper.java @@ -0,0 +1,24 @@ +package org.nl.wms.product_manage.service.teamcorrPerson.dao.mapper; + +import org.apache.ibatis.annotations.Param; +import org.nl.wms.product_manage.service.teamcorrPerson.dao.PdmBiTeamcorrperson; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.product_manage.service.teamcorrPerson.dto.WorkTeamQuery; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 班组与人员对应关系表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-06-20 + */ +public interface PdmBiTeamcorrpersonMapper extends BaseMapper { + + List queryAll(@Param("query") WorkTeamQuery query); + + List queryUser(@Param("query") WorkTeamQuery query); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/mapper/xml/PdmBiTeamcorrpersonMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/mapper/xml/PdmBiTeamcorrpersonMapper.xml new file mode 100644 index 00000000..193931d5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dao/mapper/xml/PdmBiTeamcorrpersonMapper.xml @@ -0,0 +1,34 @@ + + + + + + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dto/WorkTeamQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dto/WorkTeamQuery.java new file mode 100644 index 00000000..30208d0a --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/dto/WorkTeamQuery.java @@ -0,0 +1,27 @@ +package org.nl.wms.product_manage.service.teamcorrPerson.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.modules.common.base.BaseDTO; +import org.nl.wms.system_manage.service.user.dto.UserDto; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class WorkTeamQuery extends BaseQuery { + + private String team_code; + + private String team_id; + + @Override + public void paramMapping() { + super.doP.put("team_code", QParam.builder().k(new String[]{"team_code"}).type(QueryTEnum.LK).build()); + } + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/impl/PdmBiTeamcorrpersonServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/impl/PdmBiTeamcorrpersonServiceImpl.java new file mode 100644 index 00000000..37fb0560 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/teamcorrPerson/impl/PdmBiTeamcorrpersonServiceImpl.java @@ -0,0 +1,33 @@ +package org.nl.wms.product_manage.service.teamcorrPerson.impl; + +import org.nl.wms.product_manage.service.teamcorrPerson.dao.PdmBiTeamcorrperson; +import org.nl.wms.product_manage.service.teamcorrPerson.dao.mapper.PdmBiTeamcorrpersonMapper; +import org.nl.wms.product_manage.service.teamcorrPerson.IPdmBiTeamcorrpersonService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.product_manage.service.teamcorrPerson.dto.WorkTeamQuery; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 班组与人员对应关系表 服务实现类 + *

+ * + * @author generator + * @since 2023-06-20 + */ +@Service +public class PdmBiTeamcorrpersonServiceImpl extends ServiceImpl implements IPdmBiTeamcorrpersonService { + + @Override + public List queryAll(WorkTeamQuery query) { + return this.baseMapper.queryAll(query); + } + + @Override + public List queryUser(WorkTeamQuery query) { + return this.baseMapper.queryUser(query); + } +} diff --git a/mes/qd/src/api/wms/mps/teamcorrperson.js b/mes/qd/src/api/wms/mps/teamcorrperson.js deleted file mode 100644 index 87dc011c..00000000 --- a/mes/qd/src/api/wms/mps/teamcorrperson.js +++ /dev/null @@ -1,43 +0,0 @@ -import request from '@/utils/request' - -export function add(data) { - return request({ - url: 'api/teamcorrperson', - method: 'post', - data - }) -} - -export function del(ids) { - return request({ - url: 'api/teamcorrperson/', - method: 'delete', - data: ids - }) -} - -export function edit(data) { - return request({ - url: 'api/teamcorrperson', - method: 'put', - data - }) -} - -export function getPersonIdByTeamId(data) { - return request({ - url: 'api/teamcorrperson/getPersonIdByTeamId', - method: 'post', - data - }) -} - -export function addPersons(data) { - return request({ - url: 'api/teamcorrperson/addPersons', - method: 'post', - data - }) -} - -export default { add, edit, del, getPersonIdByTeamId, addPersons } diff --git a/mes/qd/src/views/wms/mps/personcorrdevice/DevicesDialog.vue b/mes/qd/src/views/wms/mps/personcorrdevice/DevicesDialog.vue deleted file mode 100644 index b2e9e2fb..00000000 --- a/mes/qd/src/views/wms/mps/personcorrdevice/DevicesDialog.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - - - diff --git a/mes/qd/src/views/wms/mps/personcorrdevice/SelectDeviceDialog.vue b/mes/qd/src/views/wms/mps/personcorrdevice/SelectDeviceDialog.vue index 19e06b25..869e53a8 100644 --- a/mes/qd/src/views/wms/mps/personcorrdevice/SelectDeviceDialog.vue +++ b/mes/qd/src/views/wms/mps/personcorrdevice/SelectDeviceDialog.vue @@ -18,15 +18,6 @@ style="width: 220px;" class="filter-item" /> - - - - @@ -40,25 +31,20 @@ :cell-style="{'text-align':'center'}" :header-cell-style="{background:'#f5f7fa',color:'#606266','text-align':'center'}" @selection-change="crud.selectionChangeHandler" + @current-change="clickChange" > - + + + - - 取 消 + 取 消 确 定 @@ -70,34 +56,25 @@ import CRUD, { header, presenter } from '@crud/crud' import rrOperation from '@crud/RR.operation' import pagination from '@crud/Pagination' import '@riophae/vue-treeselect/dist/vue-treeselect.css' -import crudTeamcorrperson from '@/api/wms/mps/teamcorrperson' -import crudPersoncorrdevice from '@/api/wms/mps/personcorrdevice' import crudDevice from '@/api/wms/pdm/device' export default { name: 'SelectDeviceDialog', components: { rrOperation, pagination }, cruds() { - return CRUD({ title: '设备选择', url: 'api/device', crudMethod: { ...crudTeamcorrperson }, optShow: {}}) + return CRUD({ title: '设备选择', url: 'api/device', crudMethod: { ...crudDevice }, optShow: {}}) }, mixins: [presenter(), header()], props: { dialogShow: { type: Boolean, default: false - }, - materOptCode: { - type: String, - default: '00' } }, data() { return { - dialogVisible: false, - user_id: '', - tableData: [], - workList: [], - tableLabel: [] + tableRadio: null, + dialogVisible: false } }, watch: { @@ -109,72 +86,32 @@ export default { }, methods: { open() { - this.getWorkprocedure() - this.getDeviceIdByUserId(this.user_id) }, setForm(user_id) { this.user_id = user_id }, // 钩子:在获取表格数据之前执行,false 则代表不获取数据 [CRUD.HOOK.afterRefresh]() { - const that = this - that.$nextTick(() => { - that.crud.data.forEach(row => { - this.tableData.forEach(person => { - if (Number(row.device_id) === Number(person.device_id)) { - that.$refs.table.toggleRowSelection(row, true) - } - }) - }) - }) return true }, close() { - this.crud.resetQuery(false) - this.$emit('update:dialogShow', false) - }, - closeDia() { - this.crud.resetQuery(true) this.$emit('update:dialogShow', false) }, submit() { - if (this.crud.selections.length <= 0) { + if (this.tableRadio === null) { this.$message('至少选择一条设备信息') return } console.log(this.crud.selections) - crudPersoncorrdevice.addDevices({ user_id: this.user_id, devices: this.crud.selections }).then(res => { - this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) - // 隐藏弹出框 - this.$emit('update:dialogShow', false) - this.crud.toQuery() - // 向父组件传值 - this.$emit('tableChanged3', this.tableRadio) - }) + this.$emit('update:dialogShow', false) + this.$emit('tableChanged3', this.tableRadio) }, - changeHeader(search, workprocedure_id) { - this.getHeader(search,workprocedure_id) - this.crud.toQuery() + clickChange(item) { + this.tableRadio = item }, // 钩子:在获取表格数据之前执行,false 则代表不获取数据 [CRUD.HOOK.beforeRefresh]() { - this.getHeader(this.query.search, this.query.workprocedure_id) return true - }, - getWorkprocedure() { - crudDevice.getWorkprocedure().then(res => { - this.workList = res - }) - }, - getHeader(search, workprocedure_id) { - crudDevice.getItemByDeviceId({ search: search, workprocedure_id: workprocedure_id }).then(res => { - this.tableLabel = res.newArray - }) - }, - getDeviceIdByUserId(user_id) { - crudPersoncorrdevice.getDeviceIdByUserId({ user_id: user_id }).then(res => { - this.tableData = res - }) } } } diff --git a/mes/qd/src/views/wms/mps/personcorrdevice/SelectPeersonDialog.vue b/mes/qd/src/views/wms/mps/personcorrdevice/SelectPeersonDialog.vue deleted file mode 100644 index aba43b88..00000000 --- a/mes/qd/src/views/wms/mps/personcorrdevice/SelectPeersonDialog.vue +++ /dev/null @@ -1,153 +0,0 @@ - - - - - diff --git a/mes/qd/src/views/wms/mps/personcorrdevice/dictDetail.vue b/mes/qd/src/views/wms/mps/personcorrdevice/dictDetail.vue new file mode 100644 index 00000000..f2a8ad0b --- /dev/null +++ b/mes/qd/src/views/wms/mps/personcorrdevice/dictDetail.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/mes/qd/src/views/wms/mps/personcorrdevice/index.vue b/mes/qd/src/views/wms/mps/personcorrdevice/index.vue index 69d22c2c..00bc3787 100644 --- a/mes/qd/src/views/wms/mps/personcorrdevice/index.vue +++ b/mes/qd/src/views/wms/mps/personcorrdevice/index.vue @@ -1,14 +1,14 @@ diff --git a/mes/qd/src/views/wms/mps/teamcorrperson/PersonDialog.vue b/mes/qd/src/views/wms/mps/teamcorrperson/PersonDialog.vue deleted file mode 100644 index 9c423b3b..00000000 --- a/mes/qd/src/views/wms/mps/teamcorrperson/PersonDialog.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - - - diff --git a/mes/qd/src/views/wms/mps/teamcorrperson/SelectDeviceDialog.vue b/mes/qd/src/views/wms/mps/teamcorrperson/SelectDeviceDialog.vue new file mode 100644 index 00000000..c96af7b6 --- /dev/null +++ b/mes/qd/src/views/wms/mps/teamcorrperson/SelectDeviceDialog.vue @@ -0,0 +1,128 @@ + + + + + diff --git a/mes/qd/src/views/wms/mps/teamcorrperson/SelectPeersonDialog.vue b/mes/qd/src/views/wms/mps/teamcorrperson/SelectPeersonDialog.vue deleted file mode 100644 index f27099c9..00000000 --- a/mes/qd/src/views/wms/mps/teamcorrperson/SelectPeersonDialog.vue +++ /dev/null @@ -1,151 +0,0 @@ - - - - - diff --git a/mes/qd/src/views/wms/mps/teamcorrperson/dictDetail.vue b/mes/qd/src/views/wms/mps/teamcorrperson/dictDetail.vue new file mode 100644 index 00000000..037dbd58 --- /dev/null +++ b/mes/qd/src/views/wms/mps/teamcorrperson/dictDetail.vue @@ -0,0 +1,157 @@ + + + + + diff --git a/mes/qd/src/views/wms/mps/teamcorrperson/index.vue b/mes/qd/src/views/wms/mps/teamcorrperson/index.vue index c1f754bd..a15c595c 100644 --- a/mes/qd/src/views/wms/mps/teamcorrperson/index.vue +++ b/mes/qd/src/views/wms/mps/teamcorrperson/index.vue @@ -1,208 +1,133 @@ diff --git a/mes/qd/src/views/wms/mps/teamcorrperson/teamcorrperson.js b/mes/qd/src/views/wms/mps/teamcorrperson/teamcorrperson.js new file mode 100644 index 00000000..afe615ce --- /dev/null +++ b/mes/qd/src/views/wms/mps/teamcorrperson/teamcorrperson.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/pdmBiTeamcorrperson', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/pdmBiTeamcorrperson/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/pdmBiTeamcorrperson', + method: 'put', + data + }) +} + +export default { add, edit, del }