Merge remote-tracking branch 'origin/master'

master
zpl 3 years ago
commit b7efdd03f9

@ -220,7 +220,7 @@ public class AbnormalBillController {
try{
return R.ok(abnormalBillService.anomalyReport(abnormalBill, abnormalBillDispose,ncGroupAndNcCodes,dutyCauseType,dutyType));
}catch(Exception e){
return R.failed("质量异常提报失败,"+e.getMessage());
return R.failed("质量异常提报失败:"+e.getMessage());
}
}
@ -234,7 +234,7 @@ public class AbnormalBillController {
try{
return R.ok(abnormalBillService.anomalyReportDevice(abnormalBill,abnormalBillDispose));
}catch (Exception e){
return R.failed("设备异常提报失败,"+e.getMessage());
return R.failed("设备异常提报失败:"+e.getMessage());
}
}
@ -251,7 +251,7 @@ public class AbnormalBillController {
try{
return R.ok( abnormalBillService.cancelBrowse(handle,cancelBrowse,code,cancelSendUserGroup));
}catch(Exception e){
return R.failed("取消失败,"+e.getMessage());
return R.failed("取消失败:"+e.getMessage());
}
}
@ -260,7 +260,7 @@ public class AbnormalBillController {
try{
return R.ok(abnormalBillService.backLog(abnormalBillDto));
}catch(Exception e){
return R.failed("检索失败,"+e.getMessage());
return R.failed("检索失败:"+e.getMessage());
}
}
@ -275,7 +275,7 @@ public class AbnormalBillController {
try{
return R.ok(abnormalBillService.findAllByAbnormalNo(abnormalBill));
}catch (Exception e){
return R.failed("检索失败,"+e.getMessage());
return R.failed("检索失败:"+e.getMessage());
}
}
@ -288,7 +288,7 @@ public class AbnormalBillController {
try{
return R.ok(abnormalBillService.findAllByAbnormalNoDevice(abnormalBill));
}catch (Exception e){
return R.failed("设备异常响应检索失败,"+e.getMessage());
return R.failed("设备异常响应检索失败:"+e.getMessage());
}
}
@ -304,7 +304,7 @@ public class AbnormalBillController {
abnormalBillService.resProcessing(abnormalBill);
return R.ok();
}catch(Exception e){
return R.failed("响应处理失败,"+e.getMessage());
return R.failed("响应处理失败:"+e.getMessage());
}
}
@ -320,7 +320,7 @@ public class AbnormalBillController {
abnormalBillService.programConfirm(abnormalBill,abnormalBillDispose);
return R.ok();
}catch (Exception e){
return R.failed("方案确认失败,"+e.getMessage());
return R.failed("方案确认失败:"+e.getMessage());
}
}
@ -338,7 +338,7 @@ public class AbnormalBillController {
abnormalBillService.dutyConfirm(abnormalBill,abnormalBillDispose,dutyCauseType,dutyType);
return R.ok();
}catch(Exception e){
return R.failed("判责提交失败,"+e.getMessage());
return R.failed("判责提交失败:"+e.getMessage());
}
}
@ -354,7 +354,7 @@ public class AbnormalBillController {
abnormalBillService.anomalyShutDown(abnormalBill,abnormalBillDispose);
return R.ok();
}catch (Exception e){
return R.failed("闭环关闭失败,"+e.getMessage());
return R.failed("闭环关闭失败:"+e.getMessage());
}
}
@ -364,7 +364,7 @@ public class AbnormalBillController {
try{
return R.ok(sfcDispatchCommonService.findResrceBySfc(sfcDispatch));
}catch (Exception e){
return R.failed("根据sfc查找设备失败,"+e.getMessage());
return R.failed("根据sfc查找设备失败:"+e.getMessage());
}
}
@ -373,7 +373,7 @@ public class AbnormalBillController {
try{
return R.ok(fileUploadedService.showFile(request,response));
}catch (Exception e){
return R.failed("显示图片失败,"+e.getMessage());
return R.failed("显示图片失败:"+e.getMessage());
}
}
@ -384,7 +384,7 @@ public class AbnormalBillController {
fileUploadedService.deleteFile(ftpPath,fileName);
return R.ok();
}catch (Exception e){
return R.failed("图片删除失败,"+e.getMessage());
return R.failed("图片删除失败:"+e.getMessage());
}
}

@ -46,6 +46,8 @@ public class AbnormalBillDto extends AbnormalBill {
private String workOrder;
private String productionCategory;
public String getSeq() {
return seq;
}
@ -143,4 +145,12 @@ public class AbnormalBillDto extends AbnormalBill {
public void setWorkOrder(String workOrder) {
this.workOrder = workOrder;
}
public String getProductionCategory() {
return productionCategory;
}
public void setProductionCategory(String productionCategory) {
this.productionCategory = productionCategory;
}
}

@ -5,10 +5,12 @@ import com.foreverwin.mesnac.anomaly.dto.AbnormalBillDto;
import com.foreverwin.mesnac.anomaly.model.AbnormalBill;
import com.foreverwin.mesnac.common.dto.ScrapDto;
import com.foreverwin.mesnac.meapi.model.UserGroup;
import com.foreverwin.mesnac.production.model.SplitSfc;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -35,9 +37,9 @@ public interface AbnormalBillMapper extends BaseMapper<AbnormalBill> {
List<AbnormalBill> findCountBySfc(@Param("site")String site, @Param("type")String type, @Param("sfc")String sfc, @Param("status")List<String> status);
Integer findAbnormalMethodBySFC(@Param("site")String site,@Param("sfc")String sfc);
Map<String,String> findAbnormalMethodBySFC(@Param("site")String site, @Param("abnormalBo")String abnormalBo, @Param("sfc")String sfc);
List<ScrapDto> findScrapDtoBySfc(@Param("site")String site, @Param("sfc")String sfc);
List<ScrapDto> findScrapDtoBySfc(@Param("site")String site, @Param("mainSfc")String mainSfc,@Param("splitSfc")List<SplitSfc> splitSfc);
List<AbnormalBill> getQCAbnormalList(@Param("site") String site);

@ -29,6 +29,8 @@ import com.foreverwin.mesnac.meapi.mapper.*;
import com.foreverwin.mesnac.meapi.model.*;
import com.foreverwin.mesnac.meapi.service.*;
import com.foreverwin.mesnac.meapi.util.StringUtils;
import com.foreverwin.mesnac.production.model.SplitSfc;
import com.foreverwin.mesnac.production.service.SplitSfcService;
import com.foreverwin.mesnac.quality.service.SelfReportService;
import com.foreverwin.modular.core.exception.BaseException;
import com.foreverwin.modular.core.exception.BusinessException;
@ -140,7 +142,10 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
private DataFieldListMapper dataFieldListMapper;
@Autowired
private AbnormalCauseMapper abnormalCauseMapper;;
private AbnormalCauseMapper abnormalCauseMapper;
@Autowired
private SplitSfcService splitSfcService;
@ -1144,19 +1149,84 @@ public class AbnormalBillServiceImpl extends ServiceImpl<AbnormalBillMapper, Abn
}
@Override
public boolean jgProductionIsScrap(String site,String sfc) {
public Map<String, String> jgProductionIsScrap(String abnormalNo, String site, String sfc) {
//查询该sfc在质量异常异常方案是否是报废,如果是则大于1
Integer num = abnormalBillMapper.findAbnormalMethodBySFC(site, sfc);
return num <= 0;
String abnormalBo = null;
if(!StringUtils.isBlank(abnormalNo)){
abnormalBo = HandleEnum.ABNORMAL_BILL.getHandle(site,abnormalNo);
}
return abnormalBillMapper.findAbnormalMethodBySFC(site,abnormalBo, sfc);
}
@Override
public List<ScrapDto> getScrapDtoBysfc(String site, String sfc) {
//判断该产品条码是否已经报废
if(this.jgProductionIsScrap(site,sfc)){
public List<ScrapDto> getScrapDtoBysfc(String abnormalNo, String site, String sfc) {
if(StringUtil.isBlank(site)){
site = CommonMethods.getSite();
}
//根据用户提报上来的sfc和异常单查找主SFC
Map<String, String> map = this.jgProductionIsScrap(abnormalNo, site, sfc);
String mainSfc = null;
String abnormalBo = null;
if(map != null){
mainSfc = map.get("SFC");
abnormalBo = map.get("HANDLE");
}
List<SplitSfc> splitSfcs = null;
SplitSfc splitSfc = new SplitSfc();
splitSfc.setSite(site);
//判断能否找到该主sfc。
if(StringUtil.isBlank(mainSfc)){
//判断该用户提报上来的sfc是否为空
if(StringUtil.isBlank(sfc)){
throw new BaseException("该异常单下没有报废的产品条码");
}
//如果不为空则判断根据这个sfc能从Z_SPLIT_SFC表中查找到主SFC吗然后在判断主SFC是否已经报废
splitSfc.setSplitSfc(sfc);
splitSfcs = splitSfcService.selectList(splitSfc);
if(splitSfcs.size()>0){
Map<String, String> map1 = this.jgProductionIsScrap(abnormalNo, site, splitSfcs.get(0).getSfc());
mainSfc = map1.get("SFC");
abnormalBo = map1.get("HANDLE");
}else{
if(!StringUtil.isBlank(sfc) && !StringUtil.isBlank(abnormalNo)){
throw new BaseException("该异常单下的产品条码不是报废");
}
throw new BaseException("该产品条码的异常方案不是报废");
}
}else if(StringUtil.isBlank(sfc)){
//根据异常单找到了主sfc并且sfc参数为空找到异常单主sfc下拆分的次sfc
splitSfc.setSfc(mainSfc);
splitSfcs = splitSfcService.selectList(splitSfc);
}
List<ScrapDto> scrapDtoBySfc = abnormalBillMapper.findScrapDtoBySfc(site, mainSfc,splitSfcs);
//如果用户提报上来的sfc不为空并且不是主sfc则把主sfc从scrapDtoBySfc去掉
if(!StringUtil.isBlank(sfc) && !sfc.equals(mainSfc)){
for (int i = 0; i < scrapDtoBySfc.size(); i++) {
if(scrapDtoBySfc.get(i).getSfc().equals(mainSfc)){
scrapDtoBySfc.remove(scrapDtoBySfc.get(i));
continue;
}
}
}
if(scrapDtoBySfc.size() <= 0){
throw new BaseException("该产品条码的异常方案不是报废");
}
List<ScrapDto> scrapDtoBySfc = abnormalBillMapper.findScrapDtoBySfc(site, sfc);
//查找到责任人,放到表里
AbnormalBillDispose abnormalBillDispose = new AbnormalBillDispose();
abnormalBillDispose.setAbnormalBillBo(abnormalBo);
List<AbnormalBillDispose> abnormalBillDisposes = abnormalBillDisposeService.selectList(abnormalBillDispose);
if(abnormalBillDisposes.size() > 0){
for (int i = 0; i < scrapDtoBySfc.size(); i++) {
scrapDtoBySfc.get(i).setDutyUser(abnormalBillDisposes.get(0).getPrincipalUser());
}
}
return scrapDtoBySfc;
}

@ -925,6 +925,7 @@
LEFT JOIN Z_NWA_USER ZNU ON ZNU.USER_NAME = ZAB.CREATED_USER AND ZNU.SITE = ZAB.SITE
LEFT JOIN SHOP_ORDER SO ON SO.SHOP_ORDER = ZAB.SHOP_ORDER AND SO.SITE = ZAB.SITE
LEFT JOIN CUSTOM_FIELDS CF ON CF.HANDLE = SO.HANDLE AND CF."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN CUSTOM_FIELDS CF2 ON CF2.HANDLE = SO.HANDLE AND CF2."ATTRIBUTE" = 'PRODUCT_CATEGORY'
LEFT JOIN Z_ABNORMAL_NC_CODE ZANC ON ZANC.ABNORMAL_BILL_BO = ZAB.HANDLE
LEFT JOIN NC_CODE_T NCT ON NCT.NC_CODE_BO = 'NCCodeBO:'|| ZAB.SITE || ',' || ZANC.NC_CODE AND NCT.LOCALE = #{language}
<where>
@ -962,6 +963,9 @@
<if test="abnormalBill.workOrder != null and abnormalBill.workOrder != ''">
AND CF.VALUE LIKE '%${abnormalBill.workOrder}%'
</if>
<if test="abnormalBill.productionCategory != null and abnormalBill.productionCategory != ''">
AND CF2.VALUE LIKE '%${abnormalBill.productionCategory}'
</if>
<choose>
<when test="userGroupList != null and userGroupList.size != 0">
AND ZAB.REPORT_SEND_USER_GROUP IN
@ -1081,17 +1085,34 @@
</where>
</select>
<select id="findAbnormalMethodBySFC" resultType="int">
SELECT COUNT(*)
<select id="findAbnormalMethodBySFC" resultType="map">
SELECT zabv.SFC SFC,zabv.HANDLE HANDLE
FROM Z_ABNORMAL_BILL_VIEW zabv
WHERE SITE = #{site} AND SFC = #{sfc} AND ABNORMAL_METHOD = 'C'
INNER JOIN (SELECT MAX(ZAB.HANDLE) HANDLE FROM Z_ABNORMAL_BILL_VIEW ZAB WHERE
ZAB.SITE = #{site}
<if test="sfc != null and sfc != ''">
AND ZAB.SFC = #{sfc}
</if>
<if test="abnormalBo != null and abnormalBo != ''">
AND ZAB.HANDLE = #{abnormalBo}
</if>
) ZAB ON ZAB.HANDLE = zabv.HANDLE
WHERE zabv.SITE = #{site}
<if test="sfc != null and sfc != ''">
AND zabv.SFC = #{sfc}
</if>
<if test="abnormalBo != null and abnormalBo != ''">
AND zabv.HANDLE = #{abnormalBo}
</if>
AND ABNORMAL_METHOD = 'C'
</select>
<select id="findScrapDtoBySfc" resultMap="scrapDto">
SELECT S.SFC SFC,
S2.STATUS STATUS,
SUBSTR(SS.OPERATION_BO ,INSTR(SS.OPERATION_BO ,',',1)+1,(INSTR(SS.OPERATION_BO ,'#',1)-1)-(INSTR(SS.OPERATION_BO ,',',1)+1)) || '/' || SS.STEP_ID OPERATION,
ZSD2.RESRCE RESRCE,ZSD2.SHOP_ORDER SHOP_ORDER,
ZSD2.RESRCE RESRCE,SO.SHOP_ORDER SHOP_ORDER,
CASE WHEN I.ITEM != 'NULL' THEN I.ITEM || '/' || I.REVISION END ITEM,
CASE WHEN R.ROUTER != 'NULL' THEN R.ROUTER || '/' || R.REVISION END ROUTER ,
CASE WHEN B.BOM != 'NULL' THEN B.BOM || '/' || B.REVISION END BOM,
@ -1102,22 +1123,30 @@
FROM SFC S
INNER JOIN SFC_ROUTING SR ON SR.SFC_BO = S.HANDLE
INNER JOIN SFC_ROUTER ST ON ST.SFC_ROUTING_BO = SR.HANDLE
INNER JOIN SFC_STEP SS ON SS.SFC_ROUTER_BO = ST.HANDLE/* AND (SS.QTY_IN_QUEUE > 0 OR SS.QTY_IN_WORK > 0)*/
INNER JOIN SFC_STEP SS ON SS.SFC_ROUTER_BO = ST.HANDLE AND (SS.QTY_IN_QUEUE > 0 OR SS.QTY_IN_WORK > 0)
INNER JOIN STATUS S2 ON S2.HANDLE = S.STATUS_BO
LEFT JOIN Z_SFC_DISPATCH ZSD2 ON ZSD2.DISPATCH_NO = S.SFC || '-' || SS.STEP_ID
AND ZSD2.DISPATCH_STATUS IN ('START','COMPLETE')
LEFT JOIN SHOP_ORDER SO ON SO.SHOP_ORDER = ZSD2.SHOP_ORDER AND SO.SITE = S.SITE
LEFT JOIN ITEM I ON I.HANDLE = SO.PLANNED_ITEM_BO
LEFT JOIN ROUTER R ON R.HANDLE = ZSD2.ROUTER_BO
INNER JOIN SHOP_ORDER SO ON SO.HANDLE = S.SHOP_ORDER_BO AND SO.SITE = S.SITE
INNER JOIN ITEM I ON I.HANDLE = SO.PLANNED_ITEM_BO
LEFT JOIN ROUTER R ON R.HANDLE = ST.ROUTER_BO
LEFT JOIN Z_SFC_SCRAP ZSS ON ZSS.SFC = S.SFC AND ZSS.SITE = S.SITE
LEFT JOIN BOM B ON B.HANDLE = SO.PLANNED_BOM_BO
INNER JOIN ( SELECT * FROM Z_ABNORMAL_BILL_VIEW ZABV WHERE ZABV.HANDLE = (SELECT MAX(HANDLE) FROM Z_ABNORMAL_BILL_VIEW ZABV2
LEFT JOIN (
SELECT *
FROM Z_ABNORMAL_BILL_VIEW ZABV
WHERE ZABV.HANDLE = (SELECT MAX(HANDLE)
FROM Z_ABNORMAL_BILL_VIEW ZABV2
WHERE ZABV2.SFC = #{mainSfc} )) ZABV
ON ZABV.SFC = S.SFC AND ZABV.SITE= S.SITE
<where>
ZABV2.SFC = #{sfc}
</where>
)) ZABV ON ZABV.SFC = S.SFC AND ZABV.SITE= S.SITE
<where>
S.SITE = #{site} AND S.SFC = #{sfc}
S.SITE = #{site} AND (S.SFC = #{mainSfc}
<if test="splitSfc != null and splitSfc.size > 0">
OR S.SFC IN
<foreach collection="splitSfc" item="item" index="index" separator="," open="(" close=")">
UPPER(#{item.splitSfc})
</foreach>
</if>)
AND (ZSD2.HANDLE IS NULL OR S.SFC = #{mainSfc})
</where>
</select>

@ -26,6 +26,8 @@ public class ScrapDto {
private String type;
private String dutyUser;
public String getSfc() {
return sfc;
}
@ -105,4 +107,12 @@ public class ScrapDto {
public void setType(String type) {
this.type = type;
}
public String getDutyUser() {
return dutyUser;
}
public void setDutyUser(String dutyUser) {
this.dutyUser = dutyUser;
}
}

@ -182,6 +182,8 @@ public class SfcDispatchDto implements Serializable{
*/
private String component;
private String componentDescription;
private String texture;
private String matSpec;
private String isCompleted;
private BigDecimal completedQty;
private String resourceWorkCenter;
@ -604,6 +606,22 @@ public class SfcDispatchDto implements Serializable{
this.componentDescription = componentDescription;
}
public String getTexture() {
return texture;
}
public void setTexture(String texture) {
this.texture = texture;
}
public String getMatSpec() {
return matSpec;
}
public void setMatSpec(String matSpec) {
this.matSpec = matSpec;
}
public String getIsCompleted() {
return isCompleted;
}

@ -3,6 +3,7 @@ package com.foreverwin.mesnac.common.service;
import com.foreverwin.mesnac.common.dto.ScrapDto;
import java.util.List;
import java.util.Map;
/**
* @Description TODO
@ -27,15 +28,16 @@ public interface AnomalyService {
/**
*
* @Param abnormalNo
* @param sfc
* @return
*/
boolean jgProductionIsScrap(String site,String sfc);
Map<String, String> jgProductionIsScrap(String abnormalNo, String site, String sfc);
/**
*
*/
List<ScrapDto> getScrapDtoBysfc(String site, String sfc);
List<ScrapDto> getScrapDtoBysfc(String abnormalNo,String site, String sfc);
void anomalyReveseRepairShutDown(String abnormalNo);

@ -2,6 +2,8 @@ package com.foreverwin.mesnac.common.service;
import com.foreverwin.mesnac.common.dto.SfcDispatchDto;
import java.math.BigDecimal;
/**
*
*
@ -34,7 +36,7 @@ public interface SfcDispatchCommonService {
* @param dispatchNo
* @param dispatchStatus
*/
void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus);
void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus, BigDecimal workHour);
/**
* sfc

@ -39,18 +39,13 @@ public class CallItemController {
* @return
*/
@ResponseBody
@PostMapping("/findCallItemList")
public R findCallItemList(@RequestBody CallItem callItem){
@GetMapping("/findCallItemList")
public R findCallItemList(@RequestParam(required = false) Map paramMap){
List<CallItem> result;
try {
callItem.setSite(CommonMethods.getSite());
if (callItem.getStartFromDate_S() != null) {
callItem.setStartFromDate(DateUtil.parse(callItem.getStartFromDate_S()));
}
if (callItem.getStartToDate_S() != null) {
callItem.setStartToDate(DateUtil.parse(callItem.getStartToDate_S()));
}
result = callItemService.findCallItemList(callItem);
String site = CommonMethods.getSite();
paramMap.put("site", site);
result = callItemService.findCallItemList(paramMap);
} catch (Exception e) {
return R.failed(e.getMessage());
}

@ -1,14 +1,11 @@
package com.foreverwin.mesnac.dispatch.controller;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.foreverwin.mesnac.common.dto.SfcDispatchDto;
import com.foreverwin.mesnac.common.enums.DispatchStatusEnum;
import com.foreverwin.mesnac.common.util.StringUtil;
import com.foreverwin.mesnac.dispatch.model.SfcDispatch;
import com.foreverwin.mesnac.dispatch.service.SfcDispatchService;
import com.foreverwin.modular.core.exception.BusinessException;
import com.foreverwin.modular.core.util.CommonMethods;
import com.foreverwin.modular.core.util.FrontPage;
import com.foreverwin.modular.core.util.R;

@ -4,12 +4,12 @@ import com.foreverwin.mesnac.common.dto.SfcDispatchDto;
import com.foreverwin.mesnac.dispatch.dto.IssueItemDto;
import com.foreverwin.mesnac.dispatch.model.CallItem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.foreverwin.mesnac.dispatch.model.SfcDispatch;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
/**
* <p>
@ -30,7 +30,7 @@ public interface CallItemMapper extends BaseMapper<CallItem> {
List<CallItem> selectCallItemAndType(@Param("sfcDispatchBo") String sfcDispatchBo);
List<CallItem> findCallItemList(CallItem callItem);
List<CallItem> findCallItemList(Map paramMap);
List<CallItem> findCallItemDetailList(CallItem callItem);
@ -51,6 +51,8 @@ public interface CallItemMapper extends BaseMapper<CallItem> {
List<CallItem> findRefreshCallItemPda(@Param("list") List<String> list);
void updateCallItemStatusByHandle(@Param("status") String status, @Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List<CallItem> list);
void updateCallItemStatusByCallItemNo(@Param("status") String status, @Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List<String> list);
void refreshRequiredTime(@Param("user") String user, @Param("dateTime") LocalDateTime dateTime, @Param("list") List<String> list);

@ -6,6 +6,7 @@ import com.foreverwin.mesnac.dispatch.model.SfcDispatch;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@ -33,20 +34,26 @@ public interface SfcDispatchMapper extends BaseMapper<SfcDispatch> {
/**
*
*
* @param site
* @param site
* @param dispatchNo
* @param dispatchStatus
* @param modifyUser
* @param modifiedDateTime
* @param workHour
*/
void updateSfcDispatchStatus(@Param("site") String site,
@Param("dispatchNo") String dispatchNo,
@Param("dispatchStatus") String dispatchStatus,
@Param("modifyUser") String modifyUser,
@Param("modifiedDateTime") LocalDateTime modifiedDateTime);
@Param("modifiedDateTime") LocalDateTime modifiedDateTime, @Param("workHour")BigDecimal workHour);
SfcDispatchDto findResrceBySfc(@Param("sfcDispatch")SfcDispatchDto sfcDispatch, @Param("site") String site, @Param("array") String[] array);
/**
*
* @param sfcDispatch
* @param site
* @return
*/
SfcDispatchDto findResrceBySfc(@Param("sfcDispatch")SfcDispatchDto sfcDispatch, @Param("site") String site);
SfcDispatchDto findSfcDispatchBySfc(@Param("site")String site, @Param("dto")SfcDispatchDto sfcDispatch);

@ -37,9 +37,9 @@ public interface CallItemService extends IService<CallItem> {
/**
*
*
* @param callItem
* @param paramMap
*/
List<CallItem> findCallItemList(CallItem callItem);
List<CallItem> findCallItemList(Map paramMap);
/**
*

@ -137,8 +137,8 @@ public class CallItemServiceImpl extends ServiceImpl<CallItemMapper, CallItem> i
}
@Override
public List<CallItem> findCallItemList(CallItem callItem) {
return callItemMapper.findCallItemList(callItem);
public List<CallItem> findCallItemList(Map paramMap) {
return callItemMapper.findCallItemList(paramMap);
}
@Override
@ -174,13 +174,8 @@ public class CallItemServiceImpl extends ServiceImpl<CallItemMapper, CallItem> i
return;
}
//派工单号集合
List<String> dispatchBoList = new ArrayList<>();
for (CallItem callItem : callItemList) {
dispatchBoList.add(callItem.getSfcDispatchBo());
}
this.updateCallItemStatusByDispatchBo(Constants.CALL_ITEM_STATUS_CALLED, user, dispatchBoList);
LocalDateTime nowDate = LocalDateTime.now();
callItemMapper.updateCallItemStatusByHandle(Constants.CALL_ITEM_STATUS_CALLED, user, nowDate, callItemList);
}
@Override

@ -37,6 +37,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@ -684,16 +685,16 @@ public class SfcDispatchServiceImpl extends ServiceImpl<SfcDispatchMapper, SfcDi
}
@Override
public void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus) {
public void updateSfcDispatchStatus(String site, String user, String dispatchNo, String dispatchStatus, BigDecimal workHour) {
LocalDateTime nowDateTime = LocalDateTime.now();
sfcDispatchMapper.updateSfcDispatchStatus(site, dispatchNo, dispatchStatus, user, nowDateTime);
sfcDispatchMapper.updateSfcDispatchStatus(site, dispatchNo, dispatchStatus, user, nowDateTime,workHour);
}
@Override
public SfcDispatchDto findResrceBySfc(SfcDispatchDto sfcDispatch) {
String site = CommonMethods.getSite();
String[] status = {"START","COMPLETE"};
return sfcDispatchMapper.findResrceBySfc(sfcDispatch,site,status);
return sfcDispatchMapper.findResrceBySfc(sfcDispatch,site);
}
@Override

@ -39,6 +39,10 @@
<result column="WORK_CENTER" property="workCenter" />
<result column="DISPATCH_NO" property="dispatchNo" />
<result column="DISPATCH_QTY" property="dispatchQty" />
<result column="COMPONENT" property="component" />
<result column="COMPONENT_DESCRIPTION" property="componentDescription" />
<result column="TEXTURE" property="texture" />
<result column="SPEC" property="spec" />
<result column="RESOURCE_TYPE" property="resourceType" />
<result column="BLANKING_SIZE" property="blankingSize" />
<result column="RESOURCE_DESCRIPTION" property="resourceDescription" />
@ -640,14 +644,14 @@
<select id="findCallItemList" resultMap="FullResultMap">
SELECT *
FROM (
SELECT ZCI.SITE, CF.VALUE WORK_ORDER, CS.VALUE ITEM_NUMBER, ZSD.WORK_CENTER, ZSD.SHOP_ORDER, ZSD.SFC, ZSD.DISPATCH_NO, IT.ITEM, ITT.DESCRIPTION ITEM_DESCRIPTION, ZSD.BLANKING_SIZE,
SELECT ZCI.HANDLE, ZCI.SITE, CF.VALUE WORK_ORDER, CS.VALUE ITEM_NUMBER, ZSD.WORK_CENTER, ZSD.SHOP_ORDER, ZSD.SFC, ZSD.DISPATCH_NO, IT.ITEM, ITT.DESCRIPTION ITEM_DESCRIPTION, ZSD.BLANKING_SIZE,
ZSD.STEP_ID, ZCI.SFC_DISPATCH_BO, ZSD.DISPATCH_STATUS, ZCI.OPERATION, OPT.DESCRIPTION OPERATION_DESCRIPTION, ZSD.RESOURCE_TYPE, ZCI.RESRCE, ZSD.DISPATCH_QTY, ZSD.PLANNED_START_DATE, ZSD.REMARK,
CASE WHEN VP.NEWS = '1' AND VP.CALLES = '0' AND VP.ISSUED = '0' THEN 'NONE'
WHEN VP.NEWS = '0' AND (VP.CALLES = '1' OR VP.ISSUED = '1') THEN 'ALL'
ELSE 'PART' END CALL_STATUS,
CASE WHEN (VP.NEWS = '1' OR VP.CALLES = '1') AND VP.ISSUED = '0' THEN 'NONE'
WHEN VP.NEWS = '0' AND VP.CALLES = '0' AND VP.ISSUED = '1' THEN 'ALL'
ELSE 'ALL' END ISSUE_STATUS
ELSE 'ALL' END ISSUE_STATUS, CP.ITEM COMPONENT, CT.DESCRIPTION COMPONENT_DESCRIPTION, C3.VALUE TEXTURE, C4.VALUE SPEC
FROM Z_SFC_DISPATCH ZSD
INNER JOIN Z_CALL_ITEM ZCI ON ZCI.SFC_DISPATCH_BO = ZSD.HANDLE
INNER JOIN SHOP_ORDER SO ON SO.SITE = ZSD.SITE AND ZSD.SHOP_ORDER = SO.SHOP_ORDER
@ -656,6 +660,9 @@
INNER JOIN ITEM IT ON IT.HANDLE = SO.ITEM_BO
LEFT JOIN ITEM_T ITT ON ITT.ITEM_BO = IT.HANDLE AND ITT.LOCALE = 'zh'
INNER JOIN ITEM CP ON CP.HANDLE = ZCI.COMPONENT_BO
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'
INNER JOIN OPERATION OP ON OP.SITE = ZCI.SITE AND OP.OPERATION = ZCI.OPERATION AND OP.CURRENT_REVISION = 'true'
LEFT JOIN OPERATION_T OPT ON OPT.OPERATION_BO = OP.HANDLE AND OPT.LOCALE = 'zh'
LEFT JOIN (
@ -692,15 +699,18 @@
<if test="component != null and component != ''">
AND CP.ITEM = #{component}
</if>
<if test="texture != null and texture != ''">
AND C3.VALUE LIKE '%'||#{texture}||'%'
</if>
<if test="matSpec != null and matSpec != ''">
AND C4.VALUE LIKE '%'||#{matSpec}||'%'
</if>
<if test="startFromDate != null">
AND ZSD.PLANNED_START_DATE >= #{startFromDate}
</if>
<if test="startToDate != null">
AND ZSD.PLANNED_START_DATE &lt;= #{startToDate}
</if>
GROUP BY ZCI.SITE, CF.VALUE, CS.VALUE, ZSD.WORK_CENTER, ZSD.SHOP_ORDER, ZSD.SFC, ZSD.DISPATCH_NO, IT.ITEM, ITT.DESCRIPTION, ZSD.BLANKING_SIZE,
ZSD.STEP_ID, ZCI.SFC_DISPATCH_BO, ZSD.DISPATCH_STATUS, ZCI.OPERATION, OPT.DESCRIPTION, ZSD.RESOURCE_TYPE, ZCI.RESRCE, ZSD.DISPATCH_QTY, ZSD.PLANNED_START_DATE, ZSD.REMARK,
VP.NEWS, VP.CALLES, VP.ISSUED, VP.CANCELED
)
WHERE 1= 1
<if test="callStatus != null and callStatus != ''">
@ -830,6 +840,14 @@
ORDER BY ZSD.SFC, ZSD.STEP_ID, ZCI.CALL_TYPE
</select>
<update id="updateCallItemStatusByHandle">
UPDATE Z_CALL_ITEM SET STATUS = #{status}, MODIFY_USER = #{user}, MODIFIED_DATE_TIME = #{dateTime}
WHERE STATUS != '804' AND HANDLE IN
<foreach item="item" collection="list" separator="," open="(" close=")" index="">
#{item.handle}
</foreach>
</update>
<update id="updateCallItemStatusByDispatchBo">
UPDATE Z_CALL_ITEM SET STATUS = #{status}, MODIFY_USER = #{user}, MODIFIED_DATE_TIME = #{dateTime}
WHERE STATUS != '804' AND SFC_DISPATCH_BO IN

@ -65,6 +65,9 @@
<result column="SHOP_ORDER_TYPE" property="shopOrderType" />
<result column="ITEM_DESCRIPTION" property="itemDescription" />
<result column="COMPONENT" property="component" />
<result column="COMPONENT_DESCRIPTION" property="componentDescription" />
<result column="TEXTURE" property="texture" />
<result column="MAT_SPEC" property="matSpec" />
<result column="COMPLETED_QTY" property="completedQty" />
<result column="RESOURCE_DESCRIPTION" property="resourceDescription" />
<result column="COMPONENT_DESCRIPTION" property="componentDescription" />
@ -676,12 +679,12 @@
WHEN WIP.DISPATCH_STATUS = 'PAUSE' THEN N'暂停' WHEN WIP.DISPATCH_STATUS = 'RELEASE' THEN N'发布'
END AS STATUS_NAME, 'ADMINISTRATOR' AS ROLE
FROM (
SELECT DISTINCT SD.HANDLE, SD.SITE, SD.SHOP_ORDER, SD.DISPATCH_NO, C2.VALUE ITEM_NUMBER, C1.VALUE WORK_ORDER, IM.HANDLE ITEM_BO, IM.ITEM, IT.DESCRIPTION ITEM_DESCRIPTION, SD.SFC, SD.DISPATCH_STATUS,
SELECT SD.HANDLE, SD.SITE, SD.SHOP_ORDER, SD.DISPATCH_NO, C2.VALUE ITEM_NUMBER, C1.VALUE WORK_ORDER, IM.HANDLE ITEM_BO, IM.ITEM, IT.DESCRIPTION ITEM_DESCRIPTION, SD.SFC, SD.DISPATCH_STATUS,
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,
WR.WORK_CENTER RESOURCE_WORK_CENTER
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,
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
INNER JOIN SHOP_ORDER SO ON SO.SITE = SD.SITE AND SO.SHOP_ORDER = SD.SHOP_ORDER
@ -692,8 +695,10 @@
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
INNER JOIN ITEM CP ON CP.HANDLE = BC.COMPONENT_GBO
LEFT JOIN ITEM_T CPT ON CPT.ITEM_BO = CP.HANDLE AND CPT.LOCALE = 'zh'
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'
LEFT JOIN WORK_CENTER_MEMBER WCM ON WCM.WORK_CENTER_OR_RESOURCE_GBO = 'ResourceBO:' || SD.SITE || ',' || SD.RESRCE
LEFT JOIN WORK_CENTER WR ON WR.HANDLE = WCM.WORK_CENTER_BO
WHERE SD.SITE = #{site}
@ -733,17 +738,23 @@
<if test="turnOperation != null and turnOperation != ''">
AND SD.TURN_OPERATION = #{turnOperation}
</if>
<if test="isDispatch != null and isDispatch != ''">
AND SD.IS_DISPATCH = #{isDispatch}
</if>
<if test="blankingSize != null and blankingSize != ''">
AND SD.BLANKING_SIZE LIKE '%'||#{blankingSize}||'%'
</if>
<if test="component != null and component != ''">
AND CP.ITEM = #{component}
</if>
<if test="componentDescription != null and componentDescription != ''">
AND CPT.DESCRIPTION LIKE '%' || #{componentDescription} || '%'
AND CT.DESCRIPTION LIKE '%' || #{componentDescription} || '%'
</if>
<if test="isDispatch != null and isDispatch != ''">
AND SD.IS_DISPATCH = #{isDispatch}
<if test="texture != null and texture != ''">
AND C3.VALUE LIKE '%'|| #{texture} ||'%'
</if>
<if test="blankingSize != null and blankingSize != ''">
AND SD.BLANKING_SIZE LIKE '%'||#{blankingSize}||'%'
<if test="matSpec != null and matSpec != ''">
AND C4.VALUE LIKE '%'|| #{matSpec}|| '%'
</if>
<if test="startFromDate != null">
AND SO.PLANNED_START_DATE >= TO_DATE(#{startFromDate}, 'YYYY-MM-DD')
@ -757,6 +768,11 @@
<if test="completeToDate != null">
AND SO.PLANNED_COMP_DATE &lt;= TO_DATE(#{completeToDate}|| '23:59:59', 'YYYY-MM-DD HH24:MI:SS')
</if>
GROUP BY SD.HANDLE, SD.SITE, SD.SHOP_ORDER, SD.DISPATCH_NO, C2.VALUE, C1.VALUE, IM.HANDLE, IM.ITEM, IT.DESCRIPTION, SD.SFC, SD.DISPATCH_STATUS,
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
) 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
@ -770,7 +786,7 @@
<update id="updateSfcDispatchStatus" >
UPDATE Z_SFC_DISPATCH SET DISPATCH_STATUS = #{dispatchStatus}, MODIFY_USER = #{modifyUser}, MODIFIED_DATE_TIME = #{modifiedDateTime}
<if test="dispatchStatus== 'COMPLETE'">
, ACTUAL_COMPLETE_DATE = #{modifiedDateTime}
, ACTUAL_COMPLETE_DATE = #{modifiedDateTime} , ACTUAL_PROD_HOURS = #{workHour}
</if>
<if test="dispatchStatus== 'START'">
, ACTUAL_START_DATE = #{modifiedDateTime}
@ -783,17 +799,18 @@
FROM Z_SFC_DISPATCH zsd
<where>
SITE = #{site}
<if test="sfcDispatch != null">
<if test="sfcDispatch.sfc != null and sfcDispatch.sfc != ''">
AND SFC = #{sfcDispatch.sfc}
</if>
</if>
<if test="array != null">
AND RESRCE IS NOT NULL
AND SFC = #{sfcDispatch.sfc}
AND MODIFIED_DATE_TIME = (
SELECT MAX(zsd2.MODIFIED_DATE_TIME) FROM Z_SFC_DISPATCH zsd2
WHERE SFC=#{sfcDispatch.sfc} AND zsd2.RESRCE IS NOT NULL
)
<!-- <if test="array != null">
AND DISPATCH_STATUS IN
<foreach open="(" item="item" collection="array" separator="," close=")">
UPPER(#{item})
</foreach>
</if>
</if>-->
</where>
</select>

@ -84,6 +84,9 @@ public class NcCodeServiceImpl extends ServiceImpl<NcCodeMapper, NcCode> impleme
@Override
public List<NcCodeDto> findNcCodeDescriptionByNcCode(String ncCode) {
String site = CommonMethods.getSite();
if(StringUtils.isBlank(ncCode)){
return null;
}
String locale = LocaleContextHolder.getLocale().getLanguage();
String[] split = ncCode.split(",");

@ -138,11 +138,11 @@ public class SfcScrapController {
* @return
*/
@GetMapping("/getScrapDtoBysfc")
public R getScrapDtoBysfc(String site,String sfc){
public R getScrapDtoBysfc(String site,String abnormalNo,String sfc){
try{
return R.ok(anomalyService.getScrapDtoBysfc(site,sfc));
return R.ok(anomalyService.getScrapDtoBysfc(abnormalNo,site,sfc));
}catch (Exception e){
return R.failed("产品报废检索报错"+e.getMessage());
return R.failed("产品报废检索报错:"+e.getMessage());
}
}

@ -21,4 +21,5 @@ 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,@Param("abnormalNo") String abnormalNo);
}

@ -85,6 +85,11 @@ public class SfcScrap extends Model<SfcScrap> {
@TableField("MODIFIED_DATE_TIME")
private LocalDateTime modifiedDateTime;
@TableField("DUTY_USER")
private String dutyUser;
public String getHandle() {
return handle;
@ -182,7 +187,15 @@ public class SfcScrap extends Model<SfcScrap> {
this.modifiedDateTime = modifiedDateTime;
}
public static final String HANDLE = "HANDLE";
public String getDutyUser() {
return dutyUser;
}
public void setDutyUser(String dutyUser) {
this.dutyUser = dutyUser;
}
public static final String HANDLE = "HANDLE";
public static final String SITE = "SITE";

@ -29,6 +29,11 @@ public interface SfcScrapService extends IService<SfcScrap> {
List<SfcScrap> selectList(SfcScrap sfcScrap);
/**
* sfcSFC
* @param param
* @return
*/
List<SfcScrap> scrap(HashMap<String,Object> param) ;
public void generatorWord(String shopOrder, String sfc, HttpServletResponse response, HttpServletRequest request);

@ -30,9 +30,11 @@ import com.foreverwin.mesnac.meapi.service.*;
import com.foreverwin.mesnac.production.mapper.SfcCrossMapper;
import com.foreverwin.mesnac.production.mapper.SfcDataAssembleMapper;
import com.foreverwin.mesnac.production.model.LoadInventory;
import com.foreverwin.mesnac.production.model.SfcHoldLog;
import com.foreverwin.mesnac.production.service.LoadInventoryService;
import com.foreverwin.mesnac.production.service.PodTemplateService;
import com.foreverwin.mesnac.production.service.SfcCrossService;
import com.foreverwin.mesnac.production.service.SfcHoldLogService;
import com.foreverwin.modular.core.exception.BaseException;
import com.foreverwin.modular.core.meext.MEServices;
import com.foreverwin.modular.core.util.CommonMethods;
@ -88,6 +90,8 @@ public class PodTemplateServiceImpl implements PodTemplateService {
private SfcDispatchCommonService sfcDispatchCommonService;
@Autowired
private LoadInventoryService loadInventoryService;
@Autowired
private SfcHoldLogService sfcHoldLogService;
@Override
public Map<String, Object> resrceEnter(WorkCenterDto workCenterDto) {
@ -235,7 +239,7 @@ public class PodTemplateServiceImpl implements PodTemplateService {
ExceptionUtil.throwException(e);
}
//更改派工单状态
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.START.getCode());
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.START.getCode(),null);
});
}
@ -309,9 +313,18 @@ public class PodTemplateServiceImpl implements PodTemplateService {
LocalDateTime startTime = sfcService.getSfcStartTime(HandleEnum.SFC.getHandle(site, sfc));
long workHourSeconds = Duration.between(startTime, LocalDateTime.now()).getSeconds();
BigDecimal workHour = new BigDecimal(workHourSeconds).divide(BigDecimal.valueOf(3600), 2, RoundingMode.HALF_UP);
//减去暂停时间
QueryWrapper<SfcHoldLog> queryWrapper=new QueryWrapper<>();
queryWrapper.eq(SfcHoldLog.SFC,sfc);
queryWrapper.eq(SfcHoldLog.STEP_ID,stepId);
List<SfcHoldLog> list = sfcHoldLogService.list(queryWrapper);
if (!list.isEmpty()){
BigDecimal holdTime = list.stream().map(SfcHoldLog::getHoldDuration).reduce(BigDecimal.ZERO, BigDecimal::add);
workHour=workHour.subtract(holdTime);
}
sfcCrossService.completeAction(site, currentRevisionRef.getHandle(), resrce, sfcServiceById.getHandle(), qty);
//更改派工单状态
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.COMPLETE.getCode());
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.COMPLETE.getCode(),workHour);
//报工
sendErp(sfc, stepId, qty, BigDecimal.ZERO, workHour);
} catch (Exception e) {

@ -12,6 +12,7 @@ import com.foreverwin.mesnac.common.util.StringUtil;
import com.foreverwin.mesnac.meapi.mapper.SfcMapper;
import com.foreverwin.mesnac.meapi.model.Sfc;
import com.foreverwin.mesnac.production.mapper.SfcScrapMapper;
import com.foreverwin.mesnac.production.mapper.SplitSfcMapper;
import com.foreverwin.mesnac.production.model.SfcScrap;
import com.foreverwin.mesnac.production.service.PodTemplateService;
import com.foreverwin.mesnac.production.service.SfcScrapService;
@ -77,6 +78,9 @@ public class SfcScrapServiceImpl extends ServiceImpl<SfcScrapMapper, SfcScrap> i
@Autowired
private UserService userService;
@Autowired
private SplitSfcMapper splitSfcMapper;
@Override
public IPage<SfcScrap> selectPage(FrontPage<SfcScrap> frontPage, SfcScrap sfcScrap) {
QueryWrapper<SfcScrap> queryWrapper = new QueryWrapper<>();
@ -92,6 +96,7 @@ public class SfcScrapServiceImpl extends ServiceImpl<SfcScrapMapper, SfcScrap> i
}
@Override
public List<SfcScrap> scrap(HashMap<String,Object> param) {
String user = CommonMethods.getUser();
@ -110,7 +115,6 @@ public class SfcScrapServiceImpl extends ServiceImpl<SfcScrapMapper, SfcScrap> i
}
}
String str = JSONUtil.toJsonStr(param.get("sfcScrap"));
List<SfcScrap> _sfcScrapList = JSONArray.parseArray(str, SfcScrap.class);
List<SfcScrap> sfcScrapsList = new ArrayList<>();
@ -136,7 +140,6 @@ public class SfcScrapServiceImpl extends ServiceImpl<SfcScrapMapper, SfcScrap> i
throw new BaseException("该sfc不存在不能报废");
}
if(!StringUtil.isBlank(sfcScraps.getOperation())){
String[] split = sfcScraps.getOperation().split("/");
sfcScrap.setOperation(split[0]);
@ -144,16 +147,19 @@ public class SfcScrapServiceImpl extends ServiceImpl<SfcScrapMapper, SfcScrap> i
}
sfcScrap.setType(type.toString());
sfcScrap.setReason(reason);
//判断该SFC的数量是否>=0;
if(sfc.getQty() <= 0){
throw new BaseException("该sfc的数量为0不能报废");
}
sfcScrap.setQty(sfc.getQty());
sfcScrap.setDutyUser(sfcScraps.getDutyUser());
sfcScrap.setCreatedUser(user);
sfcScrap.setCreatedDateTime(now);
sfcScrap.setModifiedUser(user);
sfcScrap.setModifiedDateTime(now);
//向生产派工那边发送数据
// podTemplateService.sendErp(sfcScrap.getSfc(),sfcScrap.getStepId(),BigDecimal.valueOf(0L),BigDecimal.valueOf(sfcScrap.getQty()));
podTemplateService.sendErp(sfcScrap.getSfc(),sfcScrap.getStepId(),BigDecimal.valueOf(0L),BigDecimal.valueOf(sfcScrap.getQty()),BigDecimal.valueOf(0L));
try{
//调用mes公共接口报废
@ -165,7 +171,6 @@ public class SfcScrapServiceImpl extends ServiceImpl<SfcScrapMapper, SfcScrap> i
throw new BaseException("调用mes公共接口失败"+e.getMessage());
}
sfcScrapsList.add(sfcScrap);
}
//保存

@ -101,6 +101,9 @@ public class SplitSfcServiceImpl extends ServiceImpl<SplitSfcMapper, SplitSfc> i
if (sfcDto==null){
throw new BaseException("未找到闭环关闭的质量异常");
}
if(StringUtil.isBlank(sfcDto.getNcQty())){
throw new BaseException("质量异常提报不良品数量为空,不能拆分");
}
sfcData.setQty(Double.valueOf(sfcDto.getNcQty()));
sfcData.setAbnormalNo(sfcDto.getAbnormalNo());
return sfcData;

@ -28,6 +28,7 @@ import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.ArrayList;
@ -152,7 +153,7 @@ public class WorkShopTransferServiceImpl extends ServiceImpl<WorkShopTransferMap
Operation currentRevisionRef = operationService.getCurrentRevisionRef(site, dto.getOperation());
sfcCrossService.startAction(site, currentRevisionRef.getHandle(), dto.getResrce(), sfcBO, dto.getQty());
//更改派工单状态
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dto.getDispatchNo(), DispatchStatusEnum.START.getCode());
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dto.getDispatchNo(), DispatchStatusEnum.START.getCode(),null);
} catch (Exception e) {
ExceptionUtil.throwException(e);
@ -221,7 +222,7 @@ public class WorkShopTransferServiceImpl extends ServiceImpl<WorkShopTransferMap
//转入完成
sfcCrossService.completeAction(site, currentRevisionRef.getHandle(), dto.getResrce(), sfcBO, dto.getQty());
//更改派工单状态
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dto.getDispatchNo(), DispatchStatusEnum.COMPLETE.getCode());
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dto.getDispatchNo(), DispatchStatusEnum.COMPLETE.getCode(), BigDecimal.ZERO);
} catch (Exception e) {
ExceptionUtil.throwException(e);

@ -431,20 +431,22 @@
</delete>
<!-- BaseMapper标准查询/修改/删除 -->
<select id="generatorWord" resultType="hashmap">
SELECT DISTINCT NVL(WCT.DESCRIPTION,' ') WORK_CENTER,NVL(WO.VALUE,' ') WORK_ORDER,NVL(WO2.VALUE,' ') DWG_NO,NVL(ZSS.QTY,0) QTY,NVL(ZSS.OPERATION,' ') OPERATION,
SELECT DISTINCT NVL(WCT.DESCRIPTION,' ') WORK_CENTER,NVL(WO.VALUE,' ') WORK_ORDER,NVL(WO2.VALUE,' ') DWG_NO,NVL(ZSS.QTY,0) QTY,NVL(OT.DESCRIPTION,' ') OPERATION,
NVL(ZSS.REASON,' ') REASON,NVL(ZSS."TYPE",' ') "TYPE",
CASE WHEN I1.VALUE != NULL THEN NVL(I1.VALUE * I.QTY_MULTIPLIER,0)
WHEN I2.VALUE != NULL THEN NVL(I2.VALUE * I.QTY_MULTIPLIER,0)
ELSE NVL(I.QTY_MULTIPLIER,0) END WEIGHT,NVL(I.ITEM,' ') ITEM,NVL(S.SFC,' ') SFC,NVL(it.DESCRIPTION,' ') ITEM_DESCRIPTION,
NVL(SO.SHOP_ORDER,' ') SHOP_ORDER
NVL(SO.SHOP_ORDER,' ') SHOP_ORDER,NVL(ZSS.DUTY_USER,' ') DUTY_USER
FROM
SHOP_ORDER SO
LEFT JOIN WORK_CENTER WC ON SO.PLANNED_WORK_CENTER_BO = WC.HANDLE
LEFT JOIN WORK_CENTER_T WCT ON WCT.WORK_CENTER_BO = WC.HANDLE AND WCT.LOCALE = 'zh'
LEFT JOIN WORK_CENTER_T WCT ON WCT.WORK_CENTER_BO = WC.HANDLE AND WCT.LOCALE = #{locale}
LEFT JOIN CUSTOM_FIELDS WO ON WO.HANDLE = SO.HANDLE AND WO."ATTRIBUTE" = 'WORK_ORDER'
LEFT JOIN CUSTOM_FIELDS WO2 ON WO2.HANDLE = SO.PLANNED_ITEM_BO AND WO2."ATTRIBUTE" = 'DWG_NO'
INNER JOIN SFC S ON S.SFC = #{sfc} AND S.SITE = #{site}
LEFT JOIN Z_SFC_SCRAP ZSS ON ZSS.SFC = S.SFC
LEFT JOIN OPERATION O ON O.OPERATION = ZSS.OPERATION AND O.SITE = SO.SITE
LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = #{locale}
LEFT JOIN ITEM I ON I.HANDLE = SO.PLANNED_ITEM_BO
LEFT JOIN ITEM_T it ON it.ITEM_BO = I.HANDLE AND it.LOCALE = #{locale}
LEFT JOIN CUSTOM_FIELDS I1 ON I1.HANDLE = I.HANDLE AND I1."ATTRIBUTE" = 'PER_METER'

@ -383,4 +383,5 @@
WHERE ZAB.SFC=#{sfc} AND zab.ABNORMAL_NO=#{abnormalNo} AND zab.SITE=#{site} AND ZAB.OPERATION=#{operation} AND zab.STATUS='G' AND zab."TYPE"='Z' AND (zsbd.ABNORMAL_METHOD='F' OR zsbd.ABNORMAL_METHOD='C')
</select>
</mapper>

@ -145,7 +145,19 @@ public class SelfReport extends Model<SelfReport> {
@TableField(exist = false)
private String description;
/**
*
*/
@TableField(exist = false)
private String productCategory;
public String getProductCategory() {
return productCategory;
}
public void setProductCategory(String productCategory) {
this.productCategory = productCategory;
}
public String getHandle() {
return handle;

@ -563,6 +563,8 @@
JOIN ITEM I ON I.ITEM = ZSR.ITEM AND I.CURRENT_REVISION='true'
LEFT JOIN ITEM_T IT ON I.HANDLE = IT.ITEM_BO AND IT.LOCALE = #{locale}
LEFT JOIN Z_NWA_USER B ON ZSR.SITE = B.SITE AND ZSR.CREATE_USER = B.USER_NAME
JOIN SHOP_ORDER SO ON SO.shop_order=zsr.SHOP_order and so.site=zsr.site
LEFT JOIN CUSTOM_FIELDS PC ON PC.HANDLE = SO.HANDLE AND PC."ATTRIBUTE" = 'PRODUCT_CATEGORY'
<where>
<if test="ew!=null">
<if test="ew.entity!=null">
@ -598,6 +600,7 @@
</if>
</if>
</if>
<if test="ew.entity.productCategory!=null and ew.entity.productCategory!=''"> AND PC.VALUE LIKE '%'|| #{ew.entity.productCategory}|| '%' </if>
<if test="startTime!=null"> AND ZSR.CREATED_DATE_TIME >=#{startTime}</if>
<if test="endTime!=null"> AND ZSR.CREATED_DATE_TIME &lt;=#{endTime}</if>
<if test="ew!=null and ew.sqlSegment!=null and ew.nonEmptyOfWhere">

Loading…
Cancel
Save