SFC跟踪功能

Leon 4 years ago
parent ddcaa726d2
commit e2775bc7d0

@ -7,14 +7,7 @@ package com.foreverwin.mesnac.common.constant;
* @since 2021-05-12 * @since 2021-05-12
*/ */
public class CustomFieldConstant { 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 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 final String ROUTER_OP_PROD_TIME = "PROD_TIME";
public static String ROUTER_OP_OUT_SOURCE = "OUT_SOURCE"; 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_BOM( "SFCBOMBO:", "SFCBOMBO:{0}" ),
SFC_DATA( "SFCDataBO:", "SFCDataBO:{0},{1}" ),
/**物料*/ /**物料*/
ITEM( "ItemBO:", "ItemBO:{0},{1},{2}" ), ITEM( "ItemBO:", "ItemBO:{0},{1},{2}" ),

@ -463,7 +463,7 @@ public class InterfaceServiceImpl implements InterfaceService {
if (StringUtil.notBlank(shopOrderSyncRequest.getITEM_NUMBER())) { if (StringUtil.notBlank(shopOrderSyncRequest.getITEM_NUMBER())) {
customFields = new CustomFields(); customFields = new CustomFields();
customFields.setHandle(shopOrderBo); customFields.setHandle(shopOrderBo);
customFields.setAttribute(CustomFieldConstant.SO_ITEM_NUMER); customFields.setAttribute(CustomFieldConstant.SO_ITEM_NUMBER);
customFields.setValue(shopOrderSyncRequest.getITEM_NUMBER()); customFields.setValue(shopOrderSyncRequest.getITEM_NUMBER());
customFieldsList.add(customFields); 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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.foreverwin.mesnac.meapi.service.SfcDataService; import com.foreverwin.mesnac.production.service.SfcDataService;
import com.foreverwin.mesnac.meapi.model.SfcData; import com.foreverwin.mesnac.production.model.SfcData;
import java.util.List; import java.util.List;
/** /**
@ -135,7 +135,8 @@ public class SfcDataController {
} }
String site = CommonMethods.getSite(); String site = CommonMethods.getSite();
sfcDataService.saveSfcLocation(site, sfc, location); String user = CommonMethods.getUser();
sfcDataService.saveSfcLocation(site, user, sfc, location);
} catch (Exception e) { } catch (Exception e) {
return R.failed(e.getMessage()); 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 com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository; 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; import java.io.Serializable;
@ -6,8 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model; import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.IdType;
/** /**
* <p> * <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.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.baomidou.mybatisplus.extension.service.IService;
import com.foreverwin.modular.core.util.FrontPage; import com.foreverwin.modular.core.util.FrontPage;
@ -33,5 +33,5 @@ public interface SfcDataService extends IService<SfcData> {
* @param sfc * @param sfc
* @param location * @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"?> <?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"> <!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="HANDLE" property="handle" />
<result column="SFC_BO" property="sfcBo" /> <result column="SFC_BO" property="sfcBo" />
<result column="DATE_TIME" property="dateTime" /> <result column="DATE_TIME" property="dateTime" />
@ -208,7 +208,7 @@
</if> </if>
</select> </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 INSERT INTO SFC_DATA
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
HANDLE, HANDLE,
@ -232,7 +232,7 @@
</trim> </trim>
</insert> </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 INSERT INTO SFC_DATA
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
<include refid="Base_Column_List"></include> <include refid="Base_Column_List"></include>
Loading…
Cancel
Save