Merge remote-tracking branch 'origin/master'

master
zpl 3 years ago
commit 490c81791c

@ -80,6 +80,10 @@
<groupId>com.foreverwin.mesnac</groupId>
<artifactId>quality</artifactId>
</dependency>
<dependency>
<groupId>com.foreverwin.mesnac</groupId>
<artifactId>listener</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>

@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
*
@ -181,6 +182,12 @@ public class AbnormalBillController {
return R.ok(result);
}
@GetMapping("getAbnormalByConditionalPage")
public R getAbnormalByConditionalPage(FrontPage frontPage,@RequestParam(required = false) Map paramMap){
String globalQuery = frontPage.getGlobalQuery();
return R.ok(abnormalBillService.getAbnormalByConditionalPage(frontPage.getPagePlus(),paramMap,globalQuery));
}
/**

@ -95,4 +95,19 @@ public class ReportController {
return R.failed(e.getMessage());
}
}
/**
*
* @param paramMap
* @return
*/
@PostMapping("/findQualityInspectionReport")
public R findQualityInspectionReport(@RequestBody(required = false) Map paramMap) {
try{
List<Map<String, Object>> result = reportService.findQualityInspectionReport(paramMap);
return R.ok(result);
}catch (Exception e){
return R.failed(e.getMessage());
}
}
}

@ -1,6 +1,7 @@
package com.foreverwin.mesnac.anomaly.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDto;
import com.foreverwin.mesnac.anomaly.model.AbnormalBill;
import com.foreverwin.mesnac.common.dto.ScrapDto;
@ -43,5 +44,7 @@ public interface AbnormalBillMapper extends BaseMapper<AbnormalBill> {
List<AbnormalBill> getQCAbnormalList(@Param("site") String site);
IPage getAbnormalByConditional(IPage page, @Param("paramMap")Map<String,String> paramMap,@Param("keyword")String keyword);
}

@ -27,4 +27,11 @@ public interface ReportMapper {
List<Map<String, Object>> findInspectionTask(Map paramMap);
/**
*
* @param paramMap
* @return
*/
List<Map<String,Object>> findQualityInspectionReport(Map paramMap);
}

@ -11,6 +11,7 @@ import com.foreverwin.modular.core.util.FrontPage;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -139,4 +140,6 @@ public interface AbnormalBillService extends IService<AbnormalBill> {
List<AbnormalBill> getQCAbnormal();
IPage getAbnormalByConditionalPage(IPage page,Map paramMap,String keyword);
}

@ -26,4 +26,11 @@ public interface ReportService {
* @return
*/
List<Map<String, Object>> findInspectionTask(Map paramMap);
/**
*
* @param paramMap
* @return
*/
List<Map<String, Object>> findQualityInspectionReport(Map paramMap);
}

@ -8,22 +8,26 @@ import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDisposeDto;
import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDto;
import com.foreverwin.mesnac.anomaly.mapper.AbnormalBillDisposeMapper;
import com.foreverwin.mesnac.anomaly.mapper.AbnormalBillMapper;
import com.foreverwin.mesnac.anomaly.mapper.AbnormalCauseMapper;
import com.foreverwin.mesnac.anomaly.model.*;
import com.foreverwin.mesnac.anomaly.model.AbnormalBill;
import com.foreverwin.mesnac.anomaly.model.AbnormalBillDispose;
import com.foreverwin.mesnac.anomaly.model.AbnormalNcCode;
import com.foreverwin.mesnac.anomaly.model.UploadPictures;
import com.foreverwin.mesnac.anomaly.service.*;
import com.foreverwin.mesnac.common.constant.Constants;
import com.foreverwin.mesnac.common.dto.ScrapDto;
import com.foreverwin.mesnac.common.dto.SfcDispatchDto;
import com.foreverwin.mesnac.common.dto.UsrDto;
import com.foreverwin.mesnac.common.enums.AnomalyConstant;
import com.foreverwin.mesnac.common.enums.HandleEnum;
import com.foreverwin.mesnac.common.helper.NextNumberHelper;
import com.foreverwin.mesnac.common.mapper.MessageMapper;
import com.foreverwin.mesnac.common.model.InspectionTask;
import com.foreverwin.mesnac.common.model.Message;
import com.foreverwin.mesnac.common.service.AnomalyService;
import com.foreverwin.mesnac.common.service.MessageService;
import com.foreverwin.mesnac.common.service.UserService;
import com.foreverwin.mesnac.common.service.*;
import com.foreverwin.mesnac.common.util.ActiveMQUtil;
import com.foreverwin.mesnac.common.util.DateUtil;
import com.foreverwin.mesnac.common.util.StringUtil;
import com.foreverwin.mesnac.listener.mapper.UsrMapper;
import com.foreverwin.mesnac.meapi.dto.NcCodeDto;
import com.foreverwin.mesnac.meapi.mapper.*;
import com.foreverwin.mesnac.meapi.model.*;
@ -36,11 +40,13 @@ import com.foreverwin.modular.core.exception.BaseException;
import com.foreverwin.modular.core.exception.BusinessException;
import com.foreverwin.modular.core.util.CommonMethods;
import com.foreverwin.modular.core.util.FrontPage;
import org.springframework.beans.BeanUtils;
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.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
@ -142,11 +148,16 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
private DataFieldListMapper dataFieldListMapper;
@Autowired
private AbnormalCauseMapper abnormalCauseMapper;
private SfcDispatchCommonService sfcDispatchCommonService;
@Autowired
private SplitSfcService splitSfcService;
@Autowired
private InspectionTaskService inspectionTaskService;
@Autowired
private UsrMapper usrMapper;
@Override
@ -1049,12 +1060,16 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
if(nwaUsers != null && nwaUsers.size() <= 0){
throw new BaseException("消息发送失败,发送的用户组下面没有用户");
}
List<String> customFieldByUserId = usrMapper.findCustomFieldByUserId(site, nwaUsers);
if(customFieldByUserId != null && customFieldByUserId.size() <= 0){
throw new BaseException("消息发送失败,发送的用户组下面的自定义数据没有维护");
}
StringBuilder sendUsers = new StringBuilder();
for (int i = 0; i < nwaUsers.size(); i++) {
if(i == (nwaUsers.size() - 1)){
sendUsers.append(nwaUsers.get(i).getUserName());
for (int i = 0; i < customFieldByUserId.size(); i++) {
if(i == (customFieldByUserId.size() - 1)){
sendUsers.append(customFieldByUserId.get(i));
}else{
sendUsers.append(nwaUsers.get(i).getUserName()).append("|");
sendUsers.append(customFieldByUserId.get(i)).append("|");
}
}
activeMQUtil.wechatSendMessage(sendUsers.toString(),abnormalMessage.getContent());
@ -1174,6 +1189,12 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
return abnormalBillMapper.getQCAbnormalList(CommonMethods.getSite());
}
@Override
public IPage getAbnormalByConditionalPage(IPage page,Map paramMap,String keyword) {
paramMap.put("site",CommonMethods.getSite());
return abnormalBillMapper.getAbnormalByConditional(page,paramMap,keyword);
}
@Override
public Map<String, String> jgProductionIsScrap(String abnormalNo, String site, String sfc) {
//查询该sfc在质量异常异常方案是否是报废,如果是则大于1
@ -1255,6 +1276,57 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
}
return scrapDtoBySfc;
}
void creatInspectionTask(String site,String inspectionTaskBo,String sfc,String stepId){
InspectionTask byId = inspectionTaskService.getById(inspectionTaskBo);
InspectionTask newInspectionTask = new InspectionTask();
if (StringUtil.notBlank(inspectionTaskBo)){
if (byId==null){
throw new BaseException("不存在的专检任务");
}
BeanUtils.copyProperties(byId, newInspectionTask);
String newTaskNo = "P_" + DateUtil.getTimeString();
String handle = HandleEnum.INSPECTION_TASK.getHandle(site, newTaskNo);
newInspectionTask.setHandle(handle);
newInspectionTask.setTaskNo(newTaskNo);
newInspectionTask.setStatus(Constants.INSPECTION_TASK_STATUS_NEW);
newInspectionTask.setResult(null);
newInspectionTask.setComments(null);
newInspectionTask.setCreatedDateTime(LocalDateTime.now());
newInspectionTask.setModifiedDateTime(LocalDateTime.now());
}else {
String handle = "InspectionTaskBO:" + site + "," + UUID.randomUUID().toString();
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat1 = new SimpleDateFormat("yyyyMMddHHmmssSSS");
String taskNo = "P_" + dateFormat1.format(date);
SfcDispatchDto sfcDispatchDto = new SfcDispatchDto();
sfcDispatchDto.setSfc(sfc);
sfcDispatchDto.setStepId(stepId);
SfcDispatchDto sfcDispatchBySfc = sfcDispatchCommonService.findSfcDispatchBySfc(sfcDispatchDto);
InspectionTask task = new InspectionTask();
task.setHandle(handle);
task.setSite(site);
task.setCategory(Constants.INSPECTION_TYPE_P);
task.setTaskNo(taskNo);
task.setStatus(Constants.INSPECTION_TASK_STATUS_NEW);
task.setResult(null);
task.setDescription("专检检验任务");
task.setInspectionItemBo( null);
task.setShopOrder(sfcDispatchBySfc.getShopOrder());
task.setWorkCenter(sfcDispatchBySfc.getWorkCenter());
task.setSfc(sfc);
task.setOperation(sfcDispatchBySfc.getOperation());
task.setStepId(stepId);
task.setResrce(sfcDispatchBySfc.getResrce());
task.setCreateUser(CommonMethods.getUser());
task.setCreatedDateTime(LocalDateTime.now());
task.setModifyUser(CommonMethods.getUser());
task.setModifiedDateTime(LocalDateTime.now());
task.setSfcDispatchBo(sfcDispatchBySfc.getHandle());
task.setSfc(sfc);
}
inspectionTaskService.save(newInspectionTask);
}
}

@ -5,6 +5,7 @@ import com.foreverwin.mesnac.anomaly.mapper.ReportMapper;
import com.foreverwin.mesnac.anomaly.service.ReportService;
import com.foreverwin.mesnac.meapi.model.NcCode;
import com.foreverwin.mesnac.meapi.model.NwaUser;
import com.foreverwin.mesnac.meapi.service.DataFieldListService;
import com.foreverwin.mesnac.meapi.service.NcCodeService;
import com.foreverwin.mesnac.meapi.service.NwaUserService;
import com.foreverwin.mesnac.meapi.util.StringUtils;
@ -34,6 +35,8 @@ public class ReportServiceImpl implements ReportService {
private ReportMapper reportMapper;
@Autowired
private NwaUserService nwaUserService;
@Autowired
private DataFieldListService dataFieldListService;
/**
*
@ -145,4 +148,19 @@ public class ReportServiceImpl implements ReportService {
public List<Map<String, Object>> findInspectionTask(Map paramMap) {
return reportMapper.findInspectionTask(paramMap);
}
/**
*
* @param paramMap
* @return
*/
@Override
public List<Map<String, Object>> findQualityInspectionReport(Map paramMap) {
String site = CommonMethods.getSite();
paramMap.put("site",site);
paramMap.put("locale",LocaleContextHolder.getLocale().getLanguage());
List<Map<String, Object>> qualityInspectionReport = reportMapper.findQualityInspectionReport(paramMap);
return null;
}
}

@ -1192,4 +1192,25 @@
JOIN Z_ABNORMAL_BILL_DISPOSE ZABD ON ZABD.ABNORMAL_BILL_BO= ZAB.HANDLE
WHERE zab.SITE=#{site} AND zab.STATUS='G' AND zab."TYPE"='Z' AND s.QTY>1 AND (ZABD.ABNORMAL_METHOD='F' OR ZABD.ABNORMAL_METHOD='C') ORDER BY ZABD.CLOSED_DATE_TIME DESC
</select>
<select id="getAbnormalByConditional" resultMap="BaseResultMap">
SELECT zab.ABNORMAL_NO ABNORMAL_NO,zab.PB_DESCRIPTION PB_DESCRIPTION
FROM Z_ABNORMAL_BILL zab
INNER JOIN Z_ABNORMAL_BILL_DISPOSE zabd ON zab.HANDLE = zabd.ABNORMAL_BILL_BO
<where>
zab.SITE = #{paramMap.site}
AND zab.SFC IS NOT NULL
<if test="paramMap.abnormalMethod != null and paramMap.abnormalMethod != ''">
AND zabd.ABNORMAL_METHOD = #{paramMap.abnormalMethod}
</if>
<if test="paramMap.type != null and paramMap.type != ''">
AND zab.TYPE = #{paramMap.type}
</if>
<if test="keyword != null and keyword != ''">
AND (zab.ABNORMAL_NO LIKE '%${keyword}%'
OR zab.PB_DESCRIPTION LIKE '%${keyword}%')
</if>
</where>
ORDER BY zab.CREATED_DATE_TIME DESC
</select>
</mapper>

@ -199,4 +199,70 @@
AND ZT.MODIFIED_DATE_TIME &lt;= TO_DATE(#{startToDate}|| '23:59:59', 'YYYY-MM-DD HH24:MI:SS')
</if>
</select>
<select id="findQualityInspectionReport" resultType="map">
SELECT zab.CREATED_DATE_TIME CREATED_DATE_TIME,zab.ABNORMAL_NO ABNORMAL_NO,
zab.PRODUCT_CATEGORY PRODUCT_CATEGORY,
CASE WHEN zab.DISCOVER = 'Z' THEN '自制'
WHEN zab.DISCOVER = 'W' THEN '外协'
WHEN zab.DISCOVER = 'D' THEN '到货'
WHEN zab.DISCOVER = 'K' THEN '客户'
ELSE ''
END DISCOVER ,
i.ITEM ITEM ,it.DESCRIPTION ITEM_DESCRIPTION,itemNumber.VALUE ITEM_NUMBER,
mapNo.VALUE MAP_NO,zab.PB_DESCRIPTION PB_DESCRIPTION,zsd.EMPLOYEE_DESCRIPTION OPERATOR,
CASE WHEN zab."TYPE" = 'Z' THEN '质量异常'
WHEN zab."TYPE" = 'Q' THEN '其他异常'
WHEN zab."TYPE" = 'S' THEN '设备异常' END "TYPE",
zab.REPORT_SEND_USER_GROUP INSPECTOR ,
zab.PB_GRADE PB_GRADE ,
zabd.PRINCIPAL_USER PRINCIPAL_USER,
LISTAGG(nct.DESCRIPTION , ';') WITHIN GROUP(ORDER BY zab.ABNORMAL_NO) NC_CODE_DESCRIPTION,
zabd.DUTY_CAUSE_DESCRIPTION DUTY_CAUSE_DESCRIPTION,zabd.BEFORE_MEASURE BEFORE_MEASURE,
CASE WHEN zabd.ABNORMAL_METHOD = 'X' THEN '线下换料'
WHEN zabd.ABNORMAL_METHOD = 'S' THEN '试装'
WHEN zabd.ABNORMAL_METHOD = 'R' THEN '让步放心'
WHEN zabd.ABNORMAL_METHOD = 'C' THEN '报废'
WHEN zabd.ABNORMAL_METHOD = 'P' THEN '配作'
WHEN zabd.ABNORMAL_METHOD = 'F' THEN '返修'
ELSE ''
END ABNORMAL_METHOD,zabd.RESOLVE_REMARK RESOLVE_REMARK,zabd.RESOLVE_USER RESOLVE_USER,
zabd.CLOSED_DATE_TIME CLOSED_DATE_TIME,zab.NC_QTY NC_QTY,zab.PB_QTY PB_QTY,
CASE WHEN (zabd.ABNORMAL_METHOD ='F' AND zab.SHOP_ORDER IS NOT NULL) THEN TO_CHAR(so.QTY_TO_BUILD,'9999')
WHEN zabd.ABNORMAL_METHOD = 'F' THEN TO_CHAR(zab.PB_QTY,'9999') ELSE '' END NUMBERS,
zsd.EMPLOYEE_DESCRIPTION DISPATCH_USER ,ot.DESCRIPTION OPERATION ,
r2.RESRCE RESRCE,r2.DESCRIPTION RESRCE_DESCRIPTION,zsd.RESOURCE_TYPE RESOURCE_TYPE,rt.DESCRIPTION RESOURCE_TYPE_DESCRIPTION
FROM Z_ABNORMAL_BILL zab
INNER JOIN Z_ABNORMAL_BILL_DISPOSE zabd ON zab.HANDLE = zabd.ABNORMAL_BILL_BO
LEFT JOIN Z_ABNORMAL_NC_CODE zanc ON zab.HANDLE = zanc.ABNORMAL_BILL_BO
LEFT JOIN NC_CODE nc ON zanc.NC_CODE = nc.NC_CODE AND nc.SITE = zab.SITE
LEFT JOIN NC_CODE_T nct ON nct.NC_CODE_BO = nc.HANDLE AND nct.LOCALE = #{locale}
INNER JOIN ITEM i ON i.HANDLE = zab.ITEM_BO
LEFT JOIN ITEM_T it ON it.ITEM_BO = i.HANDLE AND it.LOCALE = #{locale}
LEFT JOIN CUSTOM_FIELDS mapNo ON mapNo."ATTRIBUTE" = 'DWG_NO' AND mapNo.HANDLE = i.HANDLE
LEFT JOIN SHOP_ORDER so ON so.SHOP_ORDER = zab.SHOP_ORDER AND so.SITE = zab.SITE
LEFT JOIN ROUTER r ON r.HANDLE = zabd.ROUTER_BO
LEFT JOIN CUSTOM_FIELDS itemNumber ON itemNumber.HANDLE = so.HANDLE AND itemNumber."ATTRIBUTE" = 'ITEM_NUMBER'
LEFT JOIN SFC s ON s.SFC = zab.SFC AND s.SITE = zab.SITE
LEFT JOIN SFC_ROUTING SR ON SR.SFC_BO = S.HANDLE
LEFT JOIN SFC_ROUTER ST ON ST.SFC_ROUTING_BO = SR.HANDLE
LEFT JOIN SFC_STEP SS ON SS.SFC_ROUTER_BO = ST.HANDLE AND (SS.QTY_IN_QUEUE > 0 OR SS.QTY_IN_WORK > 0)
LEFT JOIN Z_SFC_DISPATCH zsd ON zsd.DISPATCH_NO = S.SFC || '-' || SS.STEP_ID
LEFT JOIN OPERATION o ON o.OPERATION = zsd.OPERATION AND o.SITE = zab.SITE AND o.CURRENT_REVISION ='true'
LEFT JOIN OPERATION_T ot ON ot.OPERATION_BO = o.HANDLE AND ot.LOCALE = #{locale}
LEFT JOIN RESRCE r2 ON r2.RESRCE = zsd.RESRCE AND r2.SITE = zab.SITE
LEFT JOIN RESOURCE_TYPE rt ON rt.RESOURCE_TYPE = zsd.RESOURCE_TYPE AND rt.SITE = zab.SITE
WHERE zab."TYPE" ='Z'
GROUP BY zab.CREATED_DATE_TIME ,zab.ABNORMAL_NO ,
i.ITEM ,it.DESCRIPTION ,itemNumber.VALUE ,
mapNo.VALUE ,zab.PB_DESCRIPTION ,zsd.EMPLOYEE_DESCRIPTION ,
zab."TYPE" ,zab.REPORT_SEND_USER_GROUP ,zabd.DUTY_DEPART ,zabd.PRINCIPAL_USER,DISCOVER ,
zab.PB_GRADE,zabd.DUTY_CAUSE_DESCRIPTION ,zabd.BEFORE_MEASURE,ABNORMAL_METHOD,
zabd.RESOLVE_REMARK ,zabd.RESOLVE_USER ,
zabd.CLOSED_DATE_TIME ,zab.NC_QTY ,zab.PB_QTY ,zab.SHOP_ORDER,so.QTY_TO_BUILD,
zsd.EMPLOYEE_DESCRIPTION ,ot.DESCRIPTION ,
r2.RESRCE,r2.DESCRIPTION,zsd.RESOURCE_TYPE,
rt.DESCRIPTION,zab.PRODUCT_CATEGORY
</select>
</mapper>

@ -55,15 +55,31 @@ public class ExportAspect {
String exportCode = "";
//-------------------------------------------------------------------------------------------------------------------
if (paramtes == null || args == null || args.length == 0) return joinPoint.proceed();
Boolean isDuoDuo = (args != null && args.length == 1) ? false : true;
//-------------------------------------------------------------------------------------------------------------------
while (paramtes.hasMoreElements()) {
String param = paramtes.nextElement();
String value = request.getParameter(param);
//-------------------------------------------------------------------------------------------------------------------
if (param != null && param.equals("export")) export = true;
if (param != null && param.equals("exportCode")) exportCode = value;
if (export && StringUtil.notEmpty(exportCode)) break;
}//while
request.setCharacterEncoding("UTF-8");
//-------------------------------------------------------------------------------------------------------------------
if (isDuoDuo) {
while (paramtes.hasMoreElements()) {
String param = paramtes.nextElement();
String value = request.getParameter(param);
if (param != null && param.equals("export")) export = true;
if (param != null && param.equals("exportCode")) exportCode = value;
if (export && StringUtil.notEmpty(exportCode)) break;
}//while
} else {
Map<String, Object> paramMap = new HashMap<>();
while (paramtes.hasMoreElements()) {
String param = paramtes.nextElement();
String value = request.getParameter(param);
if (param != null && param.equals("export")) export = true;
if (param != null && param.equals("exportCode")) exportCode = value;
paramMap.put(param, value);
}//while
args[0] = paramMap;
}
//-------------------------------------------------------------------------------------------------------------------
if (export == false || StringUtil.isEmpty(exportCode)) return joinPoint.proceed();
//-------------------------------------------------------------------------------------------------------------------
@ -80,6 +96,7 @@ public class ExportAspect {
exportData(exportCode, dataList, request, attributes.getResponse());
}
//-------------------------------------------------------------------------------------------------------------------
return result;
}

@ -104,5 +104,32 @@ public class ReportDataController {
return R.failed(e.getMessage());
}
}
/**
*
*
* @param paramMap
* @return
*/
@GetMapping("/workShopPassRate")
public R findWorkShopPassRate(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = reportDataService.findWorkShopPassRate(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
@GetMapping("/checkUserPassRate")
public R findCheckUserPassRate(@RequestParam(required = false) Map paramMap) {
try {
paramMap.put("site", CommonMethods.getSite());
List<Map<String, Object>> result = reportDataService.findCheckUserPassRate(paramMap);
return R.ok(result);
} catch (Exception e) {
return R.failed(e.getMessage());
}
}
}

@ -11,6 +11,8 @@ public class UsrDto {
private String fullName;
private String wechatId;
public String getUserName() {
return userName;
}
@ -26,4 +28,12 @@ public class UsrDto {
public void setFullName(String fullName) {
this.fullName = fullName;
}
public String getWechatId() {
return wechatId;
}
public void setWechatId(String wechatId) {
this.wechatId = wechatId;
}
}

@ -23,5 +23,8 @@ public interface ReportDataMapper {
void deleteAllReportDateTime();
List<Map<String, Object>> findWorkShopPassRate(Map paramMap);
List<Map<String, Object>> findCheckUserPassRate(Map paramMap);
}

@ -42,4 +42,9 @@ public interface ReportDataService {
*/
List<Map<String, Object>> findProductStateInfo(Map paramMap);
List<Map<String, Object>> findWorkShopPassRate(Map paramMap);
List<Map<String, Object>> findCheckUserPassRate(Map paramMap);
}

@ -15,8 +15,7 @@ public interface SfcDispatchCommonService {
/**
*
*
* @param site
* @param site
* @param user
* @param category N|; R|
* @param shopOrder
@ -25,8 +24,9 @@ public interface SfcDispatchCommonService {
* @param stepId
* @param splitSfc
* @param routerBo
* @param stepSequence
*/
void saveSplitSfcDispatch(String site, String user, String category, String shopOrder, String sfc, String operation, String stepId, String splitSfc, String routerBo);
void saveSplitSfcDispatch(String site, String user, String category, String shopOrder, String sfc, String operation, String stepId, String splitSfc, String routerBo, String stepSequence);
/**
*

@ -62,4 +62,14 @@ public class ReportDataServiceImpl implements ReportDataService{
paramMap.put("site", CommonMethods.getSite());
return reportDataMapper.findProductStateInfo(paramMap);
}
@Override
public List<Map<String, Object>> findWorkShopPassRate(Map paramMap) {
return reportDataMapper.findWorkShopPassRate(paramMap);
}
@Override
public List<Map<String, Object>> findCheckUserPassRate(Map paramMap) {
return reportDataMapper.findCheckUserPassRate(paramMap);
}
}

@ -631,7 +631,7 @@
</delete>
<!-- BaseMapper标准查询/修改/删除 -->
<select id="getTaskList" resultMap="BaseResultMap">
SELECT zsd.PROD_HOURS,S.QTY,c3.value TEXTURE,c4.value MAT_SPEC,zsd.BLANKING_SIZE,PREZSD.EMPLOYEE_DESCRIPTION,CASE WHEN TO_NUMBER(zsd.DISPATCH_SEQ)=1 THEN NULL
SELECT zsd.PROD_HOURS,S.QTY,CF.TEXTURE,CF.MAT_SPEC,zsd.BLANKING_SIZE,PREZSD.EMPLOYEE_DESCRIPTION,CASE WHEN TO_NUMBER(zsd.DISPATCH_SEQ)=1 THEN NULL
WHEN SS.STEP_SEQUENCE>TO_NUMBER(zsd.DISPATCH_SEQ)-1 THEN '完成'
ELSE '未完成' END LAST_OPERATION_STATUS
,PREOT.DESCRIPTION LAST_OPERATION,zprt.*,zsd.DISPATCH_NO,zsd.RESOURCE_TYPE,RES.DESCRIPTION RESRCE_DESC,ITT.DESCRIPTION ITEM_DESC,OT.DESCRIPTION OPERATION_DESC
@ -645,13 +645,25 @@
LEFT JOIN OPERATION PREOP ON PREOP.OPERATION = zsd.PREPOSITION_OPERATION AND OP.SITE = zprt.SITE AND OP.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T PREOT ON PREOT.OPERATION_BO = PREOP.HANDLE AND OT.LOCALE =#{locale}
LEFT JOIN ITEM_T ITT ON ITT.ITEM_BO = I.HANDLE AND ITT.LOCALE =#{locale}
LEFT JOIN CUSTOM_FIELDS C3 ON C3.HANDLE = I.HANDLE AND C3.ATTRIBUTE = 'TEXTTURE'
LEFT JOIN CUSTOM_FIELDS C4 ON C4.HANDLE = I.HANDLE AND C4.ATTRIBUTE = 'MAT_SPEC'
JOIN RESRCE RES ON RES.RESRCE = zprt.RESRCE AND RES.SITE = zprt.SITE
JOIN SFC S ON S.SFC=ZSD.SFC AND S.SITE=ZSD.SITE
JOIN SFC_ROUTING SR ON SR.SFC_BO=S.HANDLE
JOIN SFC_ROUTER SR2 ON SR.HANDLE =SR2.SFC_ROUTING_BO AND SR2.IN_USE = 'true'
LEFT JOIN SFC_STEP SS ON SR2.HANDLE =SS.SFC_ROUTER_BO AND (SS.QTY_IN_QUEUE>0 or SS.QTY_IN_WORK>0)
JOIN (
SELECT zprt.HANDLE,C3.VALUE TEXTURE,c4.VALUE MAT_SPEC, ROW_NUMBER() OVER(PARTITION BY zprt.HANDLE ORDER BY C3.VALUE,c4.VALUE ) SEQ
FROM Z_PROD_READY_TASK zprt
JOIN SFC S ON ZPRT.SFC=S.SFC AND s.SITE=ZPRT.SITE
JOIN SFC_BOM SB ON S.HANDLE=SB.SFC_BO
JOIN BOM_COMPONENT BC ON BC.BOM_BO = SB.BOM_BO
LEFT JOIN ITEM CP ON CP.HANDLE = BC.COMPONENT_GBO
LEFT JOIN ITEM_T CT ON CT.ITEM_BO = CP.HANDLE AND CT.LOCALE = 'zh'
LEFT JOIN CUSTOM_FIELDS C3 ON C3.HANDLE = CP.HANDLE AND C3.ATTRIBUTE = 'TEXTTURE'
LEFT JOIN CUSTOM_FIELDS C4 ON C4.HANDLE = CP.HANDLE AND C4.ATTRIBUTE = 'MAT_SPEC'
WHERE zprt.SITE=#{entity.site}
<if test="entity.matSpec!=null and entity.matSpec!='' "> AND C4.VALUE =#{entity.matSpec} </if>
<if test="entity.texture!=null and entity.texture!='' "> AND C3.VALUE LIKE '%${entity.texture}%'</if>
) CF on CF.HANDLE=zprt.HANDLE AND CF.SEQ='1'
WHERE ZPRT.SITE=#{entity.site}
<if test="admin == 0"> AND ZSD.EMPLOYEE LIKE '%${user}%' </if>
<if test="entity.workCenter!=null and entity.workCenter!='' "> AND ZPRT.WORK_CENTER=#{entity.workCenter}</if>
@ -667,8 +679,6 @@
<if test="entity.shopOrder!=null and entity.shopOrder!='' "> AND ZPRT.SHOP_ORDER=#{entity.shopOrder}</if>
<if test="entity.item!=null and entity.item!='' "> AND ZPRT.ITEM=#{entity.item}</if>
<if test="entity.blankingSize!=null and entity.blankingSize!='' "> AND zsd.BLANKING_SIZE LIKE '%${entity.blankingSize}%'</if>
<if test="entity.matSpec!=null and entity.matSpec!='' "> AND C4.VALUE LIKE '%${entity.matSpec}%'</if>
<if test="entity.texture!=null and entity.texture!='' "> AND C3.VALUE LIKE '%${entity.texture}%'</if>
<if test="entity.planStartDate!=null and entity.planStartDate!='' "> AND TO_CHAR(ZSD.PLANNED_START_DATE,'YYYY-MM-DD')=#{entity.planStartDate}</if>
ORDER BY zprt.CREATED_DATE_TIME DESC
</select>

@ -214,4 +214,64 @@
LEFT JOIN Z_INSPECTION_ITEM_DETAIL D ON B.INSPECTION_ITEM_DETAIL_BO = D.HANDLE AND C.HANDLE = D.INSPECTION_ITEM_BO
WHERE A.SITE = #{site} AND A.TASK_NO = #{taskNo}
</select>
<select id="findWorkShopPassRate" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT DESCRIPTION WORK_CENTER_DESCRIPTION, "MONTH",sum(NG_QTY) NC_QTY, sum(OK_QTY) OK_QTY,sum(CHECK_QTY) CHECK_QTY,round(sum(OK_QTY)*100/sum(DISPATCH_QTY),2)||'% ' OK_RATE FROM
(
SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY zit.sfc ,zit.OPERATION,zit.STEP_ID ORDER BY zit.CREATED_DATE_TIME DESC)=1 AND zit."RESULT"='OK' THEN 0
WHEN ROW_NUMBER() OVER(PARTITION BY zit.sfc ,zit.OPERATION,zit.STEP_ID ORDER BY zit.CREATED_DATE_TIME DESC)=1 AND zit."RESULT"='NG' THEN TO_NUMBER(zab.NC_QTY)
ELSE 0 END NG_QTY , TO_CHAR(zit.CREATED_DATE_TIME,'YYYY-MM') "MONTH",
CASE WHEN ROW_NUMBER() OVER(PARTITION BY zit.sfc ,zit.OPERATION,zit.STEP_ID ORDER BY zit.CREATED_DATE_TIME DESC)=1 AND zit."RESULT"='OK' THEN zsd.DISPATCH_QTY
WHEN ROW_NUMBER() OVER(PARTITION BY zit.sfc ,zit.OPERATION,zit.STEP_ID ORDER BY zit.CREATED_DATE_TIME DESC)=1 AND zit."RESULT"='NG' THEN 0
ELSE 0 END OK_QTY
,ZSD.DISPATCH_QTY, WT.DESCRIPTION,
ROW_NUMBER() OVER(PARTITION BY zit.sfc ,zit.OPERATION,zit.STEP_ID ORDER BY zit.CREATED_DATE_TIME DESC) seq,
zit."RESULT",COUNT(ZIT.HANDLE) check_qty, zit.sfc ,zit.OPERATION,zit.STEP_ID FROM Z_INSPECTION_TASK zit
JOIN sfc S ON S.SFC=zit.SFC AND s.SITE=zit.SITE
JOIN Z_SFC_DISPATCH ZSD ON ZSD.SFC=zit.SFC AND ZSD.SITE=zit.SITE AND zit.STEP_ID=ZSD.STEP_ID
JOIN WORK_CENTER WC ON WC.SITE = zit.SITE AND WC.WORK_CENTER = zit.WORK_CENTER
LEFT JOIN WORK_CENTER_T WT ON WT.WORK_CENTER_BO = WC.HANDLE AND WT.LOCALE = 'zh'
LEFT JOIN Z_ABNORMAL_BILL ZAB ON zit.SFC=ZAB.SFC AND zit.SITE=ZAB.SITE AND zit.STEP_ID=ZAB.STEP_ID AND zab."TYPE"='Z'
WHERE zit.SITE= #{site} AND zit.CATEGORY='P' AND zit.STATUS='COMPLETE'
<if test="workCenter != null and workCenter != ''" >
AND zit.WORK_CENTER = #{workCenter}
</if>
<if test="startFromDate != null and startFromDate != ''" >
AND TO_CHAR(zit.CREATED_DATE_TIME,'YYYY-MM') >=#{startFromDate}
</if>
<if test="startToDate != null and startToDate != ''" >
AND TO_CHAR(zit.CREATED_DATE_TIME,'YYYY-MM') &lt;= #{startToDate}
</if>
GROUP BY zit."RESULT",zit.sfc ,zit.OPERATION,zit.STEP_ID, zit.CREATED_DATE_TIME,zit.RESRCE,zab.NC_QTY, WT.DESCRIPTION,ZSD.DISPATCH_QTY
) GROUP BY DESCRIPTION, "MONTH"
</select>
<select id="findCheckUserPassRate" resultType="java.util.HashMap" parameterType="java.util.HashMap">
SELECT DESCRIPTION WORK_CENTER_DESCRIPTION, FULL_NAME,"MONTH",sum(NG_QTY) NC_QTY, sum(CHECK_QTY) CHECK_QTY FROM
(
SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY zit.sfc ,zit.OPERATION,zit.STEP_ID ORDER BY zit.CREATED_DATE_TIME DESC)=1 AND zit."RESULT"='OK' THEN 0
WHEN ROW_NUMBER() OVER(PARTITION BY zit.sfc ,zit.OPERATION,zit.STEP_ID ORDER BY zit.CREATED_DATE_TIME DESC)=1 AND zit."RESULT"='NG' THEN TO_NUMBER(zab.NC_QTY)
ELSE 0 END NG_QTY , TO_CHAR(zit.CREATED_DATE_TIME,'YYYY-MM') "MONTH"
, WT.DESCRIPTION,ZNU.FULL_NAME,
ROW_NUMBER() OVER(PARTITION BY zit.sfc ,zit.OPERATION,zit.STEP_ID ORDER BY zit.CREATED_DATE_TIME DESC) seq,
zit."RESULT",COUNT(ZIT.HANDLE) check_qty, zit.sfc ,zit.OPERATION,zit.STEP_ID FROM Z_INSPECTION_TASK zit
JOIN sfc S ON S.SFC=zit.SFC AND s.SITE=zit.SITE
JOIN Z_SFC_DISPATCH ZSD ON ZSD.SFC=zit.SFC AND ZSD.SITE=zit.SITE AND zit.STEP_ID=ZSD.STEP_ID
JOIN WORK_CENTER WC ON WC.SITE = zit.SITE AND WC.WORK_CENTER = zit.WORK_CENTER
LEFT JOIN WORK_CENTER_T WT ON WT.WORK_CENTER_BO = WC.HANDLE AND WT.LOCALE = 'zh'
LEFT JOIN Z_ABNORMAL_BILL ZAB ON zit.SFC=ZAB.SFC AND zit.SITE=ZAB.SITE AND zit.STEP_ID=ZAB.STEP_ID AND zab."TYPE"='Z'
LEFT JOIN Z_NWA_USER ZNU ON ZNU.SITE = ZIT.SITE AND ZNU.USER_NAME = ZIT.MODIFY_USER
WHERE zit.SITE= #{site} AND zit.CATEGORY='P' AND zit.STATUS='COMPLETE'
<if test="workCenter != null and workCenter != ''" >
AND zit.WORK_CENTER = #{workCenter}
</if>
<if test="startFromDate != null and startFromDate != ''" >
AND TO_CHAR(zit.CREATED_DATE_TIME,'YYYY-MM') >=#{startFromDate}
</if>
<if test="startToDate != null and startToDate != ''" >
AND TO_CHAR(zit.CREATED_DATE_TIME,'YYYY-MM') &lt;= #{startToDate}
</if>
GROUP BY zit."RESULT",zit.sfc ,zit.OPERATION,zit.STEP_ID, zit.CREATED_DATE_TIME,zit.RESRCE,zab.NC_QTY, ZNU.FULL_NAME,WT.DESCRIPTION
) GROUP BY DESCRIPTION, "MONTH",FULL_NAME
</select>
</mapper>

@ -6,7 +6,6 @@
<Property name="log.pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n</Property>
</Properties>
<!-- 日志输出器 -->
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout>
@ -14,8 +13,22 @@
</PatternLayout>
</Console>
<RollingFile name="file_info"
fileName="${log.path}/mes-info.log"
<RollingFile name="optimize" fileName="${log.path}/mes-optimize.log"
filePattern="${log.path}/$${date:yyyy-MM}/mes-optimize.%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL" />
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout>
<pattern>${log.pattern}</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
</RollingFile>
<RollingFile name="file_info" fileName="${log.path}/mes-info.log"
filePattern="${log.path}/$${date:yyyy-MM}/mes-info.%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL" />
@ -30,8 +43,7 @@
</Policies>
</RollingFile>
<RollingFile name="file_error"
fileName="${log.path}/mes-error.log"
<RollingFile name="file_error" fileName="${log.path}/mes-error.log"
filePattern="${log.path}/$${date:yyyy-MM}/mes-error.%d{yyyy-MM-dd}-%i.log">
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout>
@ -44,12 +56,14 @@
</RollingFile>
</Appenders>
<Loggers>
<logger name="info" level="debug">
<logger name="optimize" level="debug">
<AppenderRef ref="optimize"/>
</logger>
<logger name="com.foreverwin" level="debug">
<AppenderRef ref="file_info"/>
</logger>
<Root level="error">
<Root level="info">
<AppenderRef ref="console"/>
<AppenderRef ref="file_error"/>
</Root>

@ -58,4 +58,14 @@ public interface SfcDispatchMapper extends BaseMapper<SfcDispatch> {
SfcDispatchDto findSfcDispatchBySfc(@Param("site")String site, @Param("dto")SfcDispatchDto sfcDispatch);
List<SfcDispatch> findSplitSfcDispatch(@Param("site") String site, @Param("sfc") String sfc, @Param("stepId") int stepId);
/**
*
*
* @param site
* @param sfc
* @param currentSeq
* @param splitQty
*/
void updateSfcDispatchQty(@Param("site") String site, @Param("sfc") String sfc, @Param("currentSeq") int currentSeq, @Param("splitQty") Float splitQty);
}

@ -506,6 +506,7 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
//派工发布
String employees = sfcDispatchDto.getEmployee();
if (DispatchStatusEnum.RELEASE.getCode().equals(type)) {
//校验派工状态
String originalStatus = sfcDispatchDto.getDispatchStatus();
@ -517,10 +518,10 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
}
//资源、计划时间必输
if (StringUtils.isBlank(resource) || sfcDispatchDto.getPlannedStartDate() == null || sfcDispatchDto.getPlannedCompDate() == null) {
if (StringUtils.isBlank(resource) || StringUtil.isBlank(employees) || sfcDispatchDto.getPlannedStartDate() == null || sfcDispatchDto.getPlannedCompDate() == null) {
flag = false;
message.append(seq++%3 == 0 ? "\n" : "| |");
message.append("派工单[" + dispatchNo + "]的资源、计划开始或完成时间没维护,不允许发布");
message.append("派工单[" + dispatchNo + "]的资源、操作者、计划开始或完成时间没维护,不允许发布");
continue;
}
@ -551,7 +552,6 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
}
//校验操作者与资源是否匹配
String employees = sfcDispatchDto.getEmployee();
if (StringUtil.notBlank(employees)) {
//资源、计划时间必输
if (StringUtils.isBlank(resource)) {
@ -634,7 +634,7 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
@Override
public void saveSplitSfcDispatch(String site, String user, String category, String shopOrder, String sfc, String operation, String stepId, String splitSfc, String routerBo) {
public void saveSplitSfcDispatch(String site, String user, String category, String shopOrder, String sfc, String operation, String stepId, String splitSfc, String routerBo, String stepSequence) {
LocalDateTime nowDate = LocalDateTime.now();
//查询工单信息
@ -714,6 +714,9 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
shopOrderReleaseService.sfcDispatch(site, user, shopOrderModel, sfcModel, routerList);
}
//修改派工数量
sfcDispatchMapper.updateSfcDispatchQty(site, sfc, Integer.parseInt(stepSequence), new Float(sfcModel.getQty()));
}
@Override

@ -683,7 +683,7 @@
SD.STEP_ID, SD.OPERATION, OT.DESCRIPTION OPERATION_DESCRIPTION, SD.RESOURCE_TYPE, SD.RESRCE, SD.EMPLOYEE, SD.EMPLOYEE USER_NAME, SD.DISPATCH_QTY, SD.PROD_HOURS, RS.DESCRIPTION RESOURCE_DESCRIPTION,
CASE WHEN SD.DISPATCH_STATUS = 'COMPLETE' THEN SD.DISPATCH_QTY ELSE 0 END COMPLETED_QTY, SD.PLANNED_START_DATE, SD.PLANNED_COMP_DATE, SD.WORK_CENTER, SD.IS_DISPATCH, SD.EMPLOYEE_DESCRIPTION,
SD.ACTUAL_START_DATE, SD.ACTUAL_COMPLETE_DATE, SD.REMARK, SD.DISPATCH_SEQ, SD.DISPATCH_SEQ-1 BEFORE_SEQ, SD.DISPATCH_SEQ+1 AFTER_SEQ, SD.EARLIEST_START_DATE, SD.LATEST_END_DATE,
CASE WHEN IM.LOT_SIZE = 1 THEN N'是' ELSE N'否' END IS_MAJOR, CASE WHEN SD.TURN_OPERATION = 'true' THEN N'是' ELSE N'否' END TURN_OPERATION, SD.BLANKING_SIZE, MAX(BC.COMPONENT_GBO) COMPONENT_BO,
CASE WHEN CC.VALUE = '9' THEN N'是' ELSE N'否' END IS_MAJOR, CASE WHEN SD.TURN_OPERATION = 'true' THEN N'是' ELSE N'否' END TURN_OPERATION, SD.BLANKING_SIZE, MAX(BC.COMPONENT_GBO) COMPONENT_BO,
WR.WORK_CENTER RESOURCE_WORK_CENTER, MAX(CP.ITEM) COMPONENT, MAX(CT.DESCRIPTION) COMPONENT_DESCRIPTION, MAX(C3.VALUE) TEXTURE, MAX(C4.VALUE) MAT_SPEC
FROM Z_SFC_DISPATCH SD
LEFT JOIN RESRCE RS ON SD.SITE = RS.SITE AND SD.RESRCE = RS.RESRCE
@ -692,6 +692,7 @@
LEFT JOIN CUSTOM_FIELDS C2 ON C2.HANDLE = SO.HANDLE AND C2."ATTRIBUTE" = 'ITEM_NUMBER'
INNER JOIN ITEM IM ON IM.HANDLE = SO.ITEM_BO
LEFT JOIN ITEM_T IT ON IT.ITEM_BO = IM.HANDLE AND IT.LOCALE = 'zh'
LEFT JOIN CUSTOM_FIELDS CC ON CC.HANDLE = IT.HANDLE AND CC.ATTRIBUTE = 'ACCESSORY_TYPE'
INNER JOIN OPERATION O ON O.SITE = SD.SITE AND O.OPERATION = SD.OPERATION AND O.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh'
INNER JOIN BOM_COMPONENT BC ON BC.BOM_BO = SO.BOM_BO
@ -757,7 +758,7 @@
AND C3.VALUE LIKE '%'|| #{texture} ||'%'
</if>
<if test="matSpec != null and matSpec != ''">
AND C4.VALUE LIKE '%'|| #{matSpec}|| '%'
AND C4.VALUE = #{matSpec}
</if>
<if test="startFromDate != null">
AND SO.PLANNED_START_DATE >= TO_DATE(#{startFromDate}, 'YYYY-MM-DD')
@ -775,7 +776,7 @@
SD.STEP_ID, SD.OPERATION, OT.DESCRIPTION, SD.RESOURCE_TYPE, SD.RESRCE, SD.EMPLOYEE, SD.EMPLOYEE, SD.DISPATCH_QTY, SD.PROD_HOURS, RS.DESCRIPTION,
SD.DISPATCH_STATUS, SD.DISPATCH_QTY, SD.PLANNED_START_DATE, SD.PLANNED_COMP_DATE, SD.WORK_CENTER, SD.IS_DISPATCH, SD.EMPLOYEE_DESCRIPTION,
SD.ACTUAL_START_DATE, SD.ACTUAL_COMPLETE_DATE, SD.REMARK, SD.DISPATCH_SEQ, SD.EARLIEST_START_DATE, SD.LATEST_END_DATE,
IM.LOT_SIZE, SD.TURN_OPERATION, SD.BLANKING_SIZE, WR.WORK_CENTER
CC.VALUE, SD.TURN_OPERATION, SD.BLANKING_SIZE, WR.WORK_CENTER
) WIP
LEFT JOIN Z_SFC_DISPATCH V1 ON V1.SITE = WIP.SITE AND V1.SFC = WIP.SFC AND V1.DISPATCH_SEQ = WIP.BEFORE_SEQ
LEFT JOIN Z_SFC_DISPATCH V2 ON V2.SITE = WIP.SITE AND V2.SFC = WIP.SFC AND V2.DISPATCH_SEQ = WIP.AFTER_SEQ
@ -824,4 +825,10 @@
FROM Z_SFC_DISPATCH
WHERE SITE = #{site} AND SFC = #{sfc} AND TO_NUMBER(STEP_ID) >= #{stepId}
</select>
<update id="updateSfcDispatchQty" >
UPDATE Z_SFC_DISPATCH SET DISPATCH_QTY = DISPATCH_QTY - #{splitQty}
WHERE SITE = #{site} AND SFC = #{sfc} AND DISPATCH_SEQ >= #{currentSeq}
</update>
</mapper>

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.foreverwin.mesnac.common.dto.UsrDto;
import com.foreverwin.mesnac.listener.model.SysUser;
import com.foreverwin.mesnac.listener.model.Usr;
import com.foreverwin.mesnac.meapi.model.NwaUser;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@ -27,4 +28,7 @@ public interface UsrMapper extends BaseMapper<Usr> {
IPage findPage(IPage page,@Param("site")String site,@Param("user")String user);
List<String> findCustomFieldByUserId(@Param("site")String site, @Param("userList")List<NwaUser> userList);
}

@ -32,6 +32,7 @@
<resultMap id="usrDto" type="com.foreverwin.mesnac.common.dto.UsrDto">
<result column="USER_NAME" property="userName"/>
<result column="FULL_NAME" property="fullName"/>
<result column="WECHAT_ID" property="wechatId"/>
</resultMap>
@ -636,4 +637,18 @@
)
</if>
</select>
<select id="findCustomFieldByUserId" resultType="String">
SELECT cf.VALUE WECHAT_ID
FROM USR u
LEFT JOIN CUSTOM_FIELDS cf ON cf.HANDLE = u.HANDLE
<where>
u.SITE = #{site} AND
cf.VALUE IS NOT NULL AND
u.USER_ID IN
<foreach item="item" index="index" collection="userList" separator="," open="(" close=")">
UPPER(#{item.userName})
</foreach>
</where>
</select>
</mapper>

@ -18,11 +18,20 @@ public class SfcDto extends Sfc {
private String stepId;
private String plannedStartDate;
private String plannedCompDate;
private String stepSequence;
//工作令号
private String workOrder;
private String employeeDescription;
private String lastOperationStatus;
public String getStepSequence() {
return stepSequence;
}
public void setStepSequence(String stepSequence) {
this.stepSequence = stepSequence;
}
public String getEmployeeDescription() {
return employeeDescription;
}

@ -3,9 +3,11 @@ 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.constant.Constants;
import com.foreverwin.mesnac.common.dto.SfcDispatchDto;
import com.foreverwin.mesnac.common.enums.DispatchStatusEnum;
import com.foreverwin.mesnac.common.enums.HandleEnum;
import com.foreverwin.mesnac.common.service.InspectionTaskService;
import com.foreverwin.mesnac.common.service.SfcDispatchCommonService;
import com.foreverwin.mesnac.common.util.ExceptionUtil;
import com.foreverwin.mesnac.common.util.StringUtil;
@ -15,7 +17,6 @@ import com.foreverwin.mesnac.meapi.model.Router;
import com.foreverwin.mesnac.meapi.service.RouterService;
import com.foreverwin.mesnac.meapi.service.RouterStepService;
import com.foreverwin.mesnac.meapi.service.ShopOrderService;
import com.foreverwin.mesnac.meapi.service.WorkCenterService;
import com.foreverwin.mesnac.production.dto.SplitSfcDto;
import com.foreverwin.mesnac.production.mapper.SfcCrossMapper;
import com.foreverwin.mesnac.production.mapper.SplitSfcMapper;
@ -36,9 +37,8 @@ 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;
import java.util.*;
/**
* <p>
*
@ -57,7 +57,7 @@ public class SplitSfcServiceImpl extends ServiceImpl<SplitSfcMapper, SplitSfc> i
@Autowired
private SfcDispatchCommonService sfcDispatchCommonService;
@Autowired
private WorkCenterService workCenterService;
private InspectionTaskService inspectionTaskService;
@Autowired
private ShopOrderService shopOrderService;
@Autowired
@ -162,7 +162,7 @@ public class SplitSfcServiceImpl extends ServiceImpl<SplitSfcMapper, SplitSfc> i
splitSfc.setCreatedDateTime(LocalDateTime.now());
save(splitSfc);
Router routerBySfcBo = routerService.getRouterBySfcBo(HandleEnum.SFC.getHandle(site, sfc));
sfcDispatchCommonService.saveSplitSfcDispatch(site, CommonMethods.getUser(), "N", sfcData.getShopOrder(), sfc, operation, sfcData.getStepId(),newSfc, routerBySfcBo.getHandle());
sfcDispatchCommonService.saveSplitSfcDispatch(site, CommonMethods.getUser(), "N", sfcData.getShopOrder(), sfc, operation, sfcData.getStepId(),newSfc, routerBySfcBo.getHandle(),sfcData.getStepSequence());
return splitSfc;
} catch (Exception e) {
ExceptionUtil.throwException(e);
@ -259,7 +259,18 @@ public class SplitSfcServiceImpl extends ServiceImpl<SplitSfcMapper, SplitSfc> i
if (routerOperationByRouterBo.isEmpty()){
throw new BaseException("处置工艺路线没有步骤");
}
sfcDispatchCommonService.saveSplitSfcDispatch(site, CommonMethods.getUser(),"R", sfcData.getShopOrder(), sfc, operation, sfcDispatchBySfc.getStepId(),newSfc, maxRevisionRouter.getHandle());
sfcDispatchCommonService.saveSplitSfcDispatch(site, CommonMethods.getUser(),"R", sfcData.getShopOrder(), sfc, operation, sfcDispatchBySfc.getStepId(),newSfc, maxRevisionRouter.getHandle(), sfcData.getStepSequence());
//创建专检任务
Map<String, Object> paramMap=new HashMap<>();
paramMap.put("CATEGORY", Constants.INSPECTION_TYPE_P);
paramMap.put("SFC",sfc );
paramMap.put("SHOP_ORDER",sfcDispatchBySfc.getShopOrder());
paramMap.put("OPERATION",sfcDispatchBySfc.getOperation());
paramMap.put("STEP_ID",sfcDispatchBySfc.getStepId());;
paramMap.put("WORK_CENTER",sfcDispatchBySfc.getWorkCenter());
paramMap.put("RESRCE",sfcDispatchBySfc.getResrce());
paramMap.put("SFC_DISPATCH_DETAIL_BO",sfcDispatchBySfc.getHandle());
inspectionTaskService.createNewTask(paramMap);
}
SplitSfc splitSfc=new SplitSfc();
splitSfc.setHandle(HandleEnum.SPLIT_SFC.getHandle(site,newSfc));

@ -367,7 +367,7 @@
</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,ST.STATUS FROM SFC S
SELECT SO.SHOP_ORDER,cf.VALUE WORK_ORDER,OP.OPERATION,ss.STEP_ID,s.QTY,ST.STATUS,STEP_SEQUENCE FROM SFC S
JOIN SHOP_ORDER SO ON so.HANDLE=S.SHOP_ORDER_BO
JOIN STATUS ST ON ST.HANDLE = S.STATUS_BO
LEFT JOIN CUSTOM_FIELDS CF ON cf.HANDLE=s.SHOP_ORDER_BO AND CF."ATTRIBUTE"='WORK_ORDER'

@ -198,7 +198,7 @@ public class InspectionTaskManageServiceImpl implements InspectionTaskManageServ
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//如果专检不合格,生产新的检验任务
if (!Constants.INSPECTION_TYPE_P.equals(category) || !"NG".equals(result) || !"SUBMIT".equals(type)) {
/*if (!Constants.INSPECTION_TYPE_P.equals(category) || !"NG".equals(result) || !"SUBMIT".equals(type)) {
return;
}
@ -214,6 +214,6 @@ public class InspectionTaskManageServiceImpl implements InspectionTaskManageServ
newInspectionTask.setComments(null);
newInspectionTask.setCreatedDateTime(dateTime);
newInspectionTask.setModifiedDateTime(dateTime);
inspectionTaskService.save(newInspectionTask);
inspectionTaskService.save(newInspectionTask);*/
}
}

Loading…
Cancel
Save