SFC跟踪功能

Leon 4 years ago
parent ddcaa726d2
commit e2775bc7d0

@ -7,14 +7,7 @@ package com.foreverwin.mesnac.common.constant;
* @since 2021-05-12
*/
public class CustomFieldConstant {
/**
*
*/
public static final String ITEM_CUSTOM_FIELD_ACCESSORY_TYPE = "ACCESSORY_TYPE";//辅料类型
/**
*
*/
/**
*
@ -26,34 +19,30 @@ public class CustomFieldConstant {
*/
public static final String WORK_CENTER_CUSTOM_FIELD_PROCESS_CONTROL= "PROCESS_CONTROL";//工控程序
/**
*
*/
public static final String BOM_COMPONENT_CUSTOM_FIELD_STEP_ID = "STEP_ID";//步骤
//工厂
public static String SO_FACTORY = "FACTORY";
public static final String SO_FACTORY = "FACTORY";
//工作指令
public static String SO_WORK_ORDER = "WORK_ORDER";
public static final String SO_WORK_ORDER = "WORK_ORDER";
//项目号
public static String SO_ITEM_NUMER = "ITEM_NUMBER";
public static final String SO_ITEM_NUMBER = "ITEM_NUMBER";
//工单类型
public static String SO_SHOP_ORDER_TYPE = "SHOP_ORDER_TYPE";
public static final String SO_SHOP_ORDER_TYPE = "SHOP_ORDER_TYPE";
//产品类型
public static String SO_PRODUCT_CATEGORY = "PRODUCT_CATEGORY";
public static final String SO_PRODUCT_CATEGORY = "PRODUCT_CATEGORY";
//工单备注
public static String SO_COMMENTS = "COMMENTS";
public static final String SO_COMMENTS = "COMMENTS";
//是否开始生产
public static String SO_START_PRODUCT = "START_PRODUCT";
public static final String SO_START_PRODUCT = "START_PRODUCT";
//**************************************************************************************
public static String ROUTER_OP_PROD_TIME = "PROD_TIME";
public static String ROUTER_OP_OUT_SOURCE = "OUT_SOURCE";
public static final String ROUTER_OP_PROD_TIME = "PROD_TIME";
public static final String ROUTER_OP_OUT_SOURCE = "OUT_SOURCE";
//**************************************************************************************
public static String BOM_COM_STEP_ID = "STEP_ID";
public static final String BOM_COM_STEP_ID = "STEP_ID";
public static final String SFC_DATA_LOCATION = "LOCATION";
}

@ -26,6 +26,8 @@ public enum HandleEnum {
/**车间作业控制*/
SFC_BOM( "SFCBOMBO:", "SFCBOMBO:{0}" ),
SFC_DATA( "SFCDataBO:", "SFCDataBO:{0},{1}" ),
/**物料*/
ITEM( "ItemBO:", "ItemBO:{0},{1},{2}" ),

@ -463,7 +463,7 @@ public class InterfaceServiceImpl implements InterfaceService {
if (StringUtil.notBlank(shopOrderSyncRequest.getITEM_NUMBER())) {
customFields = new CustomFields();
customFields.setHandle(shopOrderBo);
customFields.setAttribute(CustomFieldConstant.SO_ITEM_NUMER);
customFields.setAttribute(CustomFieldConstant.SO_ITEM_NUMBER);
customFields.setValue(shopOrderSyncRequest.getITEM_NUMBER());
customFieldsList.add(customFields);
}

@ -1,58 +0,0 @@
package com.foreverwin.mesnac.meapi.service.impl;
import com.foreverwin.mesnac.meapi.service.SfcService;
import com.foreverwin.mesnac.meapi.service.WorkCenterService;
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.SfcData;
import com.foreverwin.mesnac.meapi.mapper.SfcDataMapper;
import com.foreverwin.mesnac.meapi.service.SfcDataService;
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;
import java.util.logging.Handler;
/**
* <p>
*
* </p>
*
* @author Leon.L
* @since 2021-06-29
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class SfcDataServiceImpl extends ServiceImpl<SfcDataMapper, SfcData> implements SfcDataService {
@Autowired
private SfcService sfcService;
@Autowired
private SfcDataMapper sfcDataMapper;
@Autowired
private WorkCenterService workCenterService;
@Override
public IPage<SfcData> selectPage(FrontPage<SfcData> frontPage, SfcData sfcData) {
QueryWrapper<SfcData> queryWrapper = new QueryWrapper<>();
queryWrapper.setEntity(sfcData);
return super.page(frontPage.getPagePlus(), queryWrapper);
}
@Override
public List<SfcData> selectList(SfcData sfcData) {
QueryWrapper<SfcData> queryWrapper = new QueryWrapper<>();
queryWrapper.setEntity(sfcData);
return super.list(queryWrapper);
}
@Override
public void saveSfcLocation(String site, String sfc, String location) {
}
}

@ -11,8 +11,8 @@ 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.SfcDataService;
import com.foreverwin.mesnac.meapi.model.SfcData;
import com.foreverwin.mesnac.production.service.SfcDataService;
import com.foreverwin.mesnac.production.model.SfcData;
import java.util.List;
/**
@ -135,7 +135,8 @@ public class SfcDataController {
}
String site = CommonMethods.getSite();
sfcDataService.saveSfcLocation(site, sfc, location);
String user = CommonMethods.getUser();
sfcDataService.saveSfcLocation(site, user, sfc, location);
} catch (Exception e) {
return R.failed(e.getMessage());
}

@ -1,6 +1,6 @@
package com.foreverwin.mesnac.meapi.mapper;
package com.foreverwin.mesnac.production.mapper;
import com.foreverwin.mesnac.meapi.model.SfcData;
import com.foreverwin.mesnac.production.model.SfcData;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;

@ -1,4 +1,4 @@
package com.foreverwin.mesnac.meapi.model;
package com.foreverwin.mesnac.production.model;
import java.io.Serializable;
@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
/**
* <p>

@ -1,7 +1,7 @@
package com.foreverwin.mesnac.meapi.service;
package com.foreverwin.mesnac.production.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.foreverwin.mesnac.meapi.model.SfcData;
import com.foreverwin.mesnac.production.model.SfcData;
import com.baomidou.mybatisplus.extension.service.IService;
import com.foreverwin.modular.core.util.FrontPage;
@ -33,5 +33,5 @@ public interface SfcDataService extends IService<SfcData> {
* @param sfc
* @param location
*/
void saveSfcLocation(String site, String sfc, String location);
void saveSfcLocation(String site, String user, String sfc, String location);
}

@ -0,0 +1,114 @@
package com.foreverwin.mesnac.production.service.impl;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.foreverwin.mesnac.common.constant.CustomFieldConstant;
import com.foreverwin.mesnac.common.enums.HandleEnum;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.foreverwin.mesnac.meapi.model.WorkCenter;
import com.foreverwin.mesnac.meapi.service.SfcService;
import com.foreverwin.mesnac.meapi.service.WorkCenterService;
import com.foreverwin.modular.core.exception.BusinessException;
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.production.model.SfcData;
import com.foreverwin.mesnac.production.mapper.SfcDataMapper;
import com.foreverwin.mesnac.production.service.SfcDataService;
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.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
*
* </p>
*
* @author Leon.L
* @since 2021-06-29
*/
@Service
@Transactional(rollbackFor = Exception.class)
public class SfcDataServiceImpl extends ServiceImpl<SfcDataMapper, SfcData> implements SfcDataService {
@Autowired
private SfcService sfcService;
@Autowired
private SfcDataMapper sfcDataMapper;
@Autowired
private WorkCenterService workCenterService;
@Override
public IPage<SfcData> selectPage(FrontPage<SfcData> frontPage, SfcData sfcData) {
QueryWrapper<SfcData> queryWrapper = new QueryWrapper<>();
queryWrapper.setEntity(sfcData);
return super.page(frontPage.getPagePlus(), queryWrapper);
}
@Override
public List<SfcData> selectList(SfcData sfcData) {
QueryWrapper<SfcData> queryWrapper = new QueryWrapper<>();
queryWrapper.setEntity(sfcData);
return super.list(queryWrapper);
}
@Override
public void saveSfcLocation(String site, String user, String sfc, String location) {
String sfcBo = HandleEnum.SFC.getHandle(site, sfc);
Sfc sfcModel = sfcService.getById(sfcBo);
if (sfcModel == null) {
throw BusinessException.build("SFC【" +sfc+"】不存在");
}
//位置所录入的字符串“_”前的字符为车间代码
if (!location.contains("_")) {
throw BusinessException.build("输入的位置【" +location+ "】格式不正确必须包含符号【_】,并且符号之前必须是车间代码");
}
String workCenterBo = HandleEnum.WORK_CENTER.getHandle(site, location.split("_")[0]);
WorkCenter workCenterModel = workCenterService.getById(workCenterBo);
if (workCenterModel == null || !"LEVEL4".equals(workCenterModel.getWcCategory())) {
throw BusinessException.build("位置【" +location+"】中符号【_】之前的不是车间代码");
}
LocalDateTime nowDate = LocalDateTime.now();
//查询是否存在
Map<String, Object> map = new HashMap<>();
map.put(SfcData.SFC_BO, sfcBo);
map.put(SfcData.DATA_FIELD, CustomFieldConstant.SFC_DATA_LOCATION);
List<SfcData> sfcDataList = sfcDataMapper.selectByMap(map);
if (sfcDataList == null || sfcDataList.size() <= 0) {
//记录位置到SFC
SfcData sfcData = new SfcData();
sfcData.setHandle(HandleEnum.SFC_DATA.getHandle(site, sfcBo, CustomFieldConstant.SFC_DATA_LOCATION));
sfcData.setSfcBo(sfcBo);
sfcData.setDataField(CustomFieldConstant.SFC_DATA_LOCATION);
sfcData.setDataAttr(location);
sfcData.setDateTime(nowDate);
sfcData.setUserBo(HandleEnum.USER.getHandle(site, user));
sfcData.setCreatedDateTime(nowDate);
sfcDataMapper.insert(sfcData);
} else {
//更新位置到SFC
SfcData sfcData = sfcDataList.get(0);
sfcData.setDataAttr(location);
sfcData.setDateTime(nowDate);
sfcData.setModifiedDateTime(nowDate);
Wrapper<SfcData> updateWrapper = new UpdateWrapper<>();
SfcData tjSfcData = new SfcData();
tjSfcData.setSfcBo(sfcBo);
tjSfcData.setDataField(CustomFieldConstant.SFC_DATA_LOCATION);
((UpdateWrapper<SfcData>) updateWrapper).setEntity(tjSfcData);
sfcDataMapper.update(sfcData, updateWrapper);
}
}
}

@ -1,9 +1,9 @@
<?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.meapi.mapper.SfcDataMapper">
<mapper namespace="com.foreverwin.mesnac.production.mapper.SfcDataMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.foreverwin.mesnac.meapi.model.SfcData">
<resultMap id="BaseResultMap" type="com.foreverwin.mesnac.production.model.SfcData">
<result column="HANDLE" property="handle" />
<result column="SFC_BO" property="sfcBo" />
<result column="DATE_TIME" property="dateTime" />
@ -208,7 +208,7 @@
</if>
</select>
<insert id="insert" parameterType="com.foreverwin.mesnac.meapi.model.SfcData">
<insert id="insert" parameterType="com.foreverwin.mesnac.production.model.SfcData">
INSERT INTO SFC_DATA
<trim prefix="(" suffix=")" suffixOverrides=",">
HANDLE,
@ -232,7 +232,7 @@
</trim>
</insert>
<insert id="insertAllColumn" parameterType="com.foreverwin.mesnac.meapi.model.SfcData">
<insert id="insertAllColumn" parameterType="com.foreverwin.mesnac.production.model.SfcData">
INSERT INTO SFC_DATA
<trim prefix="(" suffix=")" suffixOverrides=",">
<include refid="Base_Column_List"></include>
Loading…
Cancel
Save