From bba0303e57e9e1e293e04dea0e01bfb441c93626 Mon Sep 17 00:00:00 2001 From: philip <244793088@qq.com> Date: Sat, 7 Aug 2021 10:44:57 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BA=A7=E5=89=8D=E5=87=86=E5=A4=87?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/mapper/ProdReadyTaskMapper.java | 3 + .../common/service/ProdReadyTaskService.java | 2 + .../impl/InspectionItemServiceImpl.java | 7 +- .../impl/ProdReadyTaskServiceImpl.java | 117 ++++++-- .../resources/mapper/ProdReadyTaskMapper.xml | 7 + .../MessageTypeUserGroupController.java | 120 ++++++++ .../mapper/MessageTypeUserGroupMapper.java | 18 ++ .../mesnac/meapi/mapper/SfcMapper.java | 5 +- .../meapi/model/MessageTypeUserGroup.java | 76 +++++ .../service/MessageTypeUserGroupService.java | 28 ++ .../mesnac/meapi/service/SfcService.java | 5 +- .../impl/MessageTypeUserGroupServiceImpl.java | 46 +++ .../meapi/service/impl/SfcServiceImpl.java | 7 +- .../mapper/MessageTypeUserGroupMapper.xml | 262 ++++++++++++++++++ meapi/src/main/resources/mapper/SfcMapper.xml | 18 +- .../service/impl/SelfReportServiceImpl.java | 7 + .../quartz/job/ProdUnReadySendMsgJob.java | 43 +++ 17 files changed, 729 insertions(+), 42 deletions(-) create mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/MessageTypeUserGroupController.java create mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/MessageTypeUserGroupMapper.java create mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/model/MessageTypeUserGroup.java create mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/service/MessageTypeUserGroupService.java create mode 100644 meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/MessageTypeUserGroupServiceImpl.java create mode 100644 meapi/src/main/resources/mapper/MessageTypeUserGroupMapper.xml create mode 100644 quartz/src/main/java/com/foreverwin/mesnac/quartz/job/ProdUnReadySendMsgJob.java diff --git a/common/src/main/java/com/foreverwin/mesnac/common/mapper/ProdReadyTaskMapper.java b/common/src/main/java/com/foreverwin/mesnac/common/mapper/ProdReadyTaskMapper.java index c5127473..1110e9c9 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/mapper/ProdReadyTaskMapper.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/mapper/ProdReadyTaskMapper.java @@ -5,6 +5,7 @@ import com.foreverwin.mesnac.common.model.ProdReadyTask; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; +import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -26,4 +27,6 @@ public interface ProdReadyTaskMapper extends BaseMapper { List> getItemDetail(@Param("site")String site, @Param("locale")String locale, @Param("dispatchNo")String dispatchNo); List> getToolDetail(@Param("site")String site, @Param("locale")String locale, @Param("dispatchNo")String dispatchNo); + + List getUnreadyTasks(@Param("site")String site, @Param("startTime")LocalDateTime now, @Param("endTime")LocalDateTime endTime); } \ No newline at end of file diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/ProdReadyTaskService.java b/common/src/main/java/com/foreverwin/mesnac/common/service/ProdReadyTaskService.java index c168ef35..42f19695 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/service/ProdReadyTaskService.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/service/ProdReadyTaskService.java @@ -39,4 +39,6 @@ public interface ProdReadyTaskService extends IService { boolean saveResult(ProdReadyTask prodReadyTask); void doPrint(ProdReadyTask prodReadyTask); + + void sendMsgJob(String site); } \ No newline at end of file diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionItemServiceImpl.java b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionItemServiceImpl.java index 6bbf6f1c..97370026 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionItemServiceImpl.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionItemServiceImpl.java @@ -102,10 +102,10 @@ public class InspectionItemServiceImpl extends ServiceImpl list = list(lambdaQueryWrapper); - if (list.size() < 1) { - throw new BaseException("根据派工主键未找到产前准备任务"); - } - if (list.get(0).getStatus().equals(STATUS_CANCEL)) { - throw new BaseException("产前准备任务任务已取消"); + if (list.size() >0) { + ProdReadyTask prodReadyTask = list.get(0); + if (prodReadyTask.getStatus().equals(STATUS_CANCEL)) { + throw new BaseException("产前准备任务任务已取消"); + } + prodReadyTask.setStatus(STATUS_CANCEL); + LocalDateTime now = LocalDateTime.now(); + prodReadyTask.setCancelDateTime(now); + prodReadyTask.setModifiedDateTime(now); + prodReadyTask.setCancelUser(user); + prodReadyTask.setModifyUser(user); + updateById(prodReadyTask); } - LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); - updateWrapper.set(ProdReadyTask::getStatus, STATUS_CANCEL); - updateWrapper.set(ProdReadyTask::getCancelUser, user); - updateWrapper.set(ProdReadyTask::getCancelDateTime, LocalDateTime.now()); - updateWrapper.eq(ProdReadyTask::getSfcDispatchBo, sfcDispatchBO); - update(updateWrapper); } } } @@ -422,6 +425,80 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl prodReadyTasks=prodReadyTaskMapper.getUnreadyTasks(site,now,endTime); + for(ProdReadyTask prodReadyTask : prodReadyTasks){ + QueryWrapper messageQueryWrapper = new QueryWrapper<>(); + messageQueryWrapper.eq(Message.OBJECT_BO,prodReadyTask.getHandle()); + List list = messageService.list(messageQueryWrapper); + if (!list.isEmpty()){ + continue; + } + LambdaQueryWrapper lambdaQuery = new LambdaQueryWrapper<>(); + lambdaQuery.eq(ProdReadyTaskDetail::getProdReadyTaskBo, prodReadyTask.getHandle()); + List readyTaskDetails = prodReadyTaskDetailService.list(lambdaQuery); + for (ProdReadyTaskDetail prodReadyTaskDetail:readyTaskDetails){ + if (prodReadyTaskDetail.getInspectionItem().equals(P01)){ + Message message = new Message(); + String uuid = UUID.randomUUID().toString(); + message.setHandle(uuid); + message.setSite(site); + message.setObjectBo(prodReadyTask.getHandle()); + message.setType("C"); + message.setMessageType(MESSAGE_TYPE_WLZB); + //查询消息类型关联的用户组 + String workCenter = prodReadyTask.getWorkCenter(); + String userGroup=workCenter+"-"+MESSAGE_TYPE_WLZB; + + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq(MessageTypeUserGroup.MESSAGE_TYPE_BO, new MessageTypeBOHandle(site,MESSAGE_TYPE_WLZB).getValue()); + queryWrapper.eq(MessageTypeUserGroup.USER_GROUP_BO,new UserGroupBOHandle(site,userGroup).getValue()); + List messageTypeUserGroupList = messageTypeUserGroupService.list(queryWrapper); + if (messageTypeUserGroupList.isEmpty()){ + continue; + } + message.setSendUserGroup(userGroup); + message.setSendUser(""); + message.setContent(""); + message.setUpUserGroup(""); + message.setUpUser(""); + message.setUpMessageType(""); + message.setUpDateTime(LocalDateTime.now()); + message.setGrade(0.0D); + message.setResponseDateTime(LocalDateTime.now()); + message.setNode(""); + message.setStatus(""); + message.setCreatedUser(""); + message.setCreatedDateTime(LocalDateTime.now()); + message.setModifiedUser(""); + message.setModifiedDateTime(LocalDateTime.now()); + + +/* + List nwaUsers = nwaUserService.checkUserGroup(site,abnormalMessage.getSendUserGroup()); + StringBuilder sendUsers = new StringBuilder(); + for (int i = 0; i < nwaUsers.size(); i++) { + if(i == (nwaUsers.size() - 1)){ + sendUsers.append(nwaUsers.get(i)); + }else{ + sendUsers.append(nwaUsers.get(i)).append("|"); + } + } + activeMQUtil.wechatSendMessage(sendUsers.toString(),abnormalMessage.getContent()); +// } + messageService.saveOrUpdate(abnormalMessage);*/ + + } + } + } + + } + public JSONObject sendToDnc(String item, String resource, String resourceType) { String site = CommonMethods.getSite(); String queue="resource.check.process"; diff --git a/common/src/main/resources/mapper/ProdReadyTaskMapper.xml b/common/src/main/resources/mapper/ProdReadyTaskMapper.xml index 041af9d3..662c74e7 100644 --- a/common/src/main/resources/mapper/ProdReadyTaskMapper.xml +++ b/common/src/main/resources/mapper/ProdReadyTaskMapper.xml @@ -700,4 +700,11 @@ AND BO.OPERATION_BO = 'OperationBO:'||S.SITE||','||zsd.OPERATION||',#' WHERE ZSD.SITE=#{site} AND ZSD.DISPATCH_NO=#{dispatchNo} + + diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/MessageTypeUserGroupController.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/MessageTypeUserGroupController.java new file mode 100644 index 00000000..4f084693 --- /dev/null +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/MessageTypeUserGroupController.java @@ -0,0 +1,120 @@ +package com.foreverwin.mesnac.meapi.controller; + +import com.foreverwin.modular.core.util.R; +import com.foreverwin.modular.core.util.FrontPage; +import com.foreverwin.modular.core.util.CommonMethods; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import com.foreverwin.mesnac.meapi.service.MessageTypeUserGroupService; +import com.foreverwin.mesnac.meapi.model.MessageTypeUserGroup; +import java.util.List; + +/** + * + * @author Philip + * @since 2021-08-07 + */ +@RestController +@RequestMapping("/MESSAGE-TYPE-USER-GROUP") +public class MessageTypeUserGroupController { + + @Autowired + public MessageTypeUserGroupService messageTypeUserGroupService; + + /** + * 根据id查询 + * + * @param id 主键 + * @return + */ + @ResponseBody + @GetMapping("/{id:.+}") + public R getMessageTypeUserGroupById(@PathVariable String id) { + return R.ok( messageTypeUserGroupService.getById(id)); + } + + /** + * 查询所有数据 + * + * @return + */ + @ResponseBody + @GetMapping("") + public R getMessageTypeUserGroupList(MessageTypeUserGroup messageTypeUserGroup){ + List result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(messageTypeUserGroup); + result = messageTypeUserGroupService.list(queryWrapper); + return R.ok(result); + } + + /** + * 分页查询数据 + * + * @param frontPage 分页信息 + * @return + */ + @ResponseBody + @GetMapping("/page") + public R page(FrontPage frontPage, MessageTypeUserGroup messageTypeUserGroup){ + IPage result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(messageTypeUserGroup); + if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) { + //TODO modify global query + queryWrapper.lambda().and(wrapper -> wrapper + .like(MessageTypeUserGroup::getHandle, frontPage.getGlobalQuery()) + .or().like(MessageTypeUserGroup::getMessageTypeBo, frontPage.getGlobalQuery()) + .or().like(MessageTypeUserGroup::getUserGroupBo, frontPage.getGlobalQuery()) + ); + } + result = messageTypeUserGroupService.page(frontPage.getPagePlus(), queryWrapper); + return R.ok(result); + } + + /** + * 新增 + * @param messageTypeUserGroup 传递的实体 + * @return null 失败 实体成功 + */ + @PostMapping + public R save(@RequestBody MessageTypeUserGroup messageTypeUserGroup) { + return R.ok(messageTypeUserGroupService.save(messageTypeUserGroup)); + } + + /** + * 修改 + * @param messageTypeUserGroup 传递的实体 + * @return null 失败 实体成功 + */ + @PutMapping + public R updateById(@RequestBody MessageTypeUserGroup messageTypeUserGroup) { + return R.ok(messageTypeUserGroupService.updateById(messageTypeUserGroup)); + } + + /** + * 根据id删除对象 + * @param id 实体ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}") + public R removeById(@PathVariable("id") String id){ + return R.ok(messageTypeUserGroupService.removeById(id)); + } + + /** + * 批量删除对象 + * @param ids 实体集合ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.POST, value = "/delete-batch") + public R removeByIds(List ids){ + return R.ok(messageTypeUserGroupService.removeByIds(ids)); + } +} \ No newline at end of file diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/MessageTypeUserGroupMapper.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/MessageTypeUserGroupMapper.java new file mode 100644 index 00000000..ed024b56 --- /dev/null +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/MessageTypeUserGroupMapper.java @@ -0,0 +1,18 @@ +package com.foreverwin.mesnac.meapi.mapper; + +import com.foreverwin.mesnac.meapi.model.MessageTypeUserGroup; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author Philip + * @since 2021-08-07 + */ +@Repository +public interface MessageTypeUserGroupMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcMapper.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcMapper.java index 9dc9a0fe..1d385f6d 100644 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcMapper.java +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/mapper/SfcMapper.java @@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; -import java.util.List; +import java.time.LocalDateTime; /** *

@@ -23,8 +23,9 @@ import java.util.List; public interface SfcMapper extends BaseMapper { /** * 获取资源上活动的sfc + * @return */ - List getSfcListByResrceBO(String resrceBO); + LocalDateTime getSfcStartTime(@Param("sfcBO")String sfcBO); SfcDto findSfcData(@Param("site") String site, @Param("sfc") String sfc); diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/MessageTypeUserGroup.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/MessageTypeUserGroup.java new file mode 100644 index 00000000..c0e7bc51 --- /dev/null +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/model/MessageTypeUserGroup.java @@ -0,0 +1,76 @@ +package com.foreverwin.mesnac.meapi.model; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author Philip + * @since 2021-08-07 + */ + +@TableName("MESSAGE_TYPE_USER_GROUP") + +public class MessageTypeUserGroup extends Model { + + private static final long serialVersionUID = 1L; + + @TableField("HANDLE") + private String handle; + @TableField("MESSAGE_TYPE_BO") + private String messageTypeBo; + @TableField("USER_GROUP_BO") + private String userGroupBo; + + + public String getHandle() { + return handle; + } + + public void setHandle(String handle) { + this.handle = handle; + } + + public String getMessageTypeBo() { + return messageTypeBo; + } + + public void setMessageTypeBo(String messageTypeBo) { + this.messageTypeBo = messageTypeBo; + } + + public String getUserGroupBo() { + return userGroupBo; + } + + public void setUserGroupBo(String userGroupBo) { + this.userGroupBo = userGroupBo; + } + +public static final String HANDLE = "HANDLE"; + +public static final String MESSAGE_TYPE_BO = "MESSAGE_TYPE_BO"; + +public static final String USER_GROUP_BO = "USER_GROUP_BO"; + + + @Override + protected Serializable pkVal() { + return this.handle; + } + + @Override + public String toString() { + return "MessageTypeUserGroup{" + + "handle = " + handle + + ", messageTypeBo = " + messageTypeBo + + ", userGroupBo = " + userGroupBo + + "}"; + } +} \ No newline at end of file diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/MessageTypeUserGroupService.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/MessageTypeUserGroupService.java new file mode 100644 index 00000000..2119b64e --- /dev/null +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/MessageTypeUserGroupService.java @@ -0,0 +1,28 @@ +package com.foreverwin.mesnac.meapi.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.foreverwin.mesnac.meapi.model.MessageTypeUserGroup; +import com.baomidou.mybatisplus.extension.service.IService; +import com.foreverwin.modular.core.util.FrontPage; + +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author Philip + * @since 2021-08-07 + */ +public interface MessageTypeUserGroupService extends IService { + + /** + * 分页查询 + * @param frontPage + * @return + */ + IPage selectPage(FrontPage frontPage, MessageTypeUserGroup messageTypeUserGroup); + + List selectList(MessageTypeUserGroup messageTypeUserGroup); +} \ No newline at end of file diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcService.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcService.java index 321aacda..f7aba728 100644 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcService.java +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/SfcService.java @@ -8,6 +8,7 @@ import com.foreverwin.mesnac.meapi.dto.SfcDto; import com.foreverwin.mesnac.meapi.model.Sfc; import com.foreverwin.modular.core.util.FrontPage; +import java.time.LocalDateTime; import java.util.List; /** @@ -36,9 +37,9 @@ public interface SfcService extends IService { List getSfcListByShopOrderBo(String shopOrderBo); /** - * 获取资源上活动的sfc + * 获取sfc的开始时间 */ - List getSfcListByResrceBO(String resrceBO); + LocalDateTime getSfcStartTime(String sfcBO); /** * 查询生产批次的基本信息 diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/MessageTypeUserGroupServiceImpl.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/MessageTypeUserGroupServiceImpl.java new file mode 100644 index 00000000..3dd0c370 --- /dev/null +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/MessageTypeUserGroupServiceImpl.java @@ -0,0 +1,46 @@ +package com.foreverwin.mesnac.meapi.service.impl; + +import com.foreverwin.modular.core.util.FrontPage; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.foreverwin.mesnac.meapi.model.MessageTypeUserGroup; +import com.foreverwin.mesnac.meapi.mapper.MessageTypeUserGroupMapper; +import com.foreverwin.mesnac.meapi.service.MessageTypeUserGroupService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +/** + *

+ * 服务实现类 + *

+ * + * @author Philip + * @since 2021-08-07 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class MessageTypeUserGroupServiceImpl extends ServiceImpl implements MessageTypeUserGroupService { + + + @Autowired + private MessageTypeUserGroupMapper messageTypeUserGroupMapper; + + @Override + public IPage selectPage(FrontPage frontPage, MessageTypeUserGroup messageTypeUserGroup) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(messageTypeUserGroup); + return super.page(frontPage.getPagePlus(), queryWrapper); + } + + @Override + public List selectList(MessageTypeUserGroup messageTypeUserGroup) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(messageTypeUserGroup); + return super.list(queryWrapper); + } + + +} \ No newline at end of file diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcServiceImpl.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcServiceImpl.java index dd9e8d5c..b477c12f 100644 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcServiceImpl.java +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/service/impl/SfcServiceImpl.java @@ -15,6 +15,7 @@ import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.time.LocalDateTime; import java.util.List; /** *

@@ -61,9 +62,9 @@ public class SfcServiceImpl extends ServiceImpl implements SfcSe } @Override - public List getSfcListByResrceBO(String resrceBO) { - List sfc=sfcMapper.getSfcListByResrceBO(resrceBO); - return sfc; + public LocalDateTime getSfcStartTime(String sfcBO) { + LocalDateTime startTime=sfcMapper.getSfcStartTime(sfcBO); + return startTime; } diff --git a/meapi/src/main/resources/mapper/MessageTypeUserGroupMapper.xml b/meapi/src/main/resources/mapper/MessageTypeUserGroupMapper.xml new file mode 100644 index 00000000..87e63999 --- /dev/null +++ b/meapi/src/main/resources/mapper/MessageTypeUserGroupMapper.xml @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + HANDLE, MESSAGE_TYPE_BO, USER_GROUP_BO + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO MESSAGE_TYPE_USER_GROUP + + HANDLE, + MESSAGE_TYPE_BO, + USER_GROUP_BO, + VALUES + + #{handle}, + #{messageTypeBo}, + #{userGroupBo}, + + + + + INSERT INTO MESSAGE_TYPE_USER_GROUP + + + VALUES + + #{handle}, + #{messageTypeBo}, + #{userGroupBo}, + + + + + + + + + + UPDATE MESSAGE_TYPE_USER_GROUP + HANDLE=#{et.handle}, + MESSAGE_TYPE_BO=#{et.messageTypeBo}, + USER_GROUP_BO=#{et.userGroupBo}, + + + + + HANDLE=#{ew.entity.handle} + AND MESSAGE_TYPE_BO=#{ew.entity.messageTypeBo} + AND USER_GROUP_BO=#{ew.entity.userGroupBo} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + + DELETE FROM MESSAGE_TYPE_USER_GROUP + + + + + ${k} = #{cm[${k}]} + + + + + + + + DELETE FROM MESSAGE_TYPE_USER_GROUP + + + + + HANDLE=#{ew.entity.handle} + + AND MESSAGE_TYPE_BO=#{ew.entity.messageTypeBo} + AND USER_GROUP_BO=#{ew.entity.userGroupBo} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + + diff --git a/meapi/src/main/resources/mapper/SfcMapper.xml b/meapi/src/main/resources/mapper/SfcMapper.xml index 208ae7de..6614df35 100644 --- a/meapi/src/main/resources/mapper/SfcMapper.xml +++ b/meapi/src/main/resources/mapper/SfcMapper.xml @@ -632,17 +632,15 @@ - + SELECT IW.DATE_STARTED + FROM SFC S + INNER JOIN SFC_ROUTING SR ON SR.SFC_BO = S.HANDLE + INNER JOIN SFC_ROUTER SRO ON SRO.SFC_ROUTING_BO = SR.HANDLE + INNER JOIN SFC_STEP SS ON SS.SFC_ROUTER_BO = SRO.HANDLE + INNER JOIN SFC_IN_WORK IW ON SS.HANDLE = IW.SFC_STEP_BO INNER JOIN STATUS ST ON ST.HANDLE = S.STATUS_BO AND ST.STATUS ='403' - WHERE RES.HANDLE = #{resrceBO} - ORDER BY IW.DATE_STARTED DESC + WHERE s.HANDLE=#{sfcBO} diff --git a/quality/src/main/java/com/foreverwin/mesnac/quality/service/impl/SelfReportServiceImpl.java b/quality/src/main/java/com/foreverwin/mesnac/quality/service/impl/SelfReportServiceImpl.java index 40ca8a79..38f8365d 100644 --- a/quality/src/main/java/com/foreverwin/mesnac/quality/service/impl/SelfReportServiceImpl.java +++ b/quality/src/main/java/com/foreverwin/mesnac/quality/service/impl/SelfReportServiceImpl.java @@ -82,6 +82,9 @@ public class SelfReportServiceImpl extends ServiceImpl0 ){ + throw new BaseException("不良总数超过产品批次数量"); + } String operationStep = (String)sfcData.get("OPERATION_STEP"); String shopOrder = (String)sfcData.get("SHOP_ORDER"); String item = (String)sfcData.get("ITEM"); diff --git a/quartz/src/main/java/com/foreverwin/mesnac/quartz/job/ProdUnReadySendMsgJob.java b/quartz/src/main/java/com/foreverwin/mesnac/quartz/job/ProdUnReadySendMsgJob.java new file mode 100644 index 00000000..4cbe2193 --- /dev/null +++ b/quartz/src/main/java/com/foreverwin/mesnac/quartz/job/ProdUnReadySendMsgJob.java @@ -0,0 +1,43 @@ +package com.foreverwin.mesnac.quartz.job; + +import com.foreverwin.mesnac.common.service.ProdReadyTaskService; +import com.foreverwin.mesnac.common.util.StringUtil; +import com.foreverwin.modular.core.exception.BaseException; +import org.quartz.DisallowConcurrentExecution; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.quartz.JobExecutionException; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Description TODO + * @Author Philip + * @Since 2021-08-06 + */ +@DisallowConcurrentExecution +public class ProdUnReadySendMsgJob implements Job { + private static final String SITE_UPPERCASE = "SITE"; + private static final String SITE_LOWERCASE = "site"; + + @Autowired + private ProdReadyTaskService prodReadyTaskService; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + //获取站点,若站点为空则抛出异常 + String site = getSite(context); + if (StringUtil.isBlank(site)) { + throw new BaseException("anomaly.quartz.task.not.site", null); + } + + prodReadyTaskService.sendMsgJob(site); + } + + private String getSite(JobExecutionContext context) { + String site = context.getJobDetail().getJobDataMap().getString(SITE_LOWERCASE); + if (StringUtil.isBlank(site)) { + site = context.getJobDetail().getJobDataMap().getString(SITE_UPPERCASE); + } + return site; + } +} From 2694949a212a65fc7c6d0d943de7cf7adb04ee0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=98=89=E4=BC=9F?= <1724121454@qq.com> Date: Sat, 7 Aug 2021 10:55:59 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E8=AE=A1=E5=88=92=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E5=BE=85=E5=8A=9E=E4=BA=8B=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AbnormalPlanController.java | 130 +++++ .../anomaly/mapper/AbnormalPlanMapper.java | 18 + .../mesnac/anomaly/model/AbnormalPlan.java | 329 +++++++++++ .../anomaly/service/AbnormalPlanService.java | 32 ++ .../service/impl/AbnormalBillServiceImpl.java | 27 +- .../service/impl/AbnormalPlanServiceImpl.java | 77 +++ .../service/impl/AnomalyJobServiceImpl.java | 2 +- .../resources/mapper/AbnormalPlanMapper.xml | 530 ++++++++++++++++++ .../mesnac/common/constant/Constants.java | 6 + .../mesnac/common/enums/HandleEnum.java | 8 +- .../handler/UserResourceHandler.java | 54 +- 11 files changed, 1171 insertions(+), 42 deletions(-) create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalPlanController.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/AbnormalPlanMapper.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/AbnormalPlan.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalPlanService.java create mode 100644 anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalPlanServiceImpl.java create mode 100644 anomaly/src/main/resources/mapper/AbnormalPlanMapper.xml diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalPlanController.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalPlanController.java new file mode 100644 index 00000000..b9a683ba --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/AbnormalPlanController.java @@ -0,0 +1,130 @@ +package com.foreverwin.mesnac.anomaly.controller; + +import com.foreverwin.modular.core.util.R; +import com.foreverwin.modular.core.util.FrontPage; +import com.foreverwin.modular.core.util.CommonMethods; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import com.foreverwin.mesnac.anomaly.service.AbnormalPlanService; +import com.foreverwin.mesnac.anomaly.model.AbnormalPlan; +import java.util.List; + +/** + * + * @author zjw + * @since 2021-08-07 + */ +@RestController +@RequestMapping("/Z-ABNORMAL-PLAN") +public class AbnormalPlanController { + + @Autowired + public AbnormalPlanService abnormalPlanService; + + /** + * 根据id查询 + * + * @param id 主键 + * @return + */ + @ResponseBody + @GetMapping("/{id:.+}") + public R getAbnormalPlanById(@PathVariable String id) { + return R.ok( abnormalPlanService.getById(id)); + } + + /** + * 查询所有数据 + * + * @return + */ + @ResponseBody + @GetMapping("") + public R getAbnormalPlanList(AbnormalPlan abnormalPlan){ + List result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(abnormalPlan); + result = abnormalPlanService.list(queryWrapper); + return R.ok(result); + } + + /** + * 分页查询数据 + * + * @param frontPage 分页信息 + * @return + */ + @ResponseBody + @GetMapping("/page") + public R page(FrontPage frontPage, AbnormalPlan abnormalPlan){ + IPage result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(abnormalPlan); + if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) { + //TODO modify global query + queryWrapper.lambda().and(wrapper -> wrapper + .like(AbnormalPlan::getHandle, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getSite, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getAbnormalBillBo, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getStatus, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getWorkCenter, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getAbnormalMethod, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getShopOrder, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getResrce, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getItemBo, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getProcessor, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getClosedUser, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getCreatedUser, frontPage.getGlobalQuery()) + .or().like(AbnormalPlan::getModifiedUser, frontPage.getGlobalQuery()) + ); + } + result = abnormalPlanService.page(frontPage.getPagePlus(), queryWrapper); + return R.ok(result); + } + + /** + * 新增 + * @param abnormalPlan 传递的实体 + * @return null 失败 实体成功 + */ + @PostMapping + public R save(@RequestBody AbnormalPlan abnormalPlan) { + return R.ok(abnormalPlanService.save(abnormalPlan)); + } + + /** + * 修改 + * @param abnormalPlan 传递的实体 + * @return null 失败 实体成功 + */ + @PutMapping + public R updateById(@RequestBody AbnormalPlan abnormalPlan) { + return R.ok(abnormalPlanService.updateById(abnormalPlan)); + } + + /** + * 根据id删除对象 + * @param id 实体ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}") + public R removeById(@PathVariable("id") String id){ + return R.ok(abnormalPlanService.removeById(id)); + } + + /** + * 批量删除对象 + * @param ids 实体集合ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.POST, value = "/delete-batch") + public R removeByIds(List ids){ + return R.ok(abnormalPlanService.removeByIds(ids)); + } +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/AbnormalPlanMapper.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/AbnormalPlanMapper.java new file mode 100644 index 00000000..503ae4d3 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/mapper/AbnormalPlanMapper.java @@ -0,0 +1,18 @@ +package com.foreverwin.mesnac.anomaly.mapper; + +import com.foreverwin.mesnac.anomaly.model.AbnormalPlan; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * Mapper 接口 + *

+ * + * @author zjw + * @since 2021-08-07 + */ +@Repository +public interface AbnormalPlanMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/AbnormalPlan.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/AbnormalPlan.java new file mode 100644 index 00000000..d718d623 --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/model/AbnormalPlan.java @@ -0,0 +1,329 @@ +package com.foreverwin.mesnac.anomaly.model; + +import java.io.Serializable; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableField; +import java.io.Serializable; +import com.baomidou.mybatisplus.annotation.IdType; + +/** + *

+ * + *

+ * + * @author zjw + * @since 2021-08-07 + */ + +@TableName("Z_ABNORMAL_PLAN") + +public class AbnormalPlan extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "HANDLE", type = IdType.INPUT) + private String handle; + /** + * 站点 + */ + @TableField("SITE") + private String site; + /** + * 异常单号 + */ + @TableField("ABNORMAL_BILL_BO") + private String abnormalBillBo; + /** + * 状态 + */ + @TableField("STATUS") + private String status; + /** + * 车间 + */ + @TableField("WORK_CENTER") + private String workCenter; + /** + * 异常方案 + */ + @TableField("ABNORMAL_METHOD") + private String abnormalMethod; + /** + * 工单 + */ + @TableField("SHOP_ORDER") + private String shopOrder; + /** + * 设备 + */ + @TableField("RESRCE") + private String resrce; + /** + * 物料编号 + */ + @TableField("ITEM_BO") + private String itemBo; + /** + * 异常数量 + */ + @TableField("QTY") + private Long qty; + /** + * 处理人 + */ + @TableField("PROCESSOR") + private String processor; + /** + * 处理时间 + */ + @TableField("PROCESS_DATE_TIME") + private LocalDateTime processDateTime; + /** + * 闭环人员 + */ + @TableField("CLOSED_USER") + private String closedUser; + /** + * 闭环时间 + */ + @TableField("CLOSED_DATE_TIME") + private LocalDateTime closedDateTime; + /** + * 创建人 + */ + @TableField("CREATED_USER") + private String createdUser; + /** + * 创建时间 + */ + @TableField("CREATED_DATE_TIME") + private LocalDateTime createdDateTime; + /** + * 修改人 + */ + @TableField("MODIFIED_USER") + private String modifiedUser; + /** + * 修改日期 + */ + @TableField("MODIFIED_DATE_TIME") + private LocalDateTime modifiedDateTime; + + + public String getHandle() { + return handle; + } + + public void setHandle(String handle) { + this.handle = handle; + } + + public String getSite() { + return site; + } + + public void setSite(String site) { + this.site = site; + } + + public String getAbnormalBillBo() { + return abnormalBillBo; + } + + public void setAbnormalBillBo(String abnormalBillBo) { + this.abnormalBillBo = abnormalBillBo; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getWorkCenter() { + return workCenter; + } + + public void setWorkCenter(String workCenter) { + this.workCenter = workCenter; + } + + public String getAbnormalMethod() { + return abnormalMethod; + } + + public void setAbnormalMethod(String abnormalMethod) { + this.abnormalMethod = abnormalMethod; + } + + public String getShopOrder() { + return shopOrder; + } + + public void setShopOrder(String shopOrder) { + this.shopOrder = shopOrder; + } + + public String getResrce() { + return resrce; + } + + public void setResrce(String resrce) { + this.resrce = resrce; + } + + public String getItemBo() { + return itemBo; + } + + public void setItemBo(String itemBo) { + this.itemBo = itemBo; + } + + public Long getQty() { + return qty; + } + + public void setQty(Long qty) { + this.qty = qty; + } + + public String getProcessor() { + return processor; + } + + public void setProcessor(String processor) { + this.processor = processor; + } + + public LocalDateTime getProcessDateTime() { + return processDateTime; + } + + public void setProcessDateTime(LocalDateTime processDateTime) { + this.processDateTime = processDateTime; + } + + public String getClosedUser() { + return closedUser; + } + + public void setClosedUser(String closedUser) { + this.closedUser = closedUser; + } + + public LocalDateTime getClosedDateTime() { + return closedDateTime; + } + + public void setClosedDateTime(LocalDateTime closedDateTime) { + this.closedDateTime = closedDateTime; + } + + public String getCreatedUser() { + return createdUser; + } + + public void setCreatedUser(String createdUser) { + this.createdUser = createdUser; + } + + public LocalDateTime getCreatedDateTime() { + return createdDateTime; + } + + public void setCreatedDateTime(LocalDateTime createdDateTime) { + this.createdDateTime = createdDateTime; + } + + public String getModifiedUser() { + return modifiedUser; + } + + public void setModifiedUser(String modifiedUser) { + this.modifiedUser = modifiedUser; + } + + public LocalDateTime getModifiedDateTime() { + return modifiedDateTime; + } + + public void setModifiedDateTime(LocalDateTime modifiedDateTime) { + this.modifiedDateTime = modifiedDateTime; + } + +public static final String HANDLE = "HANDLE"; + +public static final String SITE = "SITE"; + +public static final String ABNORMAL_BILL_BO = "ABNORMAL_BILL_BO"; + +public static final String STATUS = "STATUS"; + +public static final String WORK_CENTER = "WORK_CENTER"; + +public static final String ABNORMAL_METHOD = "ABNORMAL_METHOD"; + +public static final String SHOP_ORDER = "SHOP_ORDER"; + +public static final String RESRCE = "RESRCE"; + +public static final String ITEM_BO = "ITEM_BO"; + +public static final String QTY = "QTY"; + +public static final String PROCESSOR = "PROCESSOR"; + +public static final String PROCESS_DATE_TIME = "PROCESS_DATE_TIME"; + +public static final String CLOSED_USER = "CLOSED_USER"; + +public static final String CLOSED_DATE_TIME = "CLOSED_DATE_TIME"; + +public static final String CREATED_USER = "CREATED_USER"; + +public static final String CREATED_DATE_TIME = "CREATED_DATE_TIME"; + +public static final String MODIFIED_USER = "MODIFIED_USER"; + +public static final String MODIFIED_DATE_TIME = "MODIFIED_DATE_TIME"; + + + @Override + protected Serializable pkVal() { + return this.handle; + } + + @Override + public String toString() { + return "AbnormalPlan{" + + "handle = " + handle + + ", site = " + site + + ", abnormalBillBo = " + abnormalBillBo + + ", status = " + status + + ", workCenter = " + workCenter + + ", abnormalMethod = " + abnormalMethod + + ", shopOrder = " + shopOrder + + ", resrce = " + resrce + + ", itemBo = " + itemBo + + ", qty = " + qty + + ", processor = " + processor + + ", processDateTime = " + processDateTime + + ", closedUser = " + closedUser + + ", closedDateTime = " + closedDateTime + + ", createdUser = " + createdUser + + ", createdDateTime = " + createdDateTime + + ", modifiedUser = " + modifiedUser + + ", modifiedDateTime = " + modifiedDateTime + + "}"; + } +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalPlanService.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalPlanService.java new file mode 100644 index 00000000..401eff8b --- /dev/null +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/AbnormalPlanService.java @@ -0,0 +1,32 @@ +package com.foreverwin.mesnac.anomaly.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDisposeDto; +import com.foreverwin.mesnac.anomaly.model.AbnormalPlan; +import com.foreverwin.modular.core.util.FrontPage; + +import java.time.LocalDateTime; +import java.util.List; + +/** + *

+ * 服务类 + *

+ * + * @author zjw + * @since 2021-08-07 + */ +public interface AbnormalPlanService extends IService { + + /** + * 分页查询 + * @param frontPage + * @return + */ + IPage selectPage(FrontPage frontPage, AbnormalPlan abnormalPlan); + + List selectList(AbnormalPlan abnormalPlan); + + void saveAbnormalPlan(AbnormalBillDisposeDto abnormalBillDisposeDto, LocalDateTime now); +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java index 8978e5da..f06e58e2 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AbnormalBillServiceImpl.java @@ -142,6 +142,9 @@ public class AbnormalBillServiceImpl extends ServiceImpl selectPage(FrontPage frontPage, AbnormalBill abnormalBill) { @@ -359,7 +362,7 @@ public class AbnormalBillServiceImpl extends ServiceImpl hashMap = new HashMap<>(); @@ -776,7 +785,7 @@ public class AbnormalBillServiceImpl extends ServiceImpl + * 服务实现类 + *

+ * + * @author zjw + * @since 2021-08-07 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class AbnormalPlanServiceImpl extends ServiceImpl implements AbnormalPlanService { + + + @Autowired + private AbnormalPlanMapper abnormalPlanMapper; + + @Override + public IPage selectPage(FrontPage frontPage, AbnormalPlan abnormalPlan) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(abnormalPlan); + return super.page(frontPage.getPagePlus(), queryWrapper); + } + + @Override + public List selectList(AbnormalPlan abnormalPlan) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(abnormalPlan); + return super.list(queryWrapper); + } + + @Override + public void saveAbnormalPlan(AbnormalBillDisposeDto abnormalBillDisposeDto,LocalDateTime now) { + String site = CommonMethods.getSite(); + AbnormalPlan abnormalPlan = new AbnormalPlan(); + String user = CommonMethods.getUser(); + //设置主键 + abnormalPlan.setHandle(HandleEnum.ABNORMAL_PLAN.getHandle(site,abnormalBillDisposeDto.getAbnormalNo())); + abnormalPlan.setSite(site); + abnormalPlan.setAbnormalBillBo(HandleEnum.ABNORMAL_BILL.getHandle(site,abnormalBillDisposeDto.getAbnormalNo())); + abnormalPlan.setStatus(Constants.UNTREATED);//未处理 + abnormalPlan.setWorkCenter(abnormalBillDisposeDto.getWorkCenter()); + abnormalPlan.setAbnormalMethod(abnormalBillDisposeDto.getAbnormalMethod()); + abnormalPlan.setShopOrder(abnormalBillDisposeDto.getShopOrder()); + abnormalPlan.setResrce(abnormalBillDisposeDto.getResrce()); + abnormalPlan.setItemBo(abnormalBillDisposeDto.getItemBo()); + abnormalPlan.setQty(Long.parseLong(abnormalBillDisposeDto.getNcQty())); + //没有处理人和处理时间 +// abnormalPlan.setProcessor(); + abnormalPlan.setClosedUser(user); + abnormalPlan.setClosedDateTime(now); + abnormalPlan.setCreatedUser(user); + abnormalPlan.setCreatedDateTime(now); + abnormalPlan.setModifiedUser(user); + abnormalPlan.setModifiedDateTime(now); + this.saveOrUpdate(abnormalPlan); + } + +} \ No newline at end of file diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AnomalyJobServiceImpl.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AnomalyJobServiceImpl.java index 38e29b7d..72df1bc8 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AnomalyJobServiceImpl.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/AnomalyJobServiceImpl.java @@ -129,7 +129,7 @@ public class AnomalyJobServiceImpl implements AnomalyJobService { activeMQUtil.wechatSendMessage(sendUsers.toString(),abnormalMessage.getContent()); // } messageService.saveOrUpdate(abnormalMessage); - messageService.saveOrUpdate(_abnormalMessage); + // messageService.saveOrUpdate(_abnormalMessage); } } } diff --git a/anomaly/src/main/resources/mapper/AbnormalPlanMapper.xml b/anomaly/src/main/resources/mapper/AbnormalPlanMapper.xml new file mode 100644 index 00000000..40c3bd1b --- /dev/null +++ b/anomaly/src/main/resources/mapper/AbnormalPlanMapper.xml @@ -0,0 +1,530 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + HANDLE, SITE, ABNORMAL_BILL_BO, STATUS, WORK_CENTER, ABNORMAL_METHOD, SHOP_ORDER, RESRCE, ITEM_BO, QTY, PROCESSOR, PROCESS_DATE_TIME, CLOSED_USER, CLOSED_DATE_TIME, CREATED_USER, CREATED_DATE_TIME, MODIFIED_USER, MODIFIED_DATE_TIME + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO Z_ABNORMAL_PLAN + + HANDLE, + SITE, + ABNORMAL_BILL_BO, + STATUS, + WORK_CENTER, + ABNORMAL_METHOD, + SHOP_ORDER, + RESRCE, + ITEM_BO, + QTY, + PROCESSOR, + PROCESS_DATE_TIME, + CLOSED_USER, + CLOSED_DATE_TIME, + CREATED_USER, + CREATED_DATE_TIME, + MODIFIED_USER, + MODIFIED_DATE_TIME, + VALUES + + #{handle}, + #{site}, + #{abnormalBillBo}, + #{status}, + #{workCenter}, + #{abnormalMethod}, + #{shopOrder}, + #{resrce}, + #{itemBo}, + #{qty}, + #{processor}, + #{processDateTime}, + #{closedUser}, + #{closedDateTime}, + #{createdUser}, + #{createdDateTime}, + #{modifiedUser}, + #{modifiedDateTime}, + + + + + INSERT INTO Z_ABNORMAL_PLAN + + + VALUES + + #{handle}, + #{site}, + #{abnormalBillBo}, + #{status}, + #{workCenter}, + #{abnormalMethod}, + #{shopOrder}, + #{resrce}, + #{itemBo}, + #{qty}, + #{processor}, + #{processDateTime}, + #{closedUser}, + #{closedDateTime}, + #{createdUser}, + #{createdDateTime}, + #{modifiedUser}, + #{modifiedDateTime}, + + + + + + UPDATE Z_ABNORMAL_PLAN + SITE=#{et.site}, + ABNORMAL_BILL_BO=#{et.abnormalBillBo}, + STATUS=#{et.status}, + WORK_CENTER=#{et.workCenter}, + ABNORMAL_METHOD=#{et.abnormalMethod}, + SHOP_ORDER=#{et.shopOrder}, + RESRCE=#{et.resrce}, + ITEM_BO=#{et.itemBo}, + QTY=#{et.qty}, + PROCESSOR=#{et.processor}, + PROCESS_DATE_TIME=#{et.processDateTime}, + CLOSED_USER=#{et.closedUser}, + CLOSED_DATE_TIME=#{et.closedDateTime}, + CREATED_USER=#{et.createdUser}, + CREATED_DATE_TIME=#{et.createdDateTime}, + MODIFIED_USER=#{et.modifiedUser}, + MODIFIED_DATE_TIME=#{et.modifiedDateTime}, + WHERE HANDLE=#{et.handle} and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL} + + + + + UPDATE Z_ABNORMAL_PLAN + SITE=#{et.site}, + ABNORMAL_BILL_BO=#{et.abnormalBillBo}, + STATUS=#{et.status}, + WORK_CENTER=#{et.workCenter}, + ABNORMAL_METHOD=#{et.abnormalMethod}, + SHOP_ORDER=#{et.shopOrder}, + RESRCE=#{et.resrce}, + ITEM_BO=#{et.itemBo}, + QTY=#{et.qty}, + PROCESSOR=#{et.processor}, + PROCESS_DATE_TIME=#{et.processDateTime}, + CLOSED_USER=#{et.closedUser}, + CLOSED_DATE_TIME=#{et.closedDateTime}, + CREATED_USER=#{et.createdUser}, + CREATED_DATE_TIME=#{et.createdDateTime}, + MODIFIED_USER=#{et.modifiedUser}, + MODIFIED_DATE_TIME=#{et.modifiedDateTime}, + WHERE HANDLE=#{et.handle} and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL} + + + + + UPDATE Z_ABNORMAL_PLAN + SITE=#{et.site}, + ABNORMAL_BILL_BO=#{et.abnormalBillBo}, + STATUS=#{et.status}, + WORK_CENTER=#{et.workCenter}, + ABNORMAL_METHOD=#{et.abnormalMethod}, + SHOP_ORDER=#{et.shopOrder}, + RESRCE=#{et.resrce}, + ITEM_BO=#{et.itemBo}, + QTY=#{et.qty}, + PROCESSOR=#{et.processor}, + PROCESS_DATE_TIME=#{et.processDateTime}, + CLOSED_USER=#{et.closedUser}, + CLOSED_DATE_TIME=#{et.closedDateTime}, + CREATED_USER=#{et.createdUser}, + CREATED_DATE_TIME=#{et.createdDateTime}, + MODIFIED_USER=#{et.modifiedUser}, + MODIFIED_DATE_TIME=#{et.modifiedDateTime}, + + + + + HANDLE=#{ew.entity.handle} + AND SITE=#{ew.entity.site} + AND ABNORMAL_BILL_BO=#{ew.entity.abnormalBillBo} + AND STATUS=#{ew.entity.status} + AND WORK_CENTER=#{ew.entity.workCenter} + AND ABNORMAL_METHOD=#{ew.entity.abnormalMethod} + AND SHOP_ORDER=#{ew.entity.shopOrder} + AND RESRCE=#{ew.entity.resrce} + AND ITEM_BO=#{ew.entity.itemBo} + AND QTY=#{ew.entity.qty} + AND PROCESSOR=#{ew.entity.processor} + AND PROCESS_DATE_TIME=#{ew.entity.processDateTime} + AND CLOSED_USER=#{ew.entity.closedUser} + AND CLOSED_DATE_TIME=#{ew.entity.closedDateTime} + AND CREATED_USER=#{ew.entity.createdUser} + AND CREATED_DATE_TIME=#{ew.entity.createdDateTime} + AND MODIFIED_USER=#{ew.entity.modifiedUser} + AND MODIFIED_DATE_TIME=#{ew.entity.modifiedDateTime} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + DELETE FROM Z_ABNORMAL_PLAN WHERE HANDLE=#{handle} + + + + DELETE FROM Z_ABNORMAL_PLAN + + + + + ${k} = #{cm[${k}]} + + + + + + + + DELETE FROM Z_ABNORMAL_PLAN + + + + + HANDLE=#{ew.entity.handle} + + AND SITE=#{ew.entity.site} + AND ABNORMAL_BILL_BO=#{ew.entity.abnormalBillBo} + AND STATUS=#{ew.entity.status} + AND WORK_CENTER=#{ew.entity.workCenter} + AND ABNORMAL_METHOD=#{ew.entity.abnormalMethod} + AND SHOP_ORDER=#{ew.entity.shopOrder} + AND RESRCE=#{ew.entity.resrce} + AND ITEM_BO=#{ew.entity.itemBo} + AND QTY=#{ew.entity.qty} + AND PROCESSOR=#{ew.entity.processor} + AND PROCESS_DATE_TIME=#{ew.entity.processDateTime} + AND CLOSED_USER=#{ew.entity.closedUser} + AND CLOSED_DATE_TIME=#{ew.entity.closedDateTime} + AND CREATED_USER=#{ew.entity.createdUser} + AND CREATED_DATE_TIME=#{ew.entity.createdDateTime} + AND MODIFIED_USER=#{ew.entity.modifiedUser} + AND MODIFIED_DATE_TIME=#{ew.entity.modifiedDateTime} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + DELETE FROM Z_ABNORMAL_PLAN WHERE HANDLE IN ( + #{item} + ) + + + + diff --git a/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java b/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java index 31e2ec81..a31535a0 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/constant/Constants.java @@ -167,5 +167,11 @@ public interface Constants { String TOOL_STATUS_Y = "Y"; String TOOL_STATUS_N = "N"; + /** + * 异常计划表的状态 + */ + String UNTREATED = "UNTREATED"; //未处理 + String PROCESSED = "PROCESSED"; //已处理 + } diff --git a/common/src/main/java/com/foreverwin/mesnac/common/enums/HandleEnum.java b/common/src/main/java/com/foreverwin/mesnac/common/enums/HandleEnum.java index 43d119fc..7a72e34a 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/enums/HandleEnum.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/enums/HandleEnum.java @@ -106,10 +106,10 @@ public enum HandleEnum { RESOURCE_INSPECT_TASK_PARAM("ResourceInspectTaskParamBo","ResourceInspectTaskParamBo:{0},{1}"), /**异常单**/ - Z_ABNORMAL_BILL("AbnormalBillBo","AbnormalBillBo:{0},{1}"), + ABNORMAL_BILL("AbnormalBillBo","AbnormalBillBo:{0},{1}"), /**异常单详细表**/ - Z_ABNORMAL_BILL_DISPOSE("AbnormalBillDisposeBo","AbnormalBillDisposeBo:{0},{1}"), + ABNORMAL_BILL_DISPOSE("AbnormalBillDisposeBo","AbnormalBillDisposeBo:{0},{1}"), /**不良代码**/ NC_CODE("NCCodeBO","NCCodeBO:{0},{1}"), @@ -140,7 +140,9 @@ public enum HandleEnum { USER_RESOURCE("UserResourceBo","UserResourceBo:{0},{1},{2}"), - SFC_SCRAP("SfcScrapBo","SfcScrapBo:{0},{1}"); + SFC_SCRAP("SfcScrapBo","SfcScrapBo:{0},{1}"), + + ABNORMAL_PLAN("AbnormalPlanBo","AbnormalPlanBo:{0},{1}"); private String prefix; private String pattern; diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/UserResourceHandler.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/UserResourceHandler.java index 7e52648c..65043a50 100644 --- a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/UserResourceHandler.java +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/UserResourceHandler.java @@ -15,7 +15,6 @@ import com.foreverwin.mesnac.meapi.mapper.NwaUserMapper; import com.foreverwin.mesnac.meapi.mapper.ResrceMapper; import com.foreverwin.mesnac.meapi.model.NwaUser; import com.foreverwin.mesnac.meapi.model.Resrce; -import com.foreverwin.modular.core.exception.BusinessException; import com.foreverwin.modular.core.util.CommonMethods; import com.foreverwin.modular.core.util.I18nUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -58,10 +57,10 @@ public class UserResourceHandler extends BaseHandler { buffer.append(e.getMessage() + "\n"); } - if (buffer.length() > 0) { - buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); - throw BusinessException.build(buffer.toString()); - } +// if (buffer.length() > 0) { +// buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); +// throw BusinessException.build(buffer.toString()); +// } buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); return buffer.toString(); @@ -126,15 +125,13 @@ public class UserResourceHandler extends BaseHandler { //站点 jsonObject.put("site", site); //不管用户选啥模式,都是更新和插入 - resultMessage = this.updateAndInsert(userResource,index); - + resultMessage = updateAndInsert(userResource,index); if (resultMessage != null) { params[2] = resultMessage; failedNumber[0]++; buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.update.fail", params) + "\n"); return 0; } - userResourceService.saveOrUpdate(userResource); return 1; } return 0; @@ -144,30 +141,29 @@ public class UserResourceHandler extends BaseHandler { public String[] getHeader() { return null; } - - String updateAndInsert(UserResource userResource,Long index){ - //判断资源是否存在 - Resrce resrce = resrceMapper.selectById(userResource.getResourceBo()); - - if(resrce == null){ - return "第"+index+"行的资源不存在"; - } - //设置资源描述 - userResource.setResrceDescription(resrce.getDescription()); - //设置员工描述 - NwaUser nwaUser = nwaUserMapper.selectById(HandleEnum.USER.getHandle(userResource.getSite(), userResource.getUserId())); - if(nwaUser != null){ - userResource.setUserDescription(nwaUser.getFullName()); - }else if("true".equals(userResource.getTemporaryUser())){ - //不做任何操作 - }else{ - return "第"+index+"行的用户不存在,必须为临时员工"; - } - return null; - } }; + } + String updateAndInsert(UserResource userResource,Long index){ + //判断资源是否存在 + Resrce resrce = resrceMapper.selectById(userResource.getResourceBo()); + if(resrce == null){ + return "第"+index+"行的资源不存在"; + } + //设置资源描述 + userResource.setResrceDescription(resrce.getDescription()); + //设置员工描述 + NwaUser nwaUser = nwaUserMapper.selectById(HandleEnum.USER.getHandle(userResource.getSite(), userResource.getUserId())); + if(nwaUser != null){ + userResource.setUserDescription(nwaUser.getFullName()); + }else if("true".equals(userResource.getTemporaryUser())){ + //不做任何操作 + }else{ + return "第"+index+"行的用户不存在,必须为临时员工"; + } + userResourceService.saveOrUpdate(userResource); + return null; } } From a35da8e733a2bc04d80d6a6fe85ec10bb498715e Mon Sep 17 00:00:00 2001 From: philip <244793088@qq.com> Date: Sat, 7 Aug 2021 14:00:37 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BA=A7=E5=89=8D=E5=87=86=E5=A4=87?= =?UTF-8?q?=E5=8F=91=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ProdReadyTaskServiceImpl.java | 130 ++++++++++++------ .../service/PodTemplateService.java | 4 +- .../service/impl/PodTemplateServiceImpl.java | 84 ++++++----- 3 files changed, 141 insertions(+), 77 deletions(-) diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/ProdReadyTaskServiceImpl.java b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/ProdReadyTaskServiceImpl.java index 363d8385..a5602c51 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/ProdReadyTaskServiceImpl.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/ProdReadyTaskServiceImpl.java @@ -19,11 +19,14 @@ import com.foreverwin.mesnac.common.model.PrintLog; import com.foreverwin.mesnac.common.model.ProdReadyTask; import com.foreverwin.mesnac.common.model.ProdReadyTaskDetail; import com.foreverwin.mesnac.common.service.*; +import com.foreverwin.mesnac.common.util.ActiveMQUtil; import com.foreverwin.mesnac.common.util.DateUtil; import com.foreverwin.mesnac.common.util.StringUtil; import com.foreverwin.mesnac.meapi.dto.BomComponentDto; +import com.foreverwin.mesnac.meapi.mapper.WorkCenterMapper; import com.foreverwin.mesnac.meapi.model.*; import com.foreverwin.mesnac.meapi.service.*; +import com.foreverwin.mesnac.meapi.util.StringUtils; import com.foreverwin.modular.core.exception.BaseException; import com.foreverwin.modular.core.exception.BusinessException; import com.foreverwin.modular.core.util.CommonMethods; @@ -75,21 +78,32 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl list = list(lambdaQueryWrapper); - if (list.size() >0) { + if (list.size() > 0) { ProdReadyTask prodReadyTask = list.get(0); if (prodReadyTask.getStatus().equals(STATUS_CANCEL)) { throw new BaseException("产前准备任务任务已取消"); @@ -285,17 +299,17 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl map=new HashMap<>(); - map.put("RESOURCE",sfcdispatch.getResrce()); - map.put("RESOURCE_TYPE",sfcdispatch.getResourceType()); - map.put("RESULT",jsonObject.get("RESULT")); - map.put("MESSAGE",jsonObject.get("MESSAGE")); + Map map = new HashMap<>(); + map.put("RESOURCE", sfcdispatch.getResrce()); + map.put("RESOURCE_TYPE", sfcdispatch.getResourceType()); + map.put("RESULT", jsonObject.get("RESULT")); + map.put("MESSAGE", jsonObject.get("MESSAGE")); returnMap.add(map); } return returnMap; @@ -429,21 +443,20 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl prodReadyTasks=prodReadyTaskMapper.getUnreadyTasks(site,now,endTime); - for(ProdReadyTask prodReadyTask : prodReadyTasks){ + List prodReadyTasks = prodReadyTaskMapper.getUnreadyTasks(site, now, endTime); + for (ProdReadyTask prodReadyTask : prodReadyTasks) { QueryWrapper messageQueryWrapper = new QueryWrapper<>(); - messageQueryWrapper.eq(Message.OBJECT_BO,prodReadyTask.getHandle()); + messageQueryWrapper.eq(Message.OBJECT_BO, prodReadyTask.getHandle()); List list = messageService.list(messageQueryWrapper); - if (!list.isEmpty()){ + if (!list.isEmpty()) { continue; } LambdaQueryWrapper lambdaQuery = new LambdaQueryWrapper<>(); lambdaQuery.eq(ProdReadyTaskDetail::getProdReadyTaskBo, prodReadyTask.getHandle()); List readyTaskDetails = prodReadyTaskDetailService.list(lambdaQuery); - for (ProdReadyTaskDetail prodReadyTaskDetail:readyTaskDetails){ - if (prodReadyTaskDetail.getInspectionItem().equals(P01)){ + for (ProdReadyTaskDetail prodReadyTaskDetail : readyTaskDetails) { + if (prodReadyTaskDetail.getInspectionItem().equals(P01)) { Message message = new Message(); String uuid = UUID.randomUUID().toString(); message.setHandle(uuid); @@ -453,56 +466,85 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl queryWrapper=new QueryWrapper<>(); - queryWrapper.eq(MessageTypeUserGroup.MESSAGE_TYPE_BO, new MessageTypeBOHandle(site,MESSAGE_TYPE_WLZB).getValue()); - queryWrapper.eq(MessageTypeUserGroup.USER_GROUP_BO,new UserGroupBOHandle(site,userGroup).getValue()); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq(MessageTypeUserGroup.MESSAGE_TYPE_BO, new MessageTypeBOHandle(site, MESSAGE_TYPE_WLZB).getValue()); + queryWrapper.eq(MessageTypeUserGroup.USER_GROUP_BO, new UserGroupBOHandle(site, userGroup).getValue()); List messageTypeUserGroupList = messageTypeUserGroupService.list(queryWrapper); - if (messageTypeUserGroupList.isEmpty()){ + if (messageTypeUserGroupList.isEmpty()) { continue; } message.setSendUserGroup(userGroup); - message.setSendUser(""); - message.setContent(""); - message.setUpUserGroup(""); - message.setUpUser(""); - message.setUpMessageType(""); - message.setUpDateTime(LocalDateTime.now()); - message.setGrade(0.0D); - message.setResponseDateTime(LocalDateTime.now()); - message.setNode(""); - message.setStatus(""); - message.setCreatedUser(""); + message.setSendUser("JOB"); + String sendMessage = this.formatMessage(prodReadyTask, MESSAGE_TYPE_WLZB, site); + message.setContent(sendMessage); + message.setUpUserGroup(null); + message.setUpUser(null); + message.setUpMessageType(null); + message.setUpDateTime(null); + message.setGrade(null); + message.setResponseDateTime(null); + message.setNode(null); + message.setStatus(Constants.STATUS_Y); + message.setCreatedUser("JOB"); message.setCreatedDateTime(LocalDateTime.now()); - message.setModifiedUser(""); + message.setModifiedUser("JOB"); message.setModifiedDateTime(LocalDateTime.now()); - - -/* - List nwaUsers = nwaUserService.checkUserGroup(site,abnormalMessage.getSendUserGroup()); + List nwaUsers = nwaUserService.checkUserGroup(site, userGroup); StringBuilder sendUsers = new StringBuilder(); for (int i = 0; i < nwaUsers.size(); i++) { - if(i == (nwaUsers.size() - 1)){ + if (i == (nwaUsers.size() - 1)) { sendUsers.append(nwaUsers.get(i)); - }else{ + } else { sendUsers.append(nwaUsers.get(i)).append("|"); } } - activeMQUtil.wechatSendMessage(sendUsers.toString(),abnormalMessage.getContent()); -// } - messageService.saveOrUpdate(abnormalMessage);*/ - + messageService.save(message); + activeMQUtil.wechatSendMessage(sendUsers.toString(),sendMessage); } } } } + public String formatMessage(ProdReadyTask prodReadyTask, String messageType, String site) { + //找到消息内容 + String locale = LocaleContextHolder.getLocale().getLanguage(); + MessageType messageTypeEntity = new MessageType(); + messageTypeEntity.setSite(site); + messageTypeEntity.setMessageType(messageType); + QueryWrapper messageTypeQueryWrapper = new QueryWrapper(); + messageTypeQueryWrapper.setEntity(messageTypeEntity); + MessageType sendMessageType = messageTypeService.getOne(messageTypeQueryWrapper); + if (sendMessageType == null) { + throw new BaseException("异常提报时找不到要发送的消息类型"); + } + //格式化消息 + String body = sendMessageType.getBody(); + //替换消息类型中的参数 + Map messageMap = new HashMap<>(); + //根据车间找到对应车间的描述 + WorkCenter workCenter = workCenterMapper.findWorkCenterDescriptionByWorkCenter(site, prodReadyTask.getWorkCenter(), locale); + //根据资源找到对应的产线的描述 + Resrce byResrce = resrceService.findByResrce(prodReadyTask.getResrce()); + Item selectCurrent = itemService.selectCurrent(site, prodReadyTask.getItem()); + //项目号 + String item = selectCurrent.getItem() + "/" + selectCurrent.getDescription(); + messageMap.put("WORKCENTER", workCenter.getDescription()); + messageMap.put("RESOURCE", byResrce + "/" + byResrce.getDescription()); + messageMap.put("ITEM", item); + messageMap.put("SHOPORDER", prodReadyTask.getShopOrder()); + messageMap.put("SFC", prodReadyTask.getSfc()); + + //格式化之后的消息 + return StringUtils.format(body, messageMap); + } + public JSONObject sendToDnc(String item, String resource, String resourceType) { String site = CommonMethods.getSite(); - String queue="resource.check.process"; - JSONObject messageObject=new JSONObject(); + String queue = "resource.check.process"; + JSONObject messageObject = new JSONObject(); String tranid = UUID.randomUUID().toString(); messageObject.put("TRANID", tranid); String dateTime = DateUtil.formatDate(new Date()); diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/PodTemplateService.java b/production/src/main/java/com/foreverwin/mesnac/production/service/PodTemplateService.java index 29c591cd..1a41a4a6 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/service/PodTemplateService.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/PodTemplateService.java @@ -4,7 +4,7 @@ import com.foreverwin.mesnac.meapi.dto.SfcDto; import com.foreverwin.mesnac.meapi.dto.WorkCenterDto; import com.foreverwin.mesnac.meapi.model.Sfc; -import java.math.BigDecimal; +import java.util.List; import java.util.Map; public interface PodTemplateService { @@ -18,7 +18,7 @@ public interface PodTemplateService { void sfcComplete(Map map); - void sendErp(String sfc, String stepId, BigDecimal qty, BigDecimal scrapQty); + void sendErp(List> mapList); SfcDto getInfoBySfc(Sfc sfc); diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java index c2f2dfa3..3afe0f08 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java @@ -46,7 +46,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.math.RoundingMode; import java.rmi.RemoteException; +import java.time.Duration; import java.time.LocalDateTime; import java.util.*; @@ -232,8 +234,8 @@ public class PodTemplateServiceImpl implements PodTemplateService { public void sfcComplete(Map map) { List sfcDtoList = (List) map.get("sfcDtoList"); ObjectMapper mapper = new ObjectMapper(); - sfcDtoList = mapper.convertValue(sfcDtoList, new TypeReference>() { - }); + sfcDtoList = mapper.convertValue(sfcDtoList, new TypeReference>() {}); + List> postMapList=new ArrayList<>(); String resrce = (String) map.get("resrce"); if (sfcDtoList == null || sfcDtoList.size() < 1) { throw new BaseException("作业列表不能为空"); @@ -242,6 +244,7 @@ public class PodTemplateServiceImpl implements PodTemplateService { throw new BaseException("资源不能为空"); } for (SfcDto sfcDto:sfcDtoList){ + Map postMap=new HashMap<>(); String site = CommonMethods.getSite(); String operation = sfcDto.getOperation(); Operation currentRevisionRef = operationService.getCurrentRevisionRef(site, operation); @@ -298,15 +301,26 @@ public class PodTemplateServiceImpl implements PodTemplateService { paramMap.put("CATEGORY",Constants.INSPECTION_TYPE_S); inspectionTaskService.createTask(paramMap); } + //计算工时 + LocalDateTime startTime = sfcService.getSfcStartTime(HandleEnum.SFC.getHandle(site, sfc)); + long workHourSeconds = Duration.between(startTime, LocalDateTime.now()).getSeconds(); + BigDecimal workHour = new BigDecimal(workHourSeconds).divide(BigDecimal.valueOf(3600), 2, RoundingMode.HALF_UP); + postMap.put("sfc",sfc); + postMap.put("stepId",stepId); + postMap.put("qty",qty); + postMap.put("scrapQty",BigDecimal.ZERO); + postMap.put("workHour",workHour); + postMapList.add(postMap); sfcCrossService.completeAction(site, currentRevisionRef.getHandle(), resrce, sfcServiceById.getHandle(), qty); //更改派工单状态 sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.COMPLETE.getCode()); - //报工 - //sendErp(sfc, stepId, qty,BigDecimal.ZERO); + } catch (Exception e) { ExceptionUtil.throwException(e); } } + //报工 + //sendErp(postMapList); } public void materialConsumption(String site, String operation, String sfcBo, String stepId, String resource) { @@ -399,40 +413,48 @@ public class PodTemplateServiceImpl implements PodTemplateService { } @Override - public void sendErp(String sfc, String stepId, BigDecimal qty, BigDecimal scrapQty) { - Sfc sfcServiceById = sfcService.getById(HandleEnum.SFC.getHandle(CommonMethods.getSite(),sfc)); - String shopOrderBo = sfcServiceById.getShopOrderBo(); - String shopOrder = StringUtil.trimHandle(shopOrderBo); + public void sendErp(List> postMapList) { //请求参数 ZprodordconfStruIn[] ins = new ZprodordconfStruIn[1]; + for (int i=0;i map = postMapList.get(i); + String sfc = (String)map.get("sfc"); + Sfc sfcServiceById = sfcService.getById(HandleEnum.SFC.getHandle(CommonMethods.getSite(),sfc)); + String shopOrderBo = sfcServiceById.getShopOrderBo(); + String shopOrder = StringUtil.trimHandle(shopOrderBo); + String stepId = (String)map.get("stepId"); + BigDecimal qty = (BigDecimal) map.get("qty"); + BigDecimal scrapQty = (BigDecimal)map.get("scrapQty"); + BigDecimal workHour = (BigDecimal)map.get("workHour"); + ZprodordconfStruIn struIn = new ZprodordconfStruIn(); + //生产订单 + struIn.setAufnr(shopOrder); + //步骤标示 + struIn.setVornr(stepId); + struIn.setAueru("1"); + //良品数量 + struIn.setLmnga(qty); + //报废数量 + struIn.setXmnga(scrapQty); + //机器工时 + struIn.setIsm01(workHour); + //人工工时 + struIn.setIsm02(workHour); + struIn.setIsm03(BigDecimal.ZERO); + struIn.setIsm04(BigDecimal.ZERO); + struIn.setIsm05(BigDecimal.ZERO); + struIn.setIsm06(BigDecimal.ZERO); + ins[i] = struIn; + } - ZprodordconfStruIn struIn = new ZprodordconfStruIn(); - //生产订单 - struIn.setAufnr(shopOrder); - //步骤标示 - struIn.setVornr(stepId); - struIn.setAueru("1"); - //良品数量 - struIn.setLmnga(qty); - //报废数量 - struIn.setXmnga(scrapQty); - //机器工时 - struIn.setIsm01(BigDecimal.ZERO); - //人工工时 - struIn.setIsm02(BigDecimal.ZERO); - struIn.setIsm03(BigDecimal.ZERO); - struIn.setIsm04(BigDecimal.ZERO); - struIn.setIsm05(BigDecimal.ZERO); - struIn.setIsm06(BigDecimal.ZERO); - ins[0] = struIn; TableOfZprodordconfStruInHolder inHolder = new TableOfZprodordconfStruInHolder(ins); //返回对象 ZprodordconfStruOut[] outs = new ZprodordconfStruOut[1]; ZprodordconfStruOut struOut = new ZprodordconfStruOut(); - struOut.setAufnr(shopOrder); - struOut.setVornr(stepId); + struOut.setAufnr(""); + struOut.setVornr(""); struOut.setAueru("1"); struOut.setLmnga(new BigDecimal(1)); struOut.setRet(""); @@ -455,10 +477,10 @@ public class PodTemplateServiceImpl implements PodTemplateService { log.setHandle(UUID.randomUUID().toString()); log.setSite(CommonMethods.getSite()); log.setIntegrationType(IntegrationTypeConstant.ROUTER); - log.setCategory("SEND"); + log.setCategory("REQUEST"); log.setIntegrationWay("ERP"); log.setIntegrationMethod("erpWebService.zmesProdordconf"); - log.setParam(struIn.toString()); + log.setParam(ins.toString()); log.setStatus(outHolder.value[1].getRet()); log.setResultMessage(outHolder.value[1].getMsg()); log.setTransactionId(""); From 71dd346a7505257bf68a24bc09746283730fddc3 Mon Sep 17 00:00:00 2001 From: philip <244793088@qq.com> Date: Sat, 7 Aug 2021 15:14:10 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E4=B8=93=E6=A3=80=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/service/InspectionTaskService.java | 2 + .../impl/InspectionTaskServiceImpl.java | 43 +++++++++++++++++++ .../service/impl/PodTemplateServiceImpl.java | 13 ++++++ 3 files changed, 58 insertions(+) diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/InspectionTaskService.java b/common/src/main/java/com/foreverwin/mesnac/common/service/InspectionTaskService.java index ac7a6aa3..2dbcb9cf 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/service/InspectionTaskService.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/service/InspectionTaskService.java @@ -34,4 +34,6 @@ public interface InspectionTaskService extends IService { Map createTask(Map paramMap); InspectionTask isCreateTask(String site, String category, String sfc, String operation, String stepId); + + void createCompleteTask(Map paramMap); } \ No newline at end of file diff --git a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionTaskServiceImpl.java b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionTaskServiceImpl.java index 38c71ce0..a5cb53f9 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionTaskServiceImpl.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/service/impl/InspectionTaskServiceImpl.java @@ -260,5 +260,48 @@ public class InspectionTaskServiceImpl extends ServiceImpl paramMap) { + String site = CommonMethods.getSite(); + String category = (String) paramMap.get("CATEGORY"); + String sfc = (String) paramMap.get("SFC"); + String shopOrder = (String) paramMap.get("SHOP_ORDER"); + String operation = (String) paramMap.get("OPERATION"); + String stepId = (String) paramMap.get("STEP_ID"); + String itemNumber = (String) paramMap.get("ITEM_NUMBER"); + + String handle = "InspectionTaskBO:" + site + "," + UUID.randomUUID().toString(); + Date date = new Date(System.currentTimeMillis()); + SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMddHHmmss"); + String taskNo = ""; + if (StringUtil.isBlank(itemNumber)) { + taskNo = "P_" + dateFormat1.format(date); + } else { + taskNo = "P_" + itemNumber + "_" + dateFormat1.format(date); + } + InspectionTask task = new InspectionTask(); + task.setHandle(handle); + task.setSite(site); + task.setCategory(category); + task.setTaskNo(taskNo); + task.setStatus(Constants.INSPECTION_TASK_STATUS_COMPLETE); + task.setResrce(Constants.RSESULT_OK); + task.setDescription("专检检验任务"); + task.setInspectionItemBo( null); + task.setShopOrder(shopOrder); + task.setWorkCenter((String) paramMap.get("WORK_CENTER")); + task.setSfc(sfc); + task.setOperation(operation); + task.setStepId(stepId); + task.setResrce((String) paramMap.get("RESRCE")); + task.setCreateUser(CommonMethods.getUser()); + task.setCreatedDateTime(LocalDateTime.now()); + task.setModifyUser(CommonMethods.getUser()); + task.setModifiedDateTime(LocalDateTime.now()); + task.setSfcDispatchBo((String) paramMap.get("SFC_DISPATCH_DETAIL_BO")); + task.setSfc(sfc); + save(task); + } + } \ No newline at end of file diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java index 3afe0f08..8a6db676 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/PodTemplateServiceImpl.java @@ -219,6 +219,16 @@ public class PodTemplateServiceImpl implements PodTemplateService { throw new BaseException("互检任务不合格,不能开始请检查"); } } + //是否完成专检 + QueryWrapper queryWrapper=new QueryWrapper<>(); + queryWrapper.eq(InspectionTask.CATEGORY,Constants.INSPECTION_TYPE_P); + queryWrapper.eq(InspectionTask.SFC,sfc); + queryWrapper.ne(InspectionTask.STATUS,Constants.INSPECTION_TASK_STATUS_COMPLETE); + queryWrapper.ne(InspectionTask.RESULT,Constants.RSESULT_OK); + List list = inspectionTaskService.list(queryWrapper); + if (!list.isEmpty()) { + throw new BaseException("请完成专检检验任务"); + } try { sfcCrossService.startAction(site, currentRevisionRef.getHandle(), resrce, sfcServiceById.getHandle(), qty); } catch (Exception e) { @@ -294,6 +304,9 @@ public class PodTemplateServiceImpl implements PodTemplateService { if (inspectionItemDetails.size() > 0 && inspectionItemDetails.get(0) != null) { paramMap.put("CATEGORY",Constants.INSPECTION_TYPE_P); inspectionTaskService.createTask(paramMap); + }else { + paramMap.put("CATEGORY",Constants.INSPECTION_TYPE_P); + inspectionTaskService.createCompleteTask(paramMap); } //首件创建 inspectionItemDetails = inspectionItemService.selectQualityInspection(sfc,operation, stepId, Constants.INSPECTION_TYPE_S); From 7f20a2229b46f3badb19984aa0972ce3fbdd39ff Mon Sep 17 00:00:00 2001 From: Leon <3066758958@qq.com> Date: Sun, 8 Aug 2021 20:18:32 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E8=AE=A1=E5=88=92=E6=B4=BE=E5=B7=A5+?= =?UTF-8?q?=E7=89=A9=E6=96=99=E5=8A=9F=E8=83=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mesnac/common/dto/SfcDispatchDto.java | 11 +- .../src/main/resources/application-local.yml | 30 +++- .../controller/CallItemController.java | 19 ++- .../controller/SfcDispatchController.java | 86 +++++----- .../mesnac/dispatch/dto/IssueItemDto.java | 9 + .../dispatch/mapper/CallItemMapper.java | 2 +- .../dispatch/mapper/SfcDispatchMapper.java | 4 +- .../mesnac/dispatch/model/CallItem.java | 30 ++++ .../dispatch/model/ShopOrderRelease.java | 9 - .../dispatch/service/CallItemService.java | 19 ++- .../dispatch/service/ItemBatchService.java | 3 + .../dispatch/service/SfcDispatchService.java | 8 +- .../service/impl/CallItemServiceImpl.java | 155 ++++++++++++++++-- .../service/impl/IssueItemServiceImpl.java | 20 ++- .../service/impl/ItemBatchServiceImpl.java | 14 +- .../service/impl/SfcDispatchServiceImpl.java | 20 ++- .../main/resources/mapper/CallItemMapper.xml | 37 +++-- .../resources/mapper/SfcDispatchMapper.xml | 3 +- .../service/impl/InterfaceServiceImpl.java | 27 ++- .../meapi/controller/ResrceController.java | 2 +- .../main/resources/mapper/ResrceMapper.xml | 3 +- 21 files changed, 390 insertions(+), 121 deletions(-) diff --git a/common/src/main/java/com/foreverwin/mesnac/common/dto/SfcDispatchDto.java b/common/src/main/java/com/foreverwin/mesnac/common/dto/SfcDispatchDto.java index 198779cf..42d221a8 100644 --- a/common/src/main/java/com/foreverwin/mesnac/common/dto/SfcDispatchDto.java +++ b/common/src/main/java/com/foreverwin/mesnac/common/dto/SfcDispatchDto.java @@ -131,7 +131,7 @@ public class SfcDispatchDto implements Serializable{ /** * 派工备注 */ - @ExcelColumn("备注") + @ExcelColumn("备注信息") private String remark; /** * 前置工序 @@ -174,7 +174,6 @@ public class SfcDispatchDto implements Serializable{ private String componentDescription; private String isCompleted; private BigDecimal completedQty; - private String userName; private String resourceWorkCenter; private String status; @@ -578,14 +577,6 @@ public class SfcDispatchDto implements Serializable{ this.completedQty = completedQty; } - public String getUserName() { - return userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - public String getResourceWorkCenter() { return resourceWorkCenter; } diff --git a/console/src/main/resources/application-local.yml b/console/src/main/resources/application-local.yml index 02dbcc6f..8c046671 100644 --- a/console/src/main/resources/application-local.yml +++ b/console/src/main/resources/application-local.yml @@ -1,6 +1,7 @@ #Spring spring: datasource: + hikari: dynamic: primary: wip #设置默认的数据源或者数据源组,默认值即为master datasource: @@ -9,8 +10,35 @@ spring: username: wip password: wip driver-class-name: oracle.jdbc.OracleDriver + druid: + filters: stat,wall,log4j2 + initial-size: 5 + max-active: 50 + min-idle: 5 + max-wait: 60000 + validation-query: SELECT 'x' FROM DUAL + test-on-borrow: true + test-on-return: true + test-while-idle: true + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + remove-abandoned: true + remove-abandoned-timeout: 1800 + log-abandoned: true + web-stat-filter: + enabled: true + url-pattern: /* + exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*' + stat-view-servlet: + enabled: true + url-pattern: /druid/* + reset-enable: false + stat: + log-slow-sql: true + merge-sql: true + slow-sql-millis: 100 activemq: - enabled: true + enabled: false brokerUrl: tcp://121.36.58.109:61616?wireFormat.maxInactivityDuration=0 password: admin user: admin diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java index df56abf3..4b9a89e7 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/CallItemController.java @@ -147,7 +147,7 @@ public class CallItemController { @ResponseBody @PostMapping("/cancelCallItem") - public R cancelCallItem(@RequestBody List callItemNoList) { + public R cancelCallItem(@RequestBody List callItemNoList) { try { String site = CommonMethods.getSite(); String user = CommonMethods.getUser(); @@ -162,6 +162,23 @@ public class CallItemController { return R.ok("取消叫料成功"); } + @ResponseBody + @PostMapping("/refreshCallItem") + public R refreshCallItem(@RequestBody List callItemList) { + try { + String site = CommonMethods.getSite(); + String user = CommonMethods.getUser(); + if (callItemList == null || callItemList.size() <= 0) { + throw BusinessException.build("请至少选择一笔记录"); + } + callItemService.refreshCallItem(site, user, callItemList); + } catch (Exception e) { + return R.failed(e.getMessage()); + } + + return R.ok("刷新叫料明细成功"); + } + @ResponseBody @PostMapping("/refreshRequiredTime") public R refreshRequiredTime(@RequestBody List callItemNoList) { diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/SfcDispatchController.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/SfcDispatchController.java index f4a3cdfa..cc086aec 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/SfcDispatchController.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/controller/SfcDispatchController.java @@ -72,38 +72,38 @@ public class SfcDispatchController { public R getSfcDispatch(String workCenter, String dispatchStatus, String item, String itemNumber, String workOrder, String shopOrder, String resrce, String resourceType, String operation, String sfc, String component, String componentDescription, String turnOperation, String isDispatch, String startFromDate_S, String startToDate_S, String completeFromDate_S, String completeToDate_S) { - List list; + List list; try { - ShopOrderRelease shopOrderRelease = new ShopOrderRelease(); - shopOrderRelease.setSite(CommonMethods.getSite()); - shopOrderRelease.setWorkCenter(workCenter); - shopOrderRelease.setDispatchStatus(dispatchStatus); - shopOrderRelease.setItem(item); - shopOrderRelease.setItemNumber(itemNumber); - shopOrderRelease.setWorkOrder(workOrder); - shopOrderRelease.setShopOrder(shopOrder); - shopOrderRelease.setResrce(resrce); - shopOrderRelease.setResourceType(resourceType); - shopOrderRelease.setOperation(operation); - shopOrderRelease.setSfc(sfc); - shopOrderRelease.setComponent(component); - shopOrderRelease.setComponentDescription(componentDescription); - shopOrderRelease.setTurnOperation(turnOperation); - shopOrderRelease.setIsDispatch(isDispatch); + SfcDispatchDto sfcDispatchDto = new SfcDispatchDto(); + sfcDispatchDto.setSite(CommonMethods.getSite()); + sfcDispatchDto.setWorkCenter(workCenter); + sfcDispatchDto.setDispatchStatus(dispatchStatus); + sfcDispatchDto.setItem(item); + sfcDispatchDto.setItemNumber(itemNumber); + sfcDispatchDto.setWorkOrder(workOrder); + sfcDispatchDto.setShopOrder(shopOrder); + sfcDispatchDto.setResrce(resrce); + sfcDispatchDto.setResourceType(resourceType); + sfcDispatchDto.setOperation(operation); + sfcDispatchDto.setSfc(sfc); + sfcDispatchDto.setComponent(component); + sfcDispatchDto.setComponentDescription(componentDescription); + sfcDispatchDto.setTurnOperation(turnOperation); + sfcDispatchDto.setIsDispatch(isDispatch); if (startFromDate_S != null) { - shopOrderRelease.setStartFromDate(DateUtil.parse(startFromDate_S)); + sfcDispatchDto.setStartFromDate(DateUtil.parse(startFromDate_S)); } if (startToDate_S != null) { - shopOrderRelease.setStartToDate(DateUtil.parse(startToDate_S)); + sfcDispatchDto.setStartToDate(DateUtil.parse(startToDate_S)); } if (completeFromDate_S != null) { - shopOrderRelease.setCompleteFromDate(DateUtil.parse(completeFromDate_S)); + sfcDispatchDto.setCompleteFromDate(DateUtil.parse(completeFromDate_S)); } if (completeToDate_S != null) { - shopOrderRelease.setCompleteToDate(DateUtil.parse(completeToDate_S)); + sfcDispatchDto.setCompleteToDate(DateUtil.parse(completeToDate_S)); } - list = sfcDispatchService.findSfcDispatchList(shopOrderRelease); + list = sfcDispatchService.findSfcDispatchList(sfcDispatchDto); } catch (Exception e) { return R.failed(e.getMessage()); } @@ -114,29 +114,29 @@ public class SfcDispatchController { /** * 查询派工数据 * - * @param shopOrderRelease + * @param sfcDispatchDto * @return */ @ResponseBody @PostMapping("findSfcDispatch") - public R findSfcDispatch(@RequestBody ShopOrderRelease shopOrderRelease) { - List list; + public R findSfcDispatch(@RequestBody SfcDispatchDto sfcDispatchDto) { + List list; try { - shopOrderRelease.setSite(CommonMethods.getSite()); - if (shopOrderRelease.getStartFromDate_S() != null) { - shopOrderRelease.setStartFromDate(DateUtil.parse(shopOrderRelease.getStartFromDate_S())); + sfcDispatchDto.setSite(CommonMethods.getSite()); + if (sfcDispatchDto.getStartFromDate_S() != null) { + sfcDispatchDto.setStartFromDate(DateUtil.parse(sfcDispatchDto.getStartFromDate_S())); } - if (shopOrderRelease.getStartToDate_S() != null) { - shopOrderRelease.setStartToDate(DateUtil.parse(shopOrderRelease.getStartToDate_S())); + if (sfcDispatchDto.getStartToDate_S() != null) { + sfcDispatchDto.setStartToDate(DateUtil.parse(sfcDispatchDto.getStartToDate_S())); } - if (shopOrderRelease.getCompleteFromDate_S() != null) { - shopOrderRelease.setCompleteFromDate(DateUtil.parse(shopOrderRelease.getCompleteFromDate_S())); + if (sfcDispatchDto.getCompleteFromDate_S() != null) { + sfcDispatchDto.setCompleteFromDate(DateUtil.parse(sfcDispatchDto.getCompleteFromDate_S())); } - if (shopOrderRelease.getCompleteToDate_S() != null) { - shopOrderRelease.setCompleteToDate(DateUtil.parse(shopOrderRelease.getCompleteToDate_S())); + if (sfcDispatchDto.getCompleteToDate_S() != null) { + sfcDispatchDto.setCompleteToDate(DateUtil.parse(sfcDispatchDto.getCompleteToDate_S())); } - list = sfcDispatchService.findSfcDispatchList(shopOrderRelease); + list = sfcDispatchService.findSfcDispatchList(sfcDispatchDto); } catch (Exception e) { return R.failed(e.getMessage()); } @@ -330,24 +330,24 @@ public class SfcDispatchController { @PostMapping("/gantt-list") - public R ganttList(@RequestBody ShopOrderRelease shopOrderRelease) { + public R ganttList(@RequestBody SfcDispatchDto sfcDispatchDto) { Map result = new HashMap<>(); try { String site = CommonMethods.getSite(); - if (StringUtil.isBlank(shopOrderRelease.getStartFromDate_S())) { + if (StringUtil.isBlank(sfcDispatchDto.getStartFromDate_S())) { throw BusinessException.build("派工开始时间不能为空!"); } - if (StringUtil.isBlank(shopOrderRelease.getStartToDate_S())) { + if (StringUtil.isBlank(sfcDispatchDto.getStartToDate_S())) { throw BusinessException.build("派工开始时间不能为空!"); } - shopOrderRelease.setSite(site); - shopOrderRelease.setDispatchStatus(DispatchStatusEnum.RELEASE.getCode()); - shopOrderRelease.setStartFromDate(DateUtil.parseDate(shopOrderRelease.getStartFromDate_S())); - shopOrderRelease.setStartToDate(DateUtil.parseDate(shopOrderRelease.getStartToDate_S())); + sfcDispatchDto.setSite(site); + sfcDispatchDto.setDispatchStatus(DispatchStatusEnum.RELEASE.getCode()); + sfcDispatchDto.setStartFromDate(DateUtil.parseDate(sfcDispatchDto.getStartFromDate_S())); + sfcDispatchDto.setStartToDate(DateUtil.parseDate(sfcDispatchDto.getStartToDate_S())); - result = sfcDispatchService.ganttList(site, shopOrderRelease); + result = sfcDispatchService.ganttList(site, sfcDispatchDto); } catch (Exception e) { return R.failed(e.getMessage()); } diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/dto/IssueItemDto.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/dto/IssueItemDto.java index 122d9eb3..b9629770 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/dto/IssueItemDto.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/dto/IssueItemDto.java @@ -7,6 +7,7 @@ public class IssueItemDto implements Serializable { private String site; private String item; + private String workOrder; private String resource; private String workCenter; private String shopOrder; @@ -31,6 +32,14 @@ public class IssueItemDto implements Serializable { this.item = item; } + public String getWorkOrder() { + return workOrder; + } + + public void setWorkOrder(String workOrder) { + this.workOrder = workOrder; + } + public String getResource() { return resource; } diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java index a0d79805..f92639c7 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/CallItemMapper.java @@ -36,7 +36,7 @@ public interface CallItemMapper extends BaseMapper { List findCallItemDetailListByDispatchBo(@Param("site") String site, @Param("list") List list); - void updateCallItemStatusByDispatchBo(@Param("status") String status, @Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List list); + void updateCallItemStatusByDispatchBo(@Param("status") String status, @Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List list); void updateCallItemStatusByCallItemNo(@Param("status") String status, @Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List list); diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java index 8334a760..5677a8d9 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/mapper/SfcDispatchMapper.java @@ -27,10 +27,10 @@ public interface SfcDispatchMapper extends BaseMapper { /** * 查询派工生产批次数据 * - * @param shopOrderRelease + * @param sfcDispatchDto * @return */ - List findSfcDispatchList(ShopOrderRelease shopOrderRelease); + List findSfcDispatchList(SfcDispatchDto sfcDispatchDto); /** * 修改派工单状态 diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/CallItem.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/CallItem.java index 73baaad9..2fefe482 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/CallItem.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/CallItem.java @@ -138,6 +138,8 @@ public class CallItem extends Model { @TableField(exist = false) private String item; @TableField(exist = false) + private String itemGroup; + @TableField(exist = false) private String component; @TableField(exist = false) private String itemDescription; @@ -170,6 +172,10 @@ public class CallItem extends Model { @TableField(exist = false) private String remark; @TableField(exist = false) + private BigDecimal sizeReqQty; + @TableField(exist = false) + private BigDecimal compReqQty; + @TableField(exist = false) private String startFromDate_S; @TableField(exist = false) private String startToDate_S; @@ -362,6 +368,14 @@ public class CallItem extends Model { this.item = item; } + public String getItemGroup() { + return itemGroup; + } + + public void setItemGroup(String itemGroup) { + this.itemGroup = itemGroup; + } + public String getComponent() { return component; } @@ -490,6 +504,22 @@ public class CallItem extends Model { this.remark = remark; } + public BigDecimal getSizeReqQty() { + return sizeReqQty; + } + + public void setSizeReqQty(BigDecimal sizeReqQty) { + this.sizeReqQty = sizeReqQty; + } + + public BigDecimal getCompReqQty() { + return compReqQty; + } + + public void setCompReqQty(BigDecimal compReqQty) { + this.compReqQty = compReqQty; + } + public String getStartFromDate_S() { return startFromDate_S; } diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/ShopOrderRelease.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/ShopOrderRelease.java index 98e9eac0..2249737c 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/ShopOrderRelease.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/model/ShopOrderRelease.java @@ -61,7 +61,6 @@ public class ShopOrderRelease extends SfcDispatch { private String operationDescription; private String isCompleted; private BigDecimal completedQty; - private String userName; private String resourceWorkCenter; private LocalDateTime dispatchCompleteDate; @@ -231,14 +230,6 @@ public class ShopOrderRelease extends SfcDispatch { this.resourceWorkCenter = resourceWorkCenter; } - public String getUserName() { - return userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - public LocalDateTime getDispatchCompleteDate() { return dispatchCompleteDate; } diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java index 47f282ad..ce714f19 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/CallItemService.java @@ -85,7 +85,16 @@ public interface CallItemService extends IService { * @param user * @param callItemNoList */ - void cancelCallItem(String site, String user, List callItemNoList); + void cancelCallItem(String site, String user, List callItemNoList); + + /** + * 刷新叫料明细 + * + * @param site + * @param user + * @param callItemList + */ + void refreshCallItem(String site, String user, List callItemList); /** * 刷新需求时间 @@ -96,6 +105,14 @@ public interface CallItemService extends IService { */ void refreshRequiredTime(String site, String user, List callItemNoList); + /** + * 更新叫料单状态 + * + * @param user + * @param status + * @param list + */ + void updateCallItemStatusByDispatchBo(String status, String user, List list); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /** diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/ItemBatchService.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/ItemBatchService.java index 6074e1c7..14d67bbc 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/ItemBatchService.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/ItemBatchService.java @@ -28,4 +28,7 @@ public interface ItemBatchService extends IService { * @return */ List findItemBatch(String site, String item, String batch); + + + List findItemLabel(String site, String item, String label); } \ No newline at end of file diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/SfcDispatchService.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/SfcDispatchService.java index 1c8f15db..5da332d7 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/SfcDispatchService.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/SfcDispatchService.java @@ -34,10 +34,10 @@ public interface SfcDispatchService extends IService { /** * 查询派工清单 * - * @param shopOrderRelease + * @param sfcDispatchDto * @return */ - List findSfcDispatchList(ShopOrderRelease shopOrderRelease); + List findSfcDispatchList(SfcDispatchDto sfcDispatchDto); /** * 派工保存 @@ -106,8 +106,8 @@ public interface SfcDispatchService extends IService { * 甘特图数据查询 * * @param site - * @param shopOrderRelease + * @param sfcDispatchDto * @return */ - Map ganttList(String site, ShopOrderRelease shopOrderRelease); + Map ganttList(String site, SfcDispatchDto sfcDispatchDto); } \ No newline at end of file diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java index 5b67bb0c..e9ad3806 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/CallItemServiceImpl.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; +import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.HashMap; @@ -80,8 +81,6 @@ public class CallItemServiceImpl extends ServiceImpl i callItem.setRequiredQty(sfcDispatchDto.getDispatchQty()); callItem.setRequiredDateTime(sfcDispatchDto.getPlannedStartDate()); callItem.setStatus(Constants.CALL_ITEM_STATUS_NEW); - callItem.setCallStatus(Constants.CALL_ITEM_STATUS_NEW); - callItem.setIssueStatus(Constants.CALL_ITEM_STATUS_NEW); callItem.setCreateUser(user); callItem.setCreatedDateTime(nowDate); callItem.setModifyUser(user); @@ -101,8 +100,6 @@ public class CallItemServiceImpl extends ServiceImpl i callItem.setHandle(HandleEnum.CALL_ITEM.getHandle(site, callItemNo)); callItem.setCallType(Constants.CALL_TYPE_MATERIAL); callItem.setStatus(Constants.CALL_ITEM_STATUS_NEW); - callItem.setCallStatus(Constants.CALL_ITEM_STATUS_NEW); - callItem.setIssueStatus(Constants.CALL_ITEM_STATUS_NEW); callItem.setCreateUser(user); callItem.setCreatedDateTime(nowDate); callItem.setModifyUser(user); @@ -143,8 +140,13 @@ public class CallItemServiceImpl extends ServiceImpl i return; } - LocalDateTime dateTime = LocalDateTime.now(); - callItemMapper.updateCallItemStatusByDispatchBo(Constants.CALL_ITEM_STATUS_CALLED, user, dateTime, callItemList); + //派工单号集合 + List dispatchBoList = new ArrayList<>(); + for (CallItem callItem : callItemList) { + dispatchBoList.add(callItem.getSfcDispatchBo()); + } + + this.updateCallItemStatusByDispatchBo(Constants.CALL_ITEM_STATUS_CALLED, user, dispatchBoList); } @Override @@ -153,6 +155,8 @@ public class CallItemServiceImpl extends ServiceImpl i return; } + //派工单号集合 + List dispatchBoList = new ArrayList<>(); for (CallItem callItem : callItemList) { String sfcDispatchBo = callItem.getSfcDispatchBo(); List list = callItemMapper.selectCallItemAndType(sfcDispatchBo); @@ -167,20 +171,87 @@ public class CallItemServiceImpl extends ServiceImpl i throw BusinessException.build("勾选的派工单包含原材料组件,不能触发确认到料"); } } + + dispatchBoList.add(sfcDispatchBo); } - LocalDateTime dateTime = LocalDateTime.now(); - callItemMapper.updateCallItemStatusByDispatchBo(Constants.CALL_ITEM_STATUS_ISSUED, user, dateTime, callItemList); + this.updateCallItemStatusByDispatchBo(Constants.CALL_ITEM_STATUS_ISSUED, user, dispatchBoList); } @Override - public void cancelCallItem(String site, String user, List callItemNoList) { + public void cancelCallItem(String site, String user, List callItemNoList) { if (callItemNoList == null || callItemNoList.size() <= 0) { return; } + List callItemList = new ArrayList<>(); + for (CallItem callItem: callItemNoList) { + String status = callItem.getStatus(); + if (Constants.CALL_ITEM_STATUS_ISSUED.equals(status)) { + throw BusinessException.build("领料单号【" +callItem.getCallItemNo()+ "】已发料,不允许取消!"); + } + + callItemList.add(callItem.getCallItemNo()); + } + LocalDateTime dateTime = LocalDateTime.now(); - callItemMapper.updateCallItemStatusByCallItemNo(Constants.CALL_ITEM_STATUS_CANCELED, user, dateTime, callItemNoList); + callItemMapper.updateCallItemStatusByCallItemNo(Constants.CALL_ITEM_STATUS_CANCELED, user, dateTime, callItemList); + } + + @Override + public void refreshCallItem(String site, String user, List callItemList) { + if (callItemList == null || callItemList.size() <= 0) { + return; + } + + List sfcDispatchList = new ArrayList<>(); + for (CallItem callItem: callItemList) { + SfcDispatchDto sfcDispatchDto = new SfcDispatchDto(); + sfcDispatchDto.setHandle(callItem.getSfcDispatchBo()); + sfcDispatchList.add(sfcDispatchDto); + } + List list = callItemMapper.selectDispatchCallItem(sfcDispatchList); + if (list == null || list.size() <= 0) { + return; + } + + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + LocalDateTime nowDate = LocalDateTime.now(); + List addList = new ArrayList<>(); + List modList = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + CallItem callItem = list.get(i); + String handle = callItem.getHandle(); + BigDecimal reqQty = callItem.getRequiredQty(); + if (reqQty.compareTo(BigDecimal.ZERO) == 1) { + if (StringUtil.isBlank(handle)) { + String component = StringUtil.trimHandle(callItem.getComponentBo()); + String callItemNo = callItem.getSfc() + callItem.getStepId() + component; + + callItem.setCallItemNo(callItemNo); + callItem.setHandle(HandleEnum.CALL_ITEM.getHandle(site, callItemNo)); + callItem.setCallType(Constants.CALL_TYPE_MATERIAL); + callItem.setStatus(Constants.CALL_ITEM_STATUS_NEW); + callItem.setCreateUser(user); + callItem.setCreatedDateTime(nowDate); + callItem.setModifyUser(user); + callItem.setModifiedDateTime(nowDate); + addList.add(callItem); + } else { + callItem.setRequiredQty(callItem.getIssueQty()); + callItem.setModifyUser(user); + callItem.setModifiedDateTime(nowDate); + modList.add(callItem); + } + } + } + + if (addList != null && addList.size() > 0) { + this.saveBatch(addList); + } + if (modList != null && modList.size() > 0) { + this.updateBatchById(modList); + } } @Override @@ -194,6 +265,12 @@ public class CallItemServiceImpl extends ServiceImpl i callItemMapper.refreshRequiredTime(user, dateTime, callItemNoList); } + @Override + public void updateCallItemStatusByDispatchBo(String status, String user, List list) { + LocalDateTime dateTime = LocalDateTime.now(); + callItemMapper.updateCallItemStatusByDispatchBo(status, user, dateTime, list); + } + //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @Override @@ -203,10 +280,64 @@ public class CallItemServiceImpl extends ServiceImpl i @Override public List findIssueItemList(IssueItemDto issueItemDto) { + List list; if (issueItemDto.getMatchResource()) { - return callItemMapper.finsIssueItemListToResource(issueItemDto); + list = callItemMapper.finsIssueItemListToResource(issueItemDto); } else { - return callItemMapper.finsIssueItemListNoResource(issueItemDto); + list = callItemMapper.finsIssueItemListNoResource(issueItemDto); + } + + if (list == null || list.size() <= 0) { + return list; + } + + //计算合计(按下料尺寸) + //物料组为GB(钢板):合计=下料尺寸*号最后两位相乘*需求数量 + //其他物料: 合计:下料尺寸*号最后一位*需求数量 + Map compQtyMap = new HashMap<>(); + for (CallItem callItem: list) { + String component = callItem.getItem(); + String itemGroup = callItem.getItemGroup(); + BigDecimal reqQty = callItem.getRequiredQty(); + String blankingSize = callItem.getBlankingSize(); + + //工序叫料不需要计算数量 + if (Constants.CALL_TYPE_OPERATION.equals(callItem.getCallType())) { + callItem.setSizeReqQty(BigDecimal.ONE); + compQtyMap.put(component, BigDecimal.ONE); + continue; + } + + if ("GB".equals(itemGroup) && blankingSize.contains("*")) { + String []size = blankingSize.split("/*"); + if (size != null && size.length >= 2) { + int sizeLength = size.length; + BigDecimal length = new BigDecimal(size[sizeLength-1]); + BigDecimal width = new BigDecimal(size[sizeLength-2]); + BigDecimal sizeReqQty = length.multiply(width).multiply(reqQty); + callItem.setSizeReqQty(sizeReqQty); + + //按物料汇总需求数量 + compQtyMap.put(component, (compQtyMap.get(component) != null ? compQtyMap.get(component).add(sizeReqQty) : sizeReqQty)); + } + } else { + String []size = blankingSize.split("/*"); + if (size != null && size.length >= 1) { + int sizeLength = size.length; + BigDecimal length = new BigDecimal(size[sizeLength-1]); + BigDecimal sizeReqQty = length.multiply(reqQty); + callItem.setSizeReqQty(sizeReqQty); + + //按物料汇总需求数量 + compQtyMap.put(component, (compQtyMap.get(component) != null ? compQtyMap.get(component).add(sizeReqQty) : sizeReqQty)); + } + } + } + + //计算总数量(按数量汇总) + for (CallItem callItem : list) { + callItem.setCompReqQty(compQtyMap.get(callItem.getItem())); } + return list; } } \ No newline at end of file diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/IssueItemServiceImpl.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/IssueItemServiceImpl.java index bf25e531..b6484739 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/IssueItemServiceImpl.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/IssueItemServiceImpl.java @@ -89,7 +89,7 @@ public class IssueItemServiceImpl extends ServiceImpl itemBatchList = itemBatchService.findItemBatch(site, item, inventory); + List itemBatchList = itemBatchService.findItemLabel(site, item, inventory); if (itemBatchList == null || itemBatchList.size() <= 0) { throw BusinessException.build("扫描的物料条码【 "+ inventory +" 】不存在!"); } @@ -178,10 +178,12 @@ public class IssueItemServiceImpl extends ServiceImpl itemBatchList = itemBatchService.findItemBatch(site, item, inventory); + List itemBatchList = itemBatchService.findItemLabel(site, item, inventory); if (itemBatchList == null || itemBatchList.size() <= 0) { throw BusinessException.build("扫描的物料条码【 " + inventory + " 】不存在!"); } + String batch = itemBatchList.get(0).getBatch(); + String supplier = itemBatchList.get(0).getSupplier(); try { //查询库存是否存在 @@ -195,6 +197,20 @@ public class IssueItemServiceImpl extends ServiceImpl inventoryDataFieldList = new ArrayList<>(); + InventoryDataField dataField = new InventoryDataField(); + dataField.setAttribute("BATCH_NUMBER"); + dataField.setValue(batch); + inventoryDataFieldList.add(dataField); + + dataField = new InventoryDataField(); + dataField.setAttribute("VENDOR_NAME"); + dataField.setValue(supplier); + inventoryDataFieldList.add(dataField); + request.setAssemblyDataList(inventoryDataFieldList); + meInventoryService.validateAndAdd(request); } else { issueInvQty = issueInvQty.add(inventoryModel.getQtyOnHand()); diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/ItemBatchServiceImpl.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/ItemBatchServiceImpl.java index 70881586..5473dcb4 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/ItemBatchServiceImpl.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/ItemBatchServiceImpl.java @@ -41,7 +41,19 @@ public class ItemBatchServiceImpl extends ServiceImpl findItemLabel(String site, String item, String label) { + Map queryMap = new HashMap<>(); + queryMap.put(ItemBatch.SITE, site); + queryMap.put(ItemBatch.ITEM, item); + if (StringUtil.notBlank(label)) { + queryMap.put(ItemBatch.LABEL, label); } return itemBatchMapper.selectByMap(queryMap); diff --git a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java index 57b4016a..52010faa 100644 --- a/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java +++ b/dispatch/src/main/java/com/foreverwin/mesnac/dispatch/service/impl/SfcDispatchServiceImpl.java @@ -85,8 +85,8 @@ public class SfcDispatchServiceImpl extends ServiceImpl findSfcDispatchList(ShopOrderRelease shopOrderRelease) { - return sfcDispatchMapper.findSfcDispatchList(shopOrderRelease); + public List findSfcDispatchList(SfcDispatchDto sfcDispatchDto) { + return sfcDispatchMapper.findSfcDispatchList(sfcDispatchDto); } @Override @@ -184,6 +184,7 @@ public class SfcDispatchServiceImpl extends ServiceImpl list = new ArrayList<>(); + List dispatchBoList = new ArrayList<>(); for (SfcDispatchDto sfcDispatchDto : sfcDispatchList) { String sfcDispatchBo = sfcDispatchDto.getHandle(); String shopOrder = sfcDispatchDto.getShopOrder(); @@ -209,12 +210,17 @@ public class SfcDispatchServiceImpl extends ServiceImpl 0) { this.updateBatchById(list); } + //取消叫料数据 + callItemService.updateCallItemStatusByDispatchBo(Constants.CALL_ITEM_STATUS_CANCELED, user, dispatchBoList); + //取消产前准备任务 prodReadyTaskService.createTask(sfcDispatchList); } @@ -242,11 +248,11 @@ public class SfcDispatchServiceImpl extends ServiceImpl ganttList(String site, ShopOrderRelease shopOrderRelease) { + public Map ganttList(String site, SfcDispatchDto sfcDispatchDto) { Map map = new HashMap<>(); //查询派工数据 - List scheduleList = this.findSfcDispatchList(shopOrderRelease); + List scheduleList = this.findSfcDispatchList(sfcDispatchDto); if (scheduleList == null || scheduleList.size() <= 0) { return map; } @@ -259,7 +265,7 @@ public class SfcDispatchServiceImpl extends ServiceImpl>> processedMap = this.processWorkCenterWorkTimes(site, workCenterList, shopOrderRelease.getStartFromDate(), shopOrderRelease.getStartToDate()); + Map>> processedMap = this.processWorkCenterWorkTimes(site, workCenterList, sfcDispatchDto.getStartFromDate(), sfcDispatchDto.getStartToDate()); map.put("workCenterWorkTimes", processedMap); return map; @@ -428,7 +434,7 @@ public class SfcDispatchServiceImpl extends ServiceImpl + @@ -595,7 +596,7 @@ @@ -607,7 +608,7 @@ diff --git a/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml b/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml index 9c6bc92a..87c458b0 100644 --- a/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml +++ b/dispatch/src/main/resources/mapper/SfcDispatchMapper.xml @@ -51,7 +51,7 @@ - + @@ -63,7 +63,6 @@ - diff --git a/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java b/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java index 8e53c177..6023b996 100644 --- a/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java +++ b/integration/src/main/java/com/foreverwin/mesnac/integration/service/impl/InterfaceServiceImpl.java @@ -1,8 +1,10 @@ package com.foreverwin.mesnac.integration.service.impl; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.foreverwin.mesnac.common.constant.Constants; import com.foreverwin.mesnac.common.constant.CustomFieldConstant; +import com.foreverwin.mesnac.common.dto.LabelPrintDto; import com.foreverwin.mesnac.common.enums.HandleEnum; import com.foreverwin.mesnac.common.model.PrintLog; import com.foreverwin.mesnac.common.service.PrintLogService; @@ -431,6 +433,9 @@ public class InterfaceServiceImpl implements InterfaceService { * 3.MES资源类型=MES工序 */ String erpWorkCenter = componentDto.getOPERATION(); + if (StringUtil.isBlank(erpWorkCenter)) { + throw BusinessException.build("BOM节点下字段【OPERATION】不能为空!"); + } Operation operationModel = operationService.queryOperationByErpWorkCenter(site, erpWorkCenter); if (operationModel == null) { throw BusinessException.build("ERP工作中心【" +erpWorkCenter+"】对应的MES工序未维护"); @@ -517,7 +522,7 @@ public class InterfaceServiceImpl implements InterfaceService { String stepId = routerStepDto.getSTEP_ID(); String erpWorkCenter = routerStepDto.getOPERATION().trim(); if (StringUtil.isBlank(erpWorkCenter)) { - throw BusinessException.build("步骤标识【" +stepId+ "】下ERP工作中心不能为空"); + continue; } if (StringUtil.isBlank(entryRouterStep)) { @@ -835,21 +840,25 @@ public class InterfaceServiceImpl implements InterfaceService { } //打印模板参数 - JSONObject jsonObject = new JSONObject(); - jsonObject.put("ITEM", item); - jsonObject.put("ITEM_DESC", itemModel.getDescription()); - jsonObject.put("SUPPLIER", supplier); - jsonObject.put("INVENTORY", inventory); + List labelPrintDtoList = new ArrayList<>(); + LabelPrintDto labelPrintDto = new LabelPrintDto(); + labelPrintDto.setSite(site); + labelPrintDto.setPrintTemplate(Constants.PRINT_TYPE_INV); + labelPrintDto.setItem(item); + labelPrintDto.setItemDescription(itemModel.getDescription()); + labelPrintDto.setSupplier(supplier); + labelPrintDto.setBatch(inventory); + labelPrintDtoList.add(labelPrintDto); //记录打印数据 PrintLog printLog = new PrintLog(); printLog.setHandle(UUID.randomUUID().toString()); printLog.setSite(site); - printLog.setCategory("INV"); + printLog.setCategory(Constants.PRINT_TYPE_INV); printLog.setPrintName(""); - printLog.setPrintTemplate("INV_LABEL"); - printLog.setPrintParam(jsonObject.toJSONString()); + printLog.setPrintTemplate(Constants.PRINT_TYPE_INV); + printLog.setPrintParam(JSON.toJSONString(labelPrintDtoList)); printLog.setInventory(inventory); printLog.setItemBo(itemModel.getHandle()); printLog.setIsPrint("false"); diff --git a/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/ResrceController.java b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/ResrceController.java index 9db3c34e..abc1cc9d 100644 --- a/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/ResrceController.java +++ b/meapi/src/main/java/com/foreverwin/mesnac/meapi/controller/ResrceController.java @@ -183,7 +183,7 @@ public class ResrceController { List result; try { String site = CommonMethods.getSite(); - String [] userArray = new String[]{}; + String [] userArray = new String[1]; if (StringUtils.notBlank(user)) { if (user.contains(",")) { userArray = user.split(","); diff --git a/meapi/src/main/resources/mapper/ResrceMapper.xml b/meapi/src/main/resources/mapper/ResrceMapper.xml index 246dae4c..4bb9b417 100644 --- a/meapi/src/main/resources/mapper/ResrceMapper.xml +++ b/meapi/src/main/resources/mapper/ResrceMapper.xml @@ -599,7 +599,7 @@