Merge branch 'master' of https://gitee.com/forever_win/mesnac.biz
commit
86e05c1728
@ -0,0 +1,15 @@
|
||||
package com.foreverwin.mesnac.anomaly.service;
|
||||
|
||||
/**
|
||||
* @Description TODO
|
||||
* @Author zhaojiawei
|
||||
* @Since 2021-07-22
|
||||
*/
|
||||
public interface AnomalyJobService {
|
||||
|
||||
/**
|
||||
* 异常计时器进程
|
||||
* @param site
|
||||
*/
|
||||
void anomalyJobProcess(String site);
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package com.foreverwin.mesnac.anomaly.util;
|
||||
|
||||
import com.foreverwin.modular.core.exception.BaseException;
|
||||
import org.apache.activemq.ActiveMQConnectionFactory;
|
||||
import org.json.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.jms.*;
|
||||
|
||||
/**
|
||||
* @Description TODO
|
||||
* @Author zhaojiawei
|
||||
* @Since 2021-07-21
|
||||
*/
|
||||
@Component
|
||||
@ConditionalOnProperty(prefix = "activeMq", value = {"enabled"}, matchIfMissing = true)
|
||||
public class ActiveMQUtil {
|
||||
@Value("${activeMq.sendWeChatMessage}")
|
||||
private String weChatUrl;
|
||||
@Value("${activeMq.queue}")
|
||||
private String queue;
|
||||
|
||||
public void wechatSendMessage(String user, String text) {
|
||||
ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(weChatUrl);
|
||||
Connection connection = null;
|
||||
Session session = null;
|
||||
MessageProducer producer = null;
|
||||
try{
|
||||
connection = factory.createConnection();
|
||||
connection.start();
|
||||
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||
Destination destination = session.createQueue(this.queue);
|
||||
producer = session.createProducer(destination);
|
||||
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
//jsonObject.put("TO_USER", user);
|
||||
jsonObject.put("TO_USER", "@all");
|
||||
jsonObject.put("CONTENT",text);
|
||||
String sendMessage = jsonObject.toString();
|
||||
TextMessage textMessage = session.createTextMessage(sendMessage);
|
||||
producer.send(textMessage);
|
||||
}catch (Exception e){
|
||||
throw new BaseException("发送消息失败"+e.getMessage());
|
||||
}finally {
|
||||
try {
|
||||
if (producer != null) {
|
||||
producer.close();
|
||||
}
|
||||
if (session != null) {
|
||||
session.close();
|
||||
}
|
||||
if (connection != null) {
|
||||
connection.close();
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,136 @@
|
||||
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.meapi.dto.SfcDto;
|
||||
import com.foreverwin.mesnac.production.model.SplitSfc;
|
||||
import com.foreverwin.mesnac.production.service.SplitSfcService;
|
||||
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;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Philip
|
||||
* @since 2021-07-20
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/Z-SPLIT-SFC")
|
||||
public class SplitSfcController {
|
||||
|
||||
@Autowired
|
||||
public SplitSfcService splitSfcService;
|
||||
|
||||
@ResponseBody
|
||||
@GetMapping("/getSfcData")
|
||||
public R getSfcData(String sfc){
|
||||
SfcDto result;
|
||||
result = splitSfcService.getSfcData(sfc);
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
@ResponseBody
|
||||
@GetMapping("/splitSfc")
|
||||
public R getSfcData(SfcDto sfcDto){
|
||||
return R.ok( splitSfcService.splitSfc(sfcDto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id查询
|
||||
*
|
||||
* @param id 主键
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@GetMapping("/{id:.+}")
|
||||
public R getSplitSfcById(@PathVariable String id) {
|
||||
return R.ok( splitSfcService.getById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询所有数据
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@GetMapping("")
|
||||
public R getSplitSfcList(SplitSfc splitSfc){
|
||||
List<SplitSfc> result;
|
||||
QueryWrapper<SplitSfc> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.setEntity(splitSfc);
|
||||
result = splitSfcService.list(queryWrapper);
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询数据
|
||||
*
|
||||
* @param frontPage 分页信息
|
||||
* @return
|
||||
*/
|
||||
@ResponseBody
|
||||
@GetMapping("/page")
|
||||
public R page(FrontPage<SplitSfc> frontPage, SplitSfc splitSfc){
|
||||
IPage result;
|
||||
QueryWrapper<SplitSfc> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.setEntity(splitSfc);
|
||||
if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) {
|
||||
//TODO modify global query
|
||||
queryWrapper.lambda().and(wrapper -> wrapper
|
||||
.like(SplitSfc::getHandle, frontPage.getGlobalQuery())
|
||||
.or().like(SplitSfc::getSite, frontPage.getGlobalQuery())
|
||||
.or().like(SplitSfc::getSfc, frontPage.getGlobalQuery())
|
||||
.or().like(SplitSfc::getSplitSfc, frontPage.getGlobalQuery())
|
||||
.or().like(SplitSfc::getRouter, frontPage.getGlobalQuery())
|
||||
.or().like(SplitSfc::getCreateUser, frontPage.getGlobalQuery())
|
||||
);
|
||||
}
|
||||
result = splitSfcService.page(frontPage.getPagePlus(), queryWrapper);
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增
|
||||
* @param splitSfc 传递的实体
|
||||
* @return null 失败 实体成功
|
||||
*/
|
||||
@PostMapping
|
||||
public R save(@RequestBody SplitSfc splitSfc) {
|
||||
return R.ok(splitSfcService.save(splitSfc));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
* @param splitSfc 传递的实体
|
||||
* @return null 失败 实体成功
|
||||
*/
|
||||
@PutMapping
|
||||
public R updateById(@RequestBody SplitSfc splitSfc) {
|
||||
return R.ok(splitSfcService.updateById(splitSfc));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据id删除对象
|
||||
* @param id 实体ID
|
||||
* @return 0 失败 1 成功
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping(method = RequestMethod.DELETE, value = "/{id:.+}")
|
||||
public R removeById(@PathVariable("id") String id){
|
||||
return R.ok(splitSfcService.removeById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除对象
|
||||
* @param ids 实体集合ID
|
||||
* @return 0 失败 1 成功
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping(method = RequestMethod.POST, value = "/delete-batch")
|
||||
public R removeByIds(List<String> ids){
|
||||
return R.ok(splitSfcService.removeByIds(ids));
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.foreverwin.mesnac.production.dto;
|
||||
|
||||
import com.foreverwin.mesnac.production.model.SplitSfc;
|
||||
|
||||
public class SplitSfcDto extends SplitSfc {
|
||||
private String ncCode;
|
||||
private String routerBo;
|
||||
private String ncQty;
|
||||
|
||||
public String getNcCode() {
|
||||
return ncCode;
|
||||
}
|
||||
|
||||
public void setNcCode(String ncCode) {
|
||||
this.ncCode = ncCode;
|
||||
}
|
||||
|
||||
public String getRouterBo() {
|
||||
return routerBo;
|
||||
}
|
||||
|
||||
public void setRouterBo(String routerBo) {
|
||||
this.routerBo = routerBo;
|
||||
}
|
||||
|
||||
public String getNcQty() {
|
||||
return ncQty;
|
||||
}
|
||||
|
||||
public void setNcQty(String ncQty) {
|
||||
this.ncQty = ncQty;
|
||||
}
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
package com.foreverwin.mesnac.production.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.foreverwin.mesnac.meapi.dto.SfcDto;
|
||||
import com.foreverwin.mesnac.production.dto.SplitSfcDto;
|
||||
import com.foreverwin.mesnac.production.model.SplitSfc;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 产品条码拆分表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author Philip
|
||||
* @since 2021-07-20
|
||||
*/
|
||||
@Repository
|
||||
public interface SplitSfcMapper extends BaseMapper<SplitSfc> {
|
||||
|
||||
SfcDto getSfcData(@Param("handle") String handle);
|
||||
|
||||
SplitSfcDto getAbnormalQty(@Param("site")String site, @Param("sfc")String sfc, @Param("operation") String operation);
|
||||
}
|
@ -0,0 +1,169 @@
|
||||
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.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 产品条码拆分表
|
||||
* </p>
|
||||
*
|
||||
* @author Philip
|
||||
* @since 2021-07-20
|
||||
*/
|
||||
|
||||
@TableName("Z_SPLIT_SFC")
|
||||
|
||||
public class SplitSfc extends Model<SplitSfc> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(value = "HANDLE", type = IdType.INPUT)
|
||||
private String handle;
|
||||
/**
|
||||
* 站点
|
||||
*/
|
||||
@TableField("SITE")
|
||||
private String site;
|
||||
/**
|
||||
* 产品条码
|
||||
*/
|
||||
@TableField("SFC")
|
||||
private String sfc;
|
||||
/**
|
||||
* 拆出的产品条码
|
||||
*/
|
||||
@TableField("SPLIT_SFC")
|
||||
private String splitSfc;
|
||||
/**
|
||||
* 拆分数量
|
||||
*/
|
||||
@TableField("SPLIT_QTY")
|
||||
private BigDecimal splitQty;
|
||||
/**
|
||||
* 处置工艺路线
|
||||
*/
|
||||
@TableField("ROUTER")
|
||||
private String router;
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@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 getSfc() {
|
||||
return sfc;
|
||||
}
|
||||
|
||||
public void setSfc(String sfc) {
|
||||
this.sfc = sfc;
|
||||
}
|
||||
|
||||
public String getSplitSfc() {
|
||||
return splitSfc;
|
||||
}
|
||||
|
||||
public void setSplitSfc(String splitSfc) {
|
||||
this.splitSfc = splitSfc;
|
||||
}
|
||||
|
||||
public BigDecimal getSplitQty() {
|
||||
return splitQty;
|
||||
}
|
||||
|
||||
public void setSplitQty(BigDecimal splitQty) {
|
||||
this.splitQty = splitQty;
|
||||
}
|
||||
|
||||
public String getRouter() {
|
||||
return router;
|
||||
}
|
||||
|
||||
public void setRouter(String router) {
|
||||
this.router = router;
|
||||
}
|
||||
|
||||
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 SFC = "SFC";
|
||||
|
||||
public static final String SPLIT_SFC = "SPLIT_SFC";
|
||||
|
||||
public static final String SPLIT_QTY = "SPLIT_QTY";
|
||||
|
||||
public static final String ROUTER = "ROUTER";
|
||||
|
||||
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 "SplitSfc{" +
|
||||
"handle = " + handle +
|
||||
", site = " + site +
|
||||
", sfc = " + sfc +
|
||||
", splitSfc = " + splitSfc +
|
||||
", splitQty = " + splitQty +
|
||||
", router = " + router +
|
||||
", createUser = " + createUser +
|
||||
", createdDateTime = " + createdDateTime +
|
||||
"}";
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package com.foreverwin.mesnac.production.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.foreverwin.mesnac.meapi.dto.SfcDto;
|
||||
import com.foreverwin.mesnac.production.model.SplitSfc;
|
||||
import com.foreverwin.modular.core.util.FrontPage;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 产品条码拆分表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author Philip
|
||||
* @since 2021-07-20
|
||||
*/
|
||||
public interface SplitSfcService extends IService<SplitSfc> {
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
* @param frontPage
|
||||
* @return
|
||||
*/
|
||||
IPage<SplitSfc> selectPage(FrontPage<SplitSfc> frontPage, SplitSfc splitSfc);
|
||||
|
||||
List<SplitSfc> selectList(SplitSfc splitSfc);
|
||||
|
||||
SfcDto getSfcData(String sfc);
|
||||
|
||||
SplitSfc splitSfc(SfcDto sfcDto);
|
||||
}
|
@ -0,0 +1,166 @@
|
||||
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.foreverwin.mesnac.common.enums.HandleEnum;
|
||||
import com.foreverwin.mesnac.common.util.ExceptionUtil;
|
||||
import com.foreverwin.mesnac.common.util.StringUtil;
|
||||
import com.foreverwin.mesnac.meapi.dto.SfcDto;
|
||||
import com.foreverwin.mesnac.production.dto.SplitSfcDto;
|
||||
import com.foreverwin.mesnac.production.mapper.SplitSfcMapper;
|
||||
import com.foreverwin.mesnac.production.model.SplitSfc;
|
||||
import com.foreverwin.mesnac.production.service.SplitSfcService;
|
||||
import com.foreverwin.modular.core.exception.BaseException;
|
||||
import com.foreverwin.modular.core.meext.MEServices;
|
||||
import com.foreverwin.modular.core.util.CommonMethods;
|
||||
import com.foreverwin.modular.core.util.FrontPage;
|
||||
import com.sap.me.nonconformance.*;
|
||||
import com.sap.me.production.SplitSerializeServiceInterface;
|
||||
import com.sap.me.production.SplitSfcDetail;
|
||||
import com.sap.me.production.SplitSfcRequest;
|
||||
import com.sap.me.production.SplitSfcResponse;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
/**
|
||||
* <p>
|
||||
* 产品条码拆分表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author Philip
|
||||
* @since 2021-07-20
|
||||
*/
|
||||
@Service
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public class SplitSfcServiceImpl extends ServiceImpl<SplitSfcMapper, SplitSfc> implements SplitSfcService {
|
||||
|
||||
|
||||
@Autowired
|
||||
private SplitSfcMapper splitSfcMapper;
|
||||
|
||||
@Override
|
||||
public IPage<SplitSfc> selectPage(FrontPage<SplitSfc> frontPage, SplitSfc splitSfc) {
|
||||
QueryWrapper<SplitSfc> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.setEntity(splitSfc);
|
||||
return super.page(frontPage.getPagePlus(), queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SplitSfc> selectList(SplitSfc splitSfc) {
|
||||
QueryWrapper<SplitSfc> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.setEntity(splitSfc);
|
||||
return super.list(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SfcDto getSfcData(String sfc) {
|
||||
String site = CommonMethods.getSite();
|
||||
String handle = HandleEnum.SFC.getHandle(site, sfc);
|
||||
//根据sfc找工单等信息
|
||||
SfcDto sfcData = splitSfcMapper.getSfcData(handle);
|
||||
if (sfcData==null){
|
||||
throw new BaseException("未找到产品条码信息");
|
||||
}
|
||||
String operation = sfcData.getOperation();
|
||||
//查询质量异常记录数量
|
||||
SplitSfcDto sfcDto=splitSfcMapper.getAbnormalQty(site,sfc,operation);
|
||||
if (sfcDto==null){
|
||||
throw new BaseException("未找到方案确认的质量异常");
|
||||
}
|
||||
sfcData.setQty(Double.valueOf(sfcDto.getNcQty()));
|
||||
return sfcData;
|
||||
}
|
||||
@Override
|
||||
public SplitSfc splitSfc(SfcDto sfcDto){
|
||||
String site = CommonMethods.getSite();
|
||||
String sfc = sfcDto.getSfc();
|
||||
String handle = HandleEnum.SFC.getHandle(site, sfc);
|
||||
BigDecimal splitQty = new BigDecimal(sfcDto.getQty());
|
||||
|
||||
//根据sfc找工单等信息
|
||||
SfcDto sfcData = splitSfcMapper.getSfcData(handle);
|
||||
String operation = sfcData.getOperation();
|
||||
if (sfcData==null){
|
||||
throw new BaseException("未找到产品条码信息");
|
||||
}
|
||||
//查询质量异常记录数量 处置工艺路线及不良代码
|
||||
SplitSfcDto splitSfcDto=splitSfcMapper.getAbnormalQty(site,sfc,operation);
|
||||
String routerBo = splitSfcDto.getRouterBo();
|
||||
String ncCode = splitSfcDto.getNcCode();
|
||||
if (StringUtil.isBlank(routerBo)){
|
||||
throw new BaseException("异常处置未选择处置工艺路线");
|
||||
}
|
||||
if (StringUtil.isBlank(ncCode)){
|
||||
throw new BaseException("异常处置未选择不良代码");
|
||||
}
|
||||
BigDecimal sfcQty = new BigDecimal(sfcData.getQty());
|
||||
if (new BigDecimal(splitSfcDto.getNcQty()).compareTo(sfcQty)>=0){
|
||||
throw new BaseException("质量异常数量不小于于产品条码的数量,不能拆分");
|
||||
}
|
||||
if (splitQty.compareTo(new BigDecimal(splitSfcDto.getNcQty()))>0){
|
||||
throw new BaseException("拆分数量大于质量异常数量的数量,不能拆分");
|
||||
}
|
||||
String[] splitNcCode = ncCode.split(",");
|
||||
|
||||
SplitSfcRequest splitSfcRequest=new SplitSfcRequest();
|
||||
try {
|
||||
SplitSerializeServiceInterface splitService = MEServices.create("com.sap.me.production", "SplitSerializeService",site);
|
||||
NCProductionServiceInterface ncProductionService = MEServices.create("com.sap.me.nonconformance", "NCProductionService",site);
|
||||
//拆sfc
|
||||
List<SplitSfcDetail> newList=new ArrayList<>();
|
||||
SplitSfcDetail splitDetail=new SplitSfcDetail();
|
||||
splitDetail.setQuantity(splitQty);
|
||||
newList.add(splitDetail);
|
||||
splitSfcRequest.setNewSfcList(newList);
|
||||
splitSfcRequest.setSfcRef(HandleEnum.SFC.getHandle(site,sfc));
|
||||
Collection<SplitSfcResponse> splitSfcResponses = splitService.splitSfc(splitSfcRequest);
|
||||
SplitSfcResponse splitSfcResponse = splitSfcResponses.iterator().next();
|
||||
String newSfcRef = splitSfcResponse.getNewSfcRef();
|
||||
//记录不合格
|
||||
CreateNCRequest createNCRequest=new CreateNCRequest();
|
||||
createNCRequest.setQty(splitQty);
|
||||
createNCRequest.setSfcRef(newSfcRef);
|
||||
ProductionContext productionContext=new ProductionContext();
|
||||
StepIdentifier stepIdentifier=new StepIdentifier();
|
||||
stepIdentifier.setStepId(sfcData.getStepId());
|
||||
stepIdentifier.setOperationId(sfcData.getOperation());
|
||||
productionContext.setStepIdentifier(stepIdentifier);
|
||||
createNCRequest.setProdCtx(productionContext);
|
||||
createNCRequest.setNcCodeRef(HandleEnum.NC_CODE.getHandle(site,splitNcCode[0]));
|
||||
ncProductionService.createNC(createNCRequest);
|
||||
//不合格处置特殊工艺路线
|
||||
DispositionMultipleSfcsRequest dispositionSfcsRequest=new DispositionMultipleSfcsRequest();
|
||||
List<String> sfcs=new ArrayList<>();
|
||||
sfcs.add(newSfcRef);
|
||||
dispositionSfcsRequest.setSfcs(sfcs);
|
||||
dispositionSfcsRequest.setBypassStepValidation(true);
|
||||
DispositionSelection dispositionSelection=new DispositionSelection();
|
||||
dispositionSelection.setRouterRef(routerBo);
|
||||
dispositionSfcsRequest.setDispositionSelection(dispositionSelection);
|
||||
ncProductionService.dispositionMultipleSfcs(dispositionSfcsRequest);
|
||||
SplitSfc splitSfc=new SplitSfc();
|
||||
String newSfc = StringUtil.trimHandle(newSfcRef);
|
||||
splitSfc.setHandle(HandleEnum.SPLIT_SFC.getHandle(site,newSfc));
|
||||
splitSfc.setSite(site);
|
||||
splitSfc.setSfc(sfc);
|
||||
splitSfc.setSplitSfc(newSfc);
|
||||
splitSfc.setSplitQty(splitQty);
|
||||
splitSfc.setRouter(StringUtil.trimHandle(routerBo));
|
||||
splitSfc.setCreateUser(CommonMethods.getUser());
|
||||
splitSfc.setCreatedDateTime(LocalDateTime.now());
|
||||
save(splitSfc);
|
||||
return splitSfc;
|
||||
} catch (Exception e) {
|
||||
ExceptionUtil.throwException(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,385 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.foreverwin.mesnac.production.mapper.SplitSfcMapper">
|
||||
|
||||
<!-- 通用查询映射结果 -->
|
||||
<resultMap id="BaseResultMap" type="com.foreverwin.mesnac.production.model.SplitSfc">
|
||||
<id column="HANDLE" property="handle" />
|
||||
<result column="SITE" property="site" />
|
||||
<result column="SFC" property="sfc" />
|
||||
<result column="SPLIT_SFC" property="splitSfc" />
|
||||
<result column="SPLIT_QTY" property="splitQty" />
|
||||
<result column="ROUTER" property="router" />
|
||||
<result column="CREATE_USER" property="createUser" />
|
||||
<result column="CREATED_DATE_TIME" property="createdDateTime" />
|
||||
</resultMap>
|
||||
|
||||
<!-- 通用查询结果列 -->
|
||||
<sql id="Base_Column_List">
|
||||
HANDLE, SITE, SFC, SPLIT_SFC, SPLIT_QTY, ROUTER, CREATE_USER, CREATED_DATE_TIME
|
||||
</sql>
|
||||
|
||||
<!-- BaseMapper标准查询/修改/删除 -->
|
||||
<select id="selectById" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"></include> FROM Z_SPLIT_SFC WHERE HANDLE=#{handle}
|
||||
</select>
|
||||
|
||||
<select id="selectByMap" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"></include>
|
||||
FROM Z_SPLIT_SFC
|
||||
<if test="cm!=null and !cm.isEmpty">
|
||||
<where>
|
||||
<foreach collection="cm.keys" item="k" separator="AND">
|
||||
<if test="cm[k] != null">
|
||||
${k} = #{cm[${k}]}
|
||||
</if>
|
||||
</foreach>
|
||||
</where>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectBatchIds" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"></include>
|
||||
FROM Z_SPLIT_SFC WHERE HANDLE IN (
|
||||
<foreach item="item" index="index" collection="coll" separator=",">#{item}
|
||||
</foreach>)
|
||||
</select>
|
||||
|
||||
<select id="selectOne" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"></include> FROM Z_SPLIT_SFC
|
||||
<where>
|
||||
<if test="ew.entity.handle!=null">
|
||||
HANDLE=#{ew.handle}
|
||||
</if>
|
||||
<if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
|
||||
<if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
|
||||
<if test="ew.entity.splitSfc!=null"> AND SPLIT_SFC=#{ew.entity.splitSfc}</if>
|
||||
<if test="ew.entity.splitQty!=null"> AND SPLIT_QTY=#{ew.entity.splitQty}</if>
|
||||
<if test="ew.entity.router!=null"> AND ROUTER=#{ew.entity.router}</if>
|
||||
<if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
|
||||
<if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectCount" resultType="Integer">
|
||||
SELECT COUNT(1) FROM Z_SPLIT_SFC
|
||||
<where>
|
||||
<if test="ew!=null">
|
||||
<if test="ew.entity!=null">
|
||||
<if test="ew.entity.handle!=null">
|
||||
HANDLE=#{ew.entity.handle}
|
||||
</if>
|
||||
<if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
|
||||
<if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
|
||||
<if test="ew.entity.splitSfc!=null"> AND SPLIT_SFC=#{ew.entity.splitSfc}</if>
|
||||
<if test="ew.entity.splitQty!=null"> AND SPLIT_QTY=#{ew.entity.splitQty}</if>
|
||||
<if test="ew.entity.router!=null"> AND ROUTER=#{ew.entity.router}</if>
|
||||
<if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
|
||||
<if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
|
||||
</if>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</if>
|
||||
</where>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectList" resultMap="BaseResultMap">
|
||||
SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_SPLIT_SFC
|
||||
<where>
|
||||
<if test="ew!=null">
|
||||
<if test="ew.entity!=null">
|
||||
<if test="ew.entity.handle!=null">
|
||||
HANDLE=#{ew.entity.handle}
|
||||
</if>
|
||||
<if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
|
||||
<if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
|
||||
<if test="ew.entity.splitSfc!=null"> AND SPLIT_SFC=#{ew.entity.splitSfc}</if>
|
||||
<if test="ew.entity.splitQty!=null"> AND SPLIT_QTY=#{ew.entity.splitQty}</if>
|
||||
<if test="ew.entity.router!=null"> AND ROUTER=#{ew.entity.router}</if>
|
||||
<if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
|
||||
<if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
|
||||
</if>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</if>
|
||||
</where>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectMaps" resultType="HashMap">
|
||||
SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_SPLIT_SFC
|
||||
<where>
|
||||
<if test="ew!=null">
|
||||
<if test="ew.entity!=null">
|
||||
<if test="ew.entity.handle!=null">
|
||||
HANDLE=#{ew.entity.handle}
|
||||
</if>
|
||||
<if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
|
||||
<if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
|
||||
<if test="ew.entity.splitSfc!=null"> AND SPLIT_SFC=#{ew.entity.splitSfc}</if>
|
||||
<if test="ew.entity.splitQty!=null"> AND SPLIT_QTY=#{ew.entity.splitQty}</if>
|
||||
<if test="ew.entity.router!=null"> AND ROUTER=#{ew.entity.router}</if>
|
||||
<if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
|
||||
<if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
|
||||
</if>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</if>
|
||||
</where>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectObjs" resultType="Object">
|
||||
SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_SPLIT_SFC
|
||||
<where>
|
||||
<if test="ew!=null">
|
||||
<if test="ew.entity!=null">
|
||||
<if test="ew.entity.handle!=null">
|
||||
HANDLE=#{ew.entity.handle}
|
||||
</if>
|
||||
<if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
|
||||
<if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
|
||||
<if test="ew.entity.splitSfc!=null"> AND SPLIT_SFC=#{ew.entity.splitSfc}</if>
|
||||
<if test="ew.entity.splitQty!=null"> AND SPLIT_QTY=#{ew.entity.splitQty}</if>
|
||||
<if test="ew.entity.router!=null"> AND ROUTER=#{ew.entity.router}</if>
|
||||
<if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
|
||||
<if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
|
||||
</if>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</if>
|
||||
</where>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectPage" resultMap="BaseResultMap">
|
||||
SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_SPLIT_SFC
|
||||
<where>
|
||||
<if test="ew!=null">
|
||||
<if test="ew.entity!=null">
|
||||
<if test="ew.entity.handle!=null">
|
||||
HANDLE=#{ew.entity.handle}
|
||||
</if>
|
||||
<if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
|
||||
<if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
|
||||
<if test="ew.entity.splitSfc!=null"> AND SPLIT_SFC=#{ew.entity.splitSfc}</if>
|
||||
<if test="ew.entity.splitQty!=null"> AND SPLIT_QTY=#{ew.entity.splitQty}</if>
|
||||
<if test="ew.entity.router!=null"> AND ROUTER=#{ew.entity.router}</if>
|
||||
<if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
|
||||
<if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
|
||||
</if>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</if>
|
||||
</where>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectMapsPage" resultType="HashMap">
|
||||
SELECT <choose><when test="ew != null and ew.sqlSelect != null">${ew.sqlSelect}</when><otherwise><include refid="Base_Column_List"></include></otherwise></choose> FROM Z_SPLIT_SFC
|
||||
<where>
|
||||
<if test="ew!=null">
|
||||
<if test="ew.entity!=null">
|
||||
<if test="ew.entity.handle!=null">
|
||||
HANDLE=#{ew.entity.handle}
|
||||
</if>
|
||||
<if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
|
||||
<if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
|
||||
<if test="ew.entity.splitSfc!=null"> AND SPLIT_SFC=#{ew.entity.splitSfc}</if>
|
||||
<if test="ew.entity.splitQty!=null"> AND SPLIT_QTY=#{ew.entity.splitQty}</if>
|
||||
<if test="ew.entity.router!=null"> AND ROUTER=#{ew.entity.router}</if>
|
||||
<if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
|
||||
<if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
|
||||
</if>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</if>
|
||||
</where>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<insert id="insert" parameterType="com.foreverwin.mesnac.production.model.SplitSfc">
|
||||
INSERT INTO Z_SPLIT_SFC
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
HANDLE,
|
||||
<if test="site!=null">SITE,</if>
|
||||
<if test="sfc!=null">SFC,</if>
|
||||
<if test="splitSfc!=null">SPLIT_SFC,</if>
|
||||
<if test="splitQty!=null">SPLIT_QTY,</if>
|
||||
<if test="router!=null">ROUTER,</if>
|
||||
<if test="createUser!=null">CREATE_USER,</if>
|
||||
<if test="createdDateTime!=null">CREATED_DATE_TIME,</if>
|
||||
</trim> VALUES
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
#{handle},
|
||||
<if test="site!=null">#{site},</if>
|
||||
<if test="sfc!=null">#{sfc},</if>
|
||||
<if test="splitSfc!=null">#{splitSfc},</if>
|
||||
<if test="splitQty!=null">#{splitQty},</if>
|
||||
<if test="router!=null">#{router},</if>
|
||||
<if test="createUser!=null">#{createUser},</if>
|
||||
<if test="createdDateTime!=null">#{createdDateTime},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<insert id="insertAllColumn" parameterType="com.foreverwin.mesnac.production.model.SplitSfc">
|
||||
INSERT INTO Z_SPLIT_SFC
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<include refid="Base_Column_List"></include>
|
||||
</trim> VALUES
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
#{handle},
|
||||
#{site},
|
||||
#{sfc},
|
||||
#{splitSfc},
|
||||
#{splitQty},
|
||||
#{router},
|
||||
#{createUser},
|
||||
#{createdDateTime},
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
||||
<update id="updateById">
|
||||
UPDATE Z_SPLIT_SFC <trim prefix="SET" suffixOverrides=",">
|
||||
<if test="et.site!=null">SITE=#{et.site},</if>
|
||||
<if test="et.sfc!=null">SFC=#{et.sfc},</if>
|
||||
<if test="et.splitSfc!=null">SPLIT_SFC=#{et.splitSfc},</if>
|
||||
<if test="et.splitQty!=null">SPLIT_QTY=#{et.splitQty},</if>
|
||||
<if test="et.router!=null">ROUTER=#{et.router},</if>
|
||||
<if test="et.createUser!=null">CREATE_USER=#{et.createUser},</if>
|
||||
<if test="et.createdDateTime!=null">CREATED_DATE_TIME=#{et.createdDateTime},</if>
|
||||
</trim> WHERE HANDLE=#{et.handle} <if test="et instanceof java.util.Map"><if test="et.MP_OPTLOCK_VERSION_ORIGINAL!=null">and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL}</if></if>
|
||||
</update>
|
||||
|
||||
|
||||
<update id="updateAllColumnById">
|
||||
UPDATE Z_SPLIT_SFC <trim prefix="SET" suffixOverrides=",">
|
||||
SITE=#{et.site},
|
||||
SFC=#{et.sfc},
|
||||
SPLIT_SFC=#{et.splitSfc},
|
||||
SPLIT_QTY=#{et.splitQty},
|
||||
ROUTER=#{et.router},
|
||||
CREATE_USER=#{et.createUser},
|
||||
CREATED_DATE_TIME=#{et.createdDateTime},
|
||||
</trim> WHERE HANDLE=#{et.handle} <if test="et instanceof java.util.Map"><if test="et.MP_OPTLOCK_VERSION_ORIGINAL!=null">and ${et.MP_OPTLOCK_VERSION_COLUMN}=#{et.MP_OPTLOCK_VERSION_ORIGINAL}</if></if>
|
||||
</update>
|
||||
|
||||
|
||||
<update id="update">
|
||||
UPDATE Z_SPLIT_SFC <trim prefix="SET" suffixOverrides=",">
|
||||
<if test="et.site!=null">SITE=#{et.site},</if>
|
||||
<if test="et.sfc!=null">SFC=#{et.sfc},</if>
|
||||
<if test="et.splitSfc!=null">SPLIT_SFC=#{et.splitSfc},</if>
|
||||
<if test="et.splitQty!=null">SPLIT_QTY=#{et.splitQty},</if>
|
||||
<if test="et.router!=null">ROUTER=#{et.router},</if>
|
||||
<if test="et.createUser!=null">CREATE_USER=#{et.createUser},</if>
|
||||
<if test="et.createdDateTime!=null">CREATED_DATE_TIME=#{et.createdDateTime},</if>
|
||||
</trim>
|
||||
<where>
|
||||
<if test="ew!=null">
|
||||
<if test="ew.entity!=null">
|
||||
HANDLE=#{ew.entity.handle}
|
||||
<if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
|
||||
<if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
|
||||
<if test="ew.entity.splitSfc!=null"> AND SPLIT_SFC=#{ew.entity.splitSfc}</if>
|
||||
<if test="ew.entity.splitQty!=null"> AND SPLIT_QTY=#{ew.entity.splitQty}</if>
|
||||
<if test="ew.entity.router!=null"> AND ROUTER=#{ew.entity.router}</if>
|
||||
<if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
|
||||
<if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
|
||||
</if>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</if>
|
||||
</where>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</update>
|
||||
|
||||
<delete id="deleteById">
|
||||
DELETE FROM Z_SPLIT_SFC WHERE HANDLE=#{handle}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByMap">
|
||||
DELETE FROM Z_SPLIT_SFC
|
||||
<if test="cm!=null and !cm.isEmpty">
|
||||
<where>
|
||||
<foreach collection="cm.keys" item="k" separator="AND">
|
||||
<if test="cm[k] != null">
|
||||
${k} = #{cm[${k}]}
|
||||
</if>
|
||||
</foreach>
|
||||
</where>
|
||||
</if>
|
||||
</delete>
|
||||
|
||||
<delete id="delete">
|
||||
DELETE FROM Z_SPLIT_SFC
|
||||
<where>
|
||||
<if test="ew!=null">
|
||||
<if test="ew.entity!=null">
|
||||
<if test="ew.entity.handle!=null">
|
||||
HANDLE=#{ew.entity.handle}
|
||||
</if>
|
||||
<if test="ew.entity.site!=null"> AND SITE=#{ew.entity.site}</if>
|
||||
<if test="ew.entity.sfc!=null"> AND SFC=#{ew.entity.sfc}</if>
|
||||
<if test="ew.entity.splitSfc!=null"> AND SPLIT_SFC=#{ew.entity.splitSfc}</if>
|
||||
<if test="ew.entity.splitQty!=null"> AND SPLIT_QTY=#{ew.entity.splitQty}</if>
|
||||
<if test="ew.entity.router!=null"> AND ROUTER=#{ew.entity.router}</if>
|
||||
<if test="ew.entity.createUser!=null"> AND CREATE_USER=#{ew.entity.createUser}</if>
|
||||
<if test="ew.entity.createdDateTime!=null"> AND CREATED_DATE_TIME=#{ew.entity.createdDateTime}</if>
|
||||
</if>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</if>
|
||||
</where>
|
||||
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">
|
||||
${ew.sqlSegment}
|
||||
</if>
|
||||
</delete>
|
||||
|
||||
<delete id="deleteBatchIds">
|
||||
DELETE FROM Z_SPLIT_SFC WHERE HANDLE IN (
|
||||
<foreach item="item" index="index" collection="coll" separator=",">#{item}
|
||||
</foreach>)
|
||||
</delete>
|
||||
<!-- BaseMapper标准查询/修改/删除 -->
|
||||
<select id="getSfcData" resultType="com.foreverwin.mesnac.meapi.dto.SfcDto">
|
||||
SELECT SO.SHOP_ORDER,cf.VALUE WORK_ORDER,OP.OPERATION,ss.STEP_ID,s.qty FROM SFC S
|
||||
JOIN SHOP_ORDER SO ON so.HANDLE=S.SHOP_ORDER_BO
|
||||
LEFT JOIN CUSTOM_FIELDS CF ON cf.HANDLE=s.SHOP_ORDER_BO AND CF."ATTRIBUTE"='WORK_ORDER'
|
||||
JOIN SFC_ROUTING SR ON s.HANDLE=sr.SFC_BO
|
||||
JOIN SFC_ROUTER SR2 ON SR.HANDLE =SR2.SFC_ROUTING_BO AND SR2.IN_USE = 'true'
|
||||
JOIN SFC_STEP SS ON SR2.HANDLE =SS.SFC_ROUTER_BO AND (SS.QTY_IN_QUEUE>0 or SS.QTY_IN_WORK>0)
|
||||
JOIN OPERATION OP ON 'OperationBO:'|| OP.SITE ||','|| OP.OPERATION||',#'=SS.OPERATION_BO
|
||||
WHERE S.HANDLE=#{handle}
|
||||
</select>
|
||||
<select id="getAbnormalQty" resultType="com.foreverwin.mesnac.production.dto.SplitSfcDto">
|
||||
SELECT zab.NC_QTY,zsbd.ROUTER_BO,zab.NC_CODE FROM Z_ABNORMAL_BILL zab
|
||||
JOIN Z_ABNORMAL_BILL_DISPOSE zsbd ON zab.HANDLE=ZSBD.ABNORMAL_BILL_BO
|
||||
WHERE ZAB.SFC=#{sfc} AND zab.SITE=#{site} AND ZAB.OPERATION=#{operation} AND zab.STATUS='F' AND zab."TYPE"='Z'
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -0,0 +1,43 @@
|
||||
package com.foreverwin.mesnac.quartz.job;
|
||||
|
||||
import com.foreverwin.mesnac.anomaly.service.AnomalyJobService;
|
||||
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 zhaojiawei
|
||||
* @Since 2021-07-22
|
||||
*/
|
||||
@DisallowConcurrentExecution
|
||||
public class AnomalyJob implements Job {
|
||||
private static final String SITE_UPPERCASE = "SITE";
|
||||
private static final String SITE_LOWERCASE = "site";
|
||||
|
||||
@Autowired
|
||||
private AnomalyJobService anomalyJobService;
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
anomalyJobService.anomalyJobProcess(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;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue