From 19047b80730d085e2e7cdde6478f35c9e7214eaa Mon Sep 17 00:00:00 2001 From: philip <244793088@qq.com> Date: Thu, 15 Jul 2021 09:47:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E6=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataimport/handler/HandlerFactory.java | 2 + .../handler/InspectionItemHandler.java | 94 ++++ .../service/MasterObjectDefine.java | 15 + .../controller/CutterLogController.java | 137 +++++ .../production/controller/ToolController.java | 3 +- .../production/mapper/CutterLogMapper.java | 18 + .../mesnac/production/model/CutterLog.java | 264 ++++++++++ .../production/service/CutterLogService.java | 31 ++ .../service/impl/CutterLogServiceImpl.java | 121 +++++ .../service/impl/PodTemplateServiceImpl.java | 54 ++ .../main/resources/mapper/CutterLogMapper.xml | 466 ++++++++++++++++++ .../src/main/resources/mapper/ToolMapper.xml | 2 +- .../service/impl/SelfReportServiceImpl.java | 6 +- 13 files changed, 1209 insertions(+), 4 deletions(-) create mode 100644 dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/InspectionItemHandler.java create mode 100644 production/src/main/java/com/foreverwin/mesnac/production/controller/CutterLogController.java create mode 100644 production/src/main/java/com/foreverwin/mesnac/production/mapper/CutterLogMapper.java create mode 100644 production/src/main/java/com/foreverwin/mesnac/production/model/CutterLog.java create mode 100644 production/src/main/java/com/foreverwin/mesnac/production/service/CutterLogService.java create mode 100644 production/src/main/java/com/foreverwin/mesnac/production/service/impl/CutterLogServiceImpl.java create mode 100644 production/src/main/resources/mapper/CutterLogMapper.xml diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/HandlerFactory.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/HandlerFactory.java index 67568908..244cd285 100644 --- a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/HandlerFactory.java +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/HandlerFactory.java @@ -24,6 +24,8 @@ public class HandlerFactory { return new NCGroupHandler(); case "ncCode" : return new NCCodeHandler(); + case "inspectionItem" : + return new InspectionItemHandler(); case "messageType" : //return new MessageTypeHandler(); } diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/InspectionItemHandler.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/InspectionItemHandler.java new file mode 100644 index 00000000..7f253f17 --- /dev/null +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/handler/InspectionItemHandler.java @@ -0,0 +1,94 @@ +package com.foreverwin.mesnac.dataimport.handler; + +import com.alibaba.fastjson.JSONObject; +import com.foreverwin.mesnac.dataimport.client.ResourceTypeWSClient; +import com.foreverwin.mesnac.dataimport.handler.base.BaseHandler; +import com.foreverwin.mesnac.dataimport.reader.FileReader; +import com.foreverwin.mesnac.dataimport.reader.FileReaderBuilder; +import com.foreverwin.mesnac.dataimport.reader.RowVisitor; +import com.foreverwin.mesnac.dataimport.service.MasterObjectDefine; +import com.foreverwin.modular.core.exception.BusinessException; +import com.foreverwin.modular.core.util.I18nUtil; +import com.sap.me.plant.ResourceTypeBasicConfiguration; + +import java.io.InputStream; +import java.util.Collection; +import java.util.Map; + +public class InspectionItemHandler extends BaseHandler { + + @Override + public String importFile(String site, InputStream inputStream, String fileType, String mode) throws Exception { + int row = 0; + StringBuffer buffer = new StringBuffer(); + Integer[] failedNumber = new Integer[]{0}; + + try { + FileReader fileReader = new FileReaderBuilder().build(fileType); + RowVisitor visitor = getRowVisitor(site, mode, buffer, failedNumber); + row = fileReader.visitor(visitor).read(inputStream, getHeaders()); + } catch (Exception e) { + 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()); + } + buffer.insert(0, I18nUtil.getI18nText("MaterData.import.Summary", new Object[]{row + failedNumber[0], row, failedNumber[0]}) + "\n"); + + return buffer.toString(); + } + + @Override + public Map getHeaders() { + return MasterObjectDefine.getHeadsMapping("RESOURCE_TYPE"); + } + + public RowVisitor getRowVisitor(String site, String mode, StringBuffer buffer, Integer[] failedNumber) { + + return new RowVisitor() { + @Override + public int visit(long index, JSONObject jsonObject) { + Object[] params = new Object[10]; + params[0] = index; + params[1] = jsonObject.getString("resourceType"); + + String resultMessage = null; + try { + if (jsonObject.containsKey("resourceType") && jsonObject.getString("resourceType").trim().length() > 0) { + jsonObject.put("site", site); + Collection collection = ResourceTypeWSClient.find(jsonObject); + if (collection.size() > 0) { + resultMessage = "资源类型主数据已经存在"; + } else { + resultMessage = ResourceTypeWSClient.insert(jsonObject); + if (resultMessage == null) { + return 1; + } + } + + if (resultMessage != null) { + params[2] = resultMessage; + failedNumber[0]++; + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.insert.fail", params) + "\n"); + return 0; + } + } + return 0; + } catch (Exception e) { + params[2] = e.getMessage(); + failedNumber[0]++; + buffer.append("第" + index + "行:" + I18nUtil.getI18nText("MaterData.import.insert.fail", params) + "\n"); + } + + return 0; + } + + @Override + public String[] getHeader() { + return null; + } + }; + } +} diff --git a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/service/MasterObjectDefine.java b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/service/MasterObjectDefine.java index b50c9678..960d9e2c 100644 --- a/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/service/MasterObjectDefine.java +++ b/dataimport/src/main/java/com/foreverwin/mesnac/dataimport/service/MasterObjectDefine.java @@ -139,6 +139,21 @@ public class MasterObjectDefine { cvsHeadsMapping.put("seqNum","纠正预防措施时间"); break; + case "INSPECTION_ITEM": + cvsHeadsMapping = new HashMap<>(); + + cvsHeadsMapping.put("seqNum","序号"); + cvsHeadsMapping.put("seqNum","消息类型"); + cvsHeadsMapping.put("seqNum","消息正文"); + cvsHeadsMapping.put("seqNum","响应用户组"); + cvsHeadsMapping.put("seqNum","响应用户组"); + cvsHeadsMapping.put("seqNum","响应时间(H)"); + cvsHeadsMapping.put("seqNum","响应超期上报用户组"); + cvsHeadsMapping.put("seqNum","出具方案时间(H)"); + cvsHeadsMapping.put("seqNum","方案关闭时通知用户组"); + cvsHeadsMapping.put("seqNum","纠正预防措施用户组"); + cvsHeadsMapping.put("seqNum","纠正预防措施时间"); + break; default: break; } diff --git a/production/src/main/java/com/foreverwin/mesnac/production/controller/CutterLogController.java b/production/src/main/java/com/foreverwin/mesnac/production/controller/CutterLogController.java new file mode 100644 index 00000000..4cbc63a5 --- /dev/null +++ b/production/src/main/java/com/foreverwin/mesnac/production/controller/CutterLogController.java @@ -0,0 +1,137 @@ +package com.foreverwin.mesnac.production.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.foreverwin.mesnac.production.model.CutterLog; +import com.foreverwin.mesnac.production.service.CutterLogService; +import com.foreverwin.modular.core.util.FrontPage; +import com.foreverwin.modular.core.util.R; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +/** + * + * @author Philip + * @since 2021-07-14 + */ +@RestController +@RequestMapping("/Z-CUTTER-LOG") +public class CutterLogController { + + @Autowired + public CutterLogService cutterLogService; + /** + * 添加 + * @return + */ + @ResponseBody + @PostMapping("/doAdd") + public R doAdd(@RequestBody Map map){ + cutterLogService.doAdd(map); + return R.ok(); + } + /** + * 根据id查询 + * + * @param id 主键 + * @return + */ + @ResponseBody + @GetMapping("/{id:.+}") + public R getCutterLogById(@PathVariable String id) { + return R.ok( cutterLogService.getById(id)); + } + + /** + * 查询所有数据 + * + * @return + */ + @ResponseBody + @GetMapping("") + public R getCutterLogList(CutterLog cutterLog){ + List result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(cutterLog); + result = cutterLogService.list(queryWrapper); + return R.ok(result); + } + + /** + * 分页查询数据 + * + * @param frontPage 分页信息 + * @return + */ + @ResponseBody + @GetMapping("/page") + public R page(FrontPage frontPage, CutterLog cutterLog){ + IPage result; + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(cutterLog); + if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) { + //TODO modify global query + queryWrapper.lambda().and(wrapper -> wrapper + .like(CutterLog::getHandle, frontPage.getGlobalQuery()) + .or().like(CutterLog::getSite, frontPage.getGlobalQuery()) + .or().like(CutterLog::getCutter, frontPage.getGlobalQuery()) + .or().like(CutterLog::getShopOrder, frontPage.getGlobalQuery()) + .or().like(CutterLog::getWorkCenter, frontPage.getGlobalQuery()) + .or().like(CutterLog::getSfc, frontPage.getGlobalQuery()) + .or().like(CutterLog::getType, frontPage.getGlobalQuery()) + .or().like(CutterLog::getOperation, frontPage.getGlobalQuery()) + .or().like(CutterLog::getStepId, frontPage.getGlobalQuery()) + .or().like(CutterLog::getItem, frontPage.getGlobalQuery()) + .or().like(CutterLog::getResrce, frontPage.getGlobalQuery()) + .or().like(CutterLog::getCreateUser, frontPage.getGlobalQuery()) + ); + } + result = cutterLogService.page(frontPage.getPagePlus(), queryWrapper); + return R.ok(result); + } + + /** + * 新增 + * @param cutterLog 传递的实体 + * @return null 失败 实体成功 + */ + @PostMapping + public R save(@RequestBody CutterLog cutterLog) { + return R.ok(cutterLogService.save(cutterLog)); + } + + /** + * 修改 + * @param cutterLog 传递的实体 + * @return null 失败 实体成功 + */ + @PutMapping + public R updateById(@RequestBody CutterLog cutterLog) { + return R.ok(cutterLogService.updateById(cutterLog)); + } + + /** + * 根据id删除对象 + * @param id 实体ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}") + public R removeById(@PathVariable("id") String id){ + return R.ok(cutterLogService.removeById(id)); + } + + /** + * 批量删除对象 + * @param ids 实体集合ID + * @return 0 失败 1 成功 + */ + @ResponseBody + @RequestMapping(method = RequestMethod.POST, value = "/delete-batch") + public R removeByIds(List ids){ + return R.ok(cutterLogService.removeByIds(ids)); + } +} \ No newline at end of file diff --git a/production/src/main/java/com/foreverwin/mesnac/production/controller/ToolController.java b/production/src/main/java/com/foreverwin/mesnac/production/controller/ToolController.java index 976358d8..6581ac02 100644 --- a/production/src/main/java/com/foreverwin/mesnac/production/controller/ToolController.java +++ b/production/src/main/java/com/foreverwin/mesnac/production/controller/ToolController.java @@ -65,6 +65,7 @@ public class ToolController { public R page(FrontPage frontPage, Tool tool){ IPage result; QueryWrapper queryWrapper = new QueryWrapper<>(); + tool.setSite(CommonMethods.getSite()); queryWrapper.setEntity(tool); if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) { //TODO modify global query @@ -73,7 +74,7 @@ public class ToolController { .or().like(Tool::getSite, frontPage.getGlobalQuery()) .or().like(Tool::getTool, frontPage.getGlobalQuery()) .or().like(Tool::getDescription, frontPage.getGlobalQuery()) - .or().like(Tool::getStatus, frontPage.getGlobalQuery()) + .or().like(Tool::getStatus, frontPage.getGlobalQuery()) .or().like(Tool::getToolType, frontPage.getGlobalQuery()) .or().like(Tool::getSpecification, frontPage.getGlobalQuery()) .or().like(Tool::getBrand, frontPage.getGlobalQuery()) diff --git a/production/src/main/java/com/foreverwin/mesnac/production/mapper/CutterLogMapper.java b/production/src/main/java/com/foreverwin/mesnac/production/mapper/CutterLogMapper.java new file mode 100644 index 00000000..2b2f290c --- /dev/null +++ b/production/src/main/java/com/foreverwin/mesnac/production/mapper/CutterLogMapper.java @@ -0,0 +1,18 @@ +package com.foreverwin.mesnac.production.mapper; + +import com.foreverwin.mesnac.production.model.CutterLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.springframework.stereotype.Repository; + +/** + *

+ * 刀具记录表 Mapper 接口 + *

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

+ * 刀具记录表 + *

+ * + * @author Philip + * @since 2021-07-14 + */ + +@TableName("Z_CUTTER_LOG") + +public class CutterLog extends Model { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "HANDLE", type = IdType.INPUT) + private String handle; + /** + * 站点 + */ + @TableField("SITE") + private String site; + /** + * 刀具 + */ + @TableField("CUTTER") + private String cutter; + /** + * 工单 + */ + @TableField("SHOP_ORDER") + private String shopOrder; + /** + * 车间 + */ + @TableField("WORK_CENTER") + private String workCenter; + /** + * 产品条码 + */ + @TableField("SFC") + private String sfc; + /** + * 类别 + */ + @TableField("TYPE") + private String type; + /** + * 工序 + */ + @TableField("OPERATION") + private String operation; + /** + * 步骤 + */ + @TableField("STEP_ID") + private String stepId; + /** + * 物料 + */ + @TableField("ITEM") + private String item; + /** + * 资源 + */ + @TableField("RESRCE") + private String resrce; + /** + * 使用数量 + */ + @TableField("QTY") + private Long qty; + /** + * 创建人 + */ + @TableField("CREATE_USER") + private String createUser; + /** + * 创建时间 + */ + @TableField("CREATED_DATE_TIME") + private LocalDateTime createdDateTime; + + + 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 getCutter() { + return cutter; + } + + public void setCutter(String cutter) { + this.cutter = cutter; + } + + public String getShopOrder() { + return shopOrder; + } + + public void setShopOrder(String shopOrder) { + this.shopOrder = shopOrder; + } + + public String getWorkCenter() { + return workCenter; + } + + public void setWorkCenter(String workCenter) { + this.workCenter = workCenter; + } + + public String getSfc() { + return sfc; + } + + public void setSfc(String sfc) { + this.sfc = sfc; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getOperation() { + return operation; + } + + public void setOperation(String operation) { + this.operation = operation; + } + + public String getStepId() { + return stepId; + } + + public void setStepId(String stepId) { + this.stepId = stepId; + } + + public String getItem() { + return item; + } + + public void setItem(String item) { + this.item = item; + } + + public String getResrce() { + return resrce; + } + + public void setResrce(String resrce) { + this.resrce = resrce; + } + + public Long getQty() { + return qty; + } + + public void setQty(Long qty) { + this.qty = qty; + } + + public String getCreateUser() { + return createUser; + } + + public void setCreateUser(String createUser) { + this.createUser = createUser; + } + + public LocalDateTime getCreatedDateTime() { + return createdDateTime; + } + + public void setCreatedDateTime(LocalDateTime createdDateTime) { + this.createdDateTime = createdDateTime; + } + +public static final String HANDLE = "HANDLE"; + +public static final String SITE = "SITE"; + +public static final String CUTTER = "CUTTER"; + +public static final String SHOP_ORDER = "SHOP_ORDER"; + +public static final String WORK_CENTER = "WORK_CENTER"; + +public static final String SFC = "SFC"; + +public static final String TYPE = "TYPE"; + +public static final String OPERATION = "OPERATION"; + +public static final String STEP_ID = "STEP_ID"; + +public static final String ITEM = "ITEM"; + +public static final String RESRCE = "RESRCE"; + +public static final String QTY = "QTY"; + +public static final String CREATE_USER = "CREATE_USER"; + +public static final String CREATED_DATE_TIME = "CREATED_DATE_TIME"; + + + @Override + protected Serializable pkVal() { + return this.handle; + } + + @Override + public String toString() { + return "CutterLog{" + + "handle = " + handle + + ", site = " + site + + ", cutter = " + cutter + + ", shopOrder = " + shopOrder + + ", workCenter = " + workCenter + + ", sfc = " + sfc + + ", type = " + type + + ", operation = " + operation + + ", stepId = " + stepId + + ", item = " + item + + ", resrce = " + resrce + + ", qty = " + qty + + ", createUser = " + createUser + + ", createdDateTime = " + createdDateTime + + "}"; + } +} \ No newline at end of file diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/CutterLogService.java b/production/src/main/java/com/foreverwin/mesnac/production/service/CutterLogService.java new file mode 100644 index 00000000..c837bf87 --- /dev/null +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/CutterLogService.java @@ -0,0 +1,31 @@ +package com.foreverwin.mesnac.production.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.foreverwin.mesnac.production.model.CutterLog; +import com.baomidou.mybatisplus.extension.service.IService; +import com.foreverwin.modular.core.util.FrontPage; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 刀具记录表 服务类 + *

+ * + * @author Philip + * @since 2021-07-14 + */ +public interface CutterLogService extends IService { + + /** + * 分页查询 + * @param frontPage + * @return + */ + IPage selectPage(FrontPage frontPage, CutterLog cutterLog); + + List selectList(CutterLog cutterLog); + + void doAdd(Map map); +} \ No newline at end of file diff --git a/production/src/main/java/com/foreverwin/mesnac/production/service/impl/CutterLogServiceImpl.java b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/CutterLogServiceImpl.java new file mode 100644 index 00000000..00a018f2 --- /dev/null +++ b/production/src/main/java/com/foreverwin/mesnac/production/service/impl/CutterLogServiceImpl.java @@ -0,0 +1,121 @@ +package com.foreverwin.mesnac.production.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.foreverwin.mesnac.common.constant.Constants; +import com.foreverwin.mesnac.common.enums.HandleEnum; +import com.foreverwin.mesnac.common.service.CommonService; +import com.foreverwin.mesnac.common.util.StringUtil; +import com.foreverwin.mesnac.meapi.dto.SfcDto; +import com.foreverwin.mesnac.production.mapper.CutterLogMapper; +import com.foreverwin.mesnac.production.mapper.SfcCrossMapper; +import com.foreverwin.mesnac.production.model.CutterLog; +import com.foreverwin.mesnac.production.model.Tool; +import com.foreverwin.mesnac.production.service.CutterLogService; +import com.foreverwin.mesnac.production.service.ToolService; +import com.foreverwin.modular.core.exception.BaseException; +import com.foreverwin.modular.core.util.CommonMethods; +import com.foreverwin.modular.core.util.FrontPage; +import org.springframework.beans.factory.annotation.Autowired; +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; +import java.util.Map; +import java.util.UUID; + +/** + *

+ * 刀具记录表 服务实现类 + *

+ * + * @author Philip + * @since 2021-07-14 + */ +@Service +@Transactional(rollbackFor = Exception.class) +public class CutterLogServiceImpl extends ServiceImpl implements CutterLogService { + + + @Autowired + private CutterLogMapper cutterLogMapper; + @Autowired + private SfcCrossMapper sfcCorssMapper; + @Autowired + private CommonService commonService; + @Autowired + private ToolService toolService; + @Override + public IPage selectPage(FrontPage frontPage, CutterLog cutterLog) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(cutterLog); + return super.page(frontPage.getPagePlus(), queryWrapper); + } + + @Override + public List selectList(CutterLog cutterLog) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.setEntity(cutterLog); + return super.list(queryWrapper); + } + + @Override + public void doAdd(Map map) { + String site = CommonMethods.getSite(); + String user = CommonMethods.getUser(); + String sfc = (String)map.get("sfc"); + String resrce = (String)map.get("resrce"); + List list = (List)map.get("cutterList"); + ObjectMapper mapper = new ObjectMapper(); + list = mapper.convertValue(list, new TypeReference>() {}); + SfcDto sfcDto = new SfcDto(); + sfcDto.setSfc(sfc); + sfcDto.setResrce(resrce); + Map sfcData = sfcCorssMapper.querySfcData(site, LocaleContextHolder.getLocale().getLanguage(), sfcDto); + if (sfcData == null) { + throw new BaseException("根据当前资源未找到条码[" + sfc + "]的基本信息!"); + } + String operation = (String)sfcData.get("OPERATION"); + String stepId = (String)sfcData.get("STEP_ID"); + String shopOrder = (String)sfcData.get("SHOP_ORDER"); + String item = (String)sfcData.get("ITEM"); + String workShopBo = commonService.getWorkShopBo(HandleEnum.RESOURCE.getHandle(site, resrce)); + String workShop = StringUtil.trimHandle(workShopBo); + if(list==null||list.size()<1){ + throw new BaseException("刀具列表不能为空"); + } + list.forEach(cutterLog->{ + String handle = UUID.randomUUID().toString(); + cutterLog.setHandle(handle); + //校验刀具是否存在 + String cutter = cutterLog.getCutter(); + QueryWrapper query=new QueryWrapper<>(); + query.eq(Tool.SITE,site); + query.eq(Tool.TOOL,cutter); + query.eq(Tool.STATUS, Constants.STATUS_Y); + List toolList = toolService.list(query); + if (toolList.size()<1){ + throw new BaseException("不存在的刀具"); + } + cutterLog.setSite(site); + cutterLog.setShopOrder(shopOrder); + cutterLog.setWorkCenter(workShop); + cutterLog.setSfc(sfc); + cutterLog.setOperation(operation); + cutterLog.setStepId(stepId); + cutterLog.setItem(item); + cutterLog.setResrce(resrce); + cutterLog.setCreateUser(user); + cutterLog.setCreatedDateTime(LocalDateTime.now()); + save(cutterLog); + }); + + } + + +} \ 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 92abfd5d..4f23b055 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 @@ -5,12 +5,17 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.foreverwin.mesnac.common.constant.Constants; import com.foreverwin.mesnac.common.enums.DispatchStatusEnum; import com.foreverwin.mesnac.common.enums.HandleEnum; +import com.foreverwin.mesnac.common.erp.ZprodordconfStruIn; +import com.foreverwin.mesnac.common.erp.ZprodordconfStruOut; +import com.foreverwin.mesnac.common.erp.holders.TableOfZprodordconfStruInHolder; +import com.foreverwin.mesnac.common.erp.holders.TableOfZprodordconfStruOutHolder; import com.foreverwin.mesnac.common.model.InspectionItemDetail; import com.foreverwin.mesnac.common.model.InspectionTask; import com.foreverwin.mesnac.common.service.CommonService; import com.foreverwin.mesnac.common.service.InspectionItemService; import com.foreverwin.mesnac.common.service.InspectionTaskService; import com.foreverwin.mesnac.common.service.SfcDispatchCommonService; +import com.foreverwin.mesnac.common.util.ERPAPI; import com.foreverwin.mesnac.common.util.ExceptionUtil; import com.foreverwin.mesnac.common.util.StringUtil; import com.foreverwin.mesnac.meapi.dto.SfcDto; @@ -32,6 +37,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.rmi.RemoteException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -242,4 +248,52 @@ public class PodTemplateServiceImpl implements PodTemplateService { sfcDispatchCommonService.updateSfcDispatchStatus(site,CommonMethods.getUser(),dispatchNo, DispatchStatusEnum.COMPLETE.getCode()); }); } + void senErp() throws RemoteException { + String shopOrder = "SO20210714"; + String stepId = "OP001"; + + + //请求参数 + ZprodordconfStruIn[] ins = new ZprodordconfStruIn[1]; + + ZprodordconfStruIn struIn = new ZprodordconfStruIn(); + //生产订单 + struIn.setAufnr(shopOrder); + //步骤标示 + struIn.setVornr(stepId); + struIn.setAueru("1"); + //良品数量 + struIn.setLmnga(new BigDecimal(10)); + //报废数量 + struIn.setXmnga(new BigDecimal(1)); + //机器工时 + struIn.setIsm01(new BigDecimal(1)); + //人工工时 + struIn.setIsm02(new BigDecimal(1)); + struIn.setIsm03(new BigDecimal(1)); + struIn.setIsm04(new BigDecimal(1)); + struIn.setIsm05(new BigDecimal(1)); + struIn.setIsm06(new BigDecimal(1)); + ins[0] = struIn; + TableOfZprodordconfStruInHolder inHolder = new TableOfZprodordconfStruInHolder(ins); + + //返回对象 + ZprodordconfStruOut[] outs = new ZprodordconfStruOut[1]; + + ZprodordconfStruOut struOut = new ZprodordconfStruOut(); + struOut.setAufnr(shopOrder); + struOut.setVornr(stepId); + struOut.setAueru("1"); + struOut.setLmnga(new BigDecimal(1)); + struOut.setRet(""); + struOut.setMsg(""); + outs[0] = struOut; + TableOfZprodordconfStruOutHolder outHolder = new TableOfZprodordconfStruOutHolder(outs); + + //调用WS + ERPAPI.erpWebService().zmesProdordconf(inHolder, outHolder); + String status = outHolder.value[1].getRet(); + String message = outHolder.value[1].getMsg(); + System.out.println("ERP接口返回:状态:" + status + ",消息:" + message); + } } diff --git a/production/src/main/resources/mapper/CutterLogMapper.xml b/production/src/main/resources/mapper/CutterLogMapper.xml new file mode 100644 index 00000000..4d665b5c --- /dev/null +++ b/production/src/main/resources/mapper/CutterLogMapper.xml @@ -0,0 +1,466 @@ + + + + + + + + + + + + + + + + + + + + + + + + + HANDLE, SITE, CUTTER, SHOP_ORDER, WORK_CENTER, SFC, TYPE, OPERATION, STEP_ID, ITEM, RESRCE, QTY, CREATE_USER, CREATED_DATE_TIME + + + + + + + + + + + + + + + + + + + + + + + + + INSERT INTO Z_CUTTER_LOG + + HANDLE, + SITE, + CUTTER, + SHOP_ORDER, + WORK_CENTER, + SFC, + TYPE, + OPERATION, + STEP_ID, + ITEM, + RESRCE, + QTY, + CREATE_USER, + CREATED_DATE_TIME, + VALUES + + #{handle}, + #{site}, + #{cutter}, + #{shopOrder}, + #{workCenter}, + #{sfc}, + #{type}, + #{operation}, + #{stepId}, + #{item}, + #{resrce}, + #{qty}, + #{createUser}, + #{createdDateTime}, + + + + + INSERT INTO Z_CUTTER_LOG + + + VALUES + + #{handle}, + #{site}, + #{cutter}, + #{shopOrder}, + #{workCenter}, + #{sfc}, + #{type}, + #{operation}, + #{stepId}, + #{item}, + #{resrce}, + #{qty}, + #{createUser}, + #{createdDateTime}, + + + + + + UPDATE Z_CUTTER_LOG + SITE=#{et.site}, + CUTTER=#{et.cutter}, + SHOP_ORDER=#{et.shopOrder}, + WORK_CENTER=#{et.workCenter}, + SFC=#{et.sfc}, + TYPE=#{et.type}, + OPERATION=#{et.operation}, + STEP_ID=#{et.stepId}, + ITEM=#{et.item}, + RESRCE=#{et.resrce}, + QTY=#{et.qty}, + CREATE_USER=#{et.createUser}, + CREATED_DATE_TIME=#{et.createdDateTime}, + WHERE HANDLE=#{et.handle} and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL} + + + + + UPDATE Z_CUTTER_LOG + SITE=#{et.site}, + CUTTER=#{et.cutter}, + SHOP_ORDER=#{et.shopOrder}, + WORK_CENTER=#{et.workCenter}, + SFC=#{et.sfc}, + TYPE=#{et.type}, + OPERATION=#{et.operation}, + STEP_ID=#{et.stepId}, + ITEM=#{et.item}, + RESRCE=#{et.resrce}, + QTY=#{et.qty}, + CREATE_USER=#{et.createUser}, + CREATED_DATE_TIME=#{et.createdDateTime}, + WHERE HANDLE=#{et.handle} and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL} + + + + + UPDATE Z_CUTTER_LOG + SITE=#{et.site}, + CUTTER=#{et.cutter}, + SHOP_ORDER=#{et.shopOrder}, + WORK_CENTER=#{et.workCenter}, + SFC=#{et.sfc}, + TYPE=#{et.type}, + OPERATION=#{et.operation}, + STEP_ID=#{et.stepId}, + ITEM=#{et.item}, + RESRCE=#{et.resrce}, + QTY=#{et.qty}, + CREATE_USER=#{et.createUser}, + CREATED_DATE_TIME=#{et.createdDateTime}, + + + + + HANDLE=#{ew.entity.handle} + AND SITE=#{ew.entity.site} + AND CUTTER=#{ew.entity.cutter} + AND SHOP_ORDER=#{ew.entity.shopOrder} + AND WORK_CENTER=#{ew.entity.workCenter} + AND SFC=#{ew.entity.sfc} + AND TYPE=#{ew.entity.type} + AND OPERATION=#{ew.entity.operation} + AND STEP_ID=#{ew.entity.stepId} + AND ITEM=#{ew.entity.item} + AND RESRCE=#{ew.entity.resrce} + AND QTY=#{ew.entity.qty} + AND CREATE_USER=#{ew.entity.createUser} + AND CREATED_DATE_TIME=#{ew.entity.createdDateTime} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + DELETE FROM Z_CUTTER_LOG WHERE HANDLE=#{handle} + + + + DELETE FROM Z_CUTTER_LOG + + + + + ${k} = #{cm[${k}]} + + + + + + + + DELETE FROM Z_CUTTER_LOG + + + + + HANDLE=#{ew.entity.handle} + + AND SITE=#{ew.entity.site} + AND CUTTER=#{ew.entity.cutter} + AND SHOP_ORDER=#{ew.entity.shopOrder} + AND WORK_CENTER=#{ew.entity.workCenter} + AND SFC=#{ew.entity.sfc} + AND TYPE=#{ew.entity.type} + AND OPERATION=#{ew.entity.operation} + AND STEP_ID=#{ew.entity.stepId} + AND ITEM=#{ew.entity.item} + AND RESRCE=#{ew.entity.resrce} + AND QTY=#{ew.entity.qty} + AND CREATE_USER=#{ew.entity.createUser} + AND CREATED_DATE_TIME=#{ew.entity.createdDateTime} + + + ${ew.sqlSegment} + + + + + ${ew.sqlSegment} + + + + + DELETE FROM Z_CUTTER_LOG WHERE HANDLE IN ( + #{item} + ) + + + + diff --git a/production/src/main/resources/mapper/ToolMapper.xml b/production/src/main/resources/mapper/ToolMapper.xml index 741c6f85..67462821 100644 --- a/production/src/main/resources/mapper/ToolMapper.xml +++ b/production/src/main/resources/mapper/ToolMapper.xml @@ -217,7 +217,7 @@ AND MODIFIED_DATE_TIME=#{ew.entity.modifiedDateTime} - ${ew.sqlSegment} + and ${ew.sqlSegment} 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 0f049064..95e373d0 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 @@ -16,9 +16,9 @@ import com.foreverwin.mesnac.quality.dto.SelfReportRequest; import com.foreverwin.mesnac.quality.mapper.SelfReportMapper; import com.foreverwin.mesnac.quality.model.SelfReport; import com.foreverwin.mesnac.quality.service.SelfReportService; +import com.foreverwin.modular.core.exception.BaseException; import com.foreverwin.modular.core.util.CommonMethods; import com.foreverwin.modular.core.util.FrontPage; -import com.visiprise.common.exception.BaseException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.i18n.LocaleContextHolder; import org.springframework.stereotype.Service; @@ -94,7 +94,9 @@ public class SelfReportServiceImpl extends ServiceImpl sfcData = sfcCorssMapper.querySfcData(site, LocaleContextHolder.getLocale().getLanguage(), sfcDto); - + if (sfcData == null) { + throw new BaseException("根据当前资源未找到条码[" + sfc + "]的基本信息!"); + } String operationStep = (String)sfcData.get("OPERATION_STEP"); String shopOrder = (String)sfcData.get("SHOP_ORDER"); String item = (String)sfcData.get("ITEM");