工单页面调整

tags/yfai-mes-ext-v1.0
jun 12 months ago
parent 4f8d2b7c04
commit 36e4f7d825

@ -1,6 +1,9 @@
package cn.estsh.i3plus.ext.mes.api.base; package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail;
import java.util.List;
/** /**
* @Description: * @Description:
@ -10,4 +13,5 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel;
public interface IMesCustomerCarModelService extends IBaseMesService<MesCustomerCarModel> { public interface IMesCustomerCarModelService extends IBaseMesService<MesCustomerCarModel> {
List<MesCustomerCarModel> findMesCustomerCarModel(MesCustomerCarModelDetail mesPartProdGroupDetail);
} }

@ -1,8 +1,10 @@
package cn.estsh.i3plus.ext.mes.api.base; package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesArea; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart;
import java.util.List;
/** /**
* @Description: * @Description:
* @CreateDate 2024/04/16 * @CreateDate 2024/04/16
@ -10,5 +12,6 @@ import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart;
*/ */
public interface IMesCustomerPartService extends IBaseMesService<MesCustomerPart> { public interface IMesCustomerPartService extends IBaseMesService<MesCustomerPart> {
List<MesCustomerPart> findMesCustomerPart(MesCustomerCarModelDetail mesPartProdGroupDetail);
} }

@ -1,6 +1,9 @@
package cn.estsh.i3plus.ext.mes.api.base; package cn.estsh.i3plus.ext.mes.api.base;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup; import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail;
import java.util.List;
/** /**
* @Description: * @Description:
@ -9,5 +12,5 @@ import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
*/ */
public interface IMesPartProdGroupService extends IBaseMesService<MesPartProdGroup> { public interface IMesPartProdGroupService extends IBaseMesService<MesPartProdGroup> {
List<MesPartProdGroup> findMesPartProdGroup(MesPartProdGroupDetail mesPartProdGroupDetail);
} }

@ -236,7 +236,7 @@ public abstract class BaseMesController<T extends BaseBean> extends BaseControll
@PostMapping(value = "/update-list") @PostMapping(value = "/update-list")
@ApiOperation(value = "批量修改信息", notes = "批量修改信息") @ApiOperation(value = "批量修改信息", notes = "批量修改信息")
public ResultBean<T> updateList(List<T> beans) { public ResultBean<T> updateList(@RequestBody List<T> beans) {
try { try {
String organizeCode = AuthUtilExt.getOrganizeCode(); String organizeCode = AuthUtilExt.getOrganizeCode();
for (T bean : beans) { for (T bean : beans) {

@ -1,11 +1,25 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base; package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerCarModelService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartProdGroupService;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* *
*/ */
@ -13,4 +27,23 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCustomerCarModel") @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCustomerCarModel")
public class MesCustomerCarModelController extends BaseMesController<MesCustomerCarModel>{ public class MesCustomerCarModelController extends BaseMesController<MesCustomerCarModel>{
@Autowired
private IMesCustomerCarModelService mesCustomerCarModelService;
@GetMapping(value = "/find-mes-customer-car-model")
@ApiOperation(value = "查询客户车型")
public ResultBean findMesCustomerCarModel(MesCustomerCarModelDetail mesPartProdGroupDetail) {
try {
mesPartProdGroupDetail.setOrganizeCode(AuthUtilExt.getOrganizeCode());
//查询汇总工单数量
List<MesCustomerCarModel> mesPartProdGroupList = mesCustomerCarModelService.findMesCustomerCarModel(mesPartProdGroupDetail);
return ResultBean.success("查询成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(mesPartProdGroupList);
} catch (ImppBusiException e) {
return ResultBean.fail(e).build();
} catch (Exception e) {
return ResultBean.fail(e);
}
}
} }

@ -1,12 +1,25 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base; package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerCarModelService;
import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerPartService;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesArea; import cn.estsh.i3plus.pojo.mes.bean.MesArea;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModelDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart; import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* *
*/ */
@ -14,4 +27,22 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCustomerPart") @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesCustomerPart")
public class MesCustomerPartController extends BaseMesController<MesCustomerPart>{ public class MesCustomerPartController extends BaseMesController<MesCustomerPart>{
@Autowired
private IMesCustomerPartService mesCustomerPartService;
@GetMapping(value = "/find-mes-customer-part")
@ApiOperation(value = "查询客户零件")
public ResultBean findMesCustomerPart(MesCustomerCarModelDetail mesPartProdGroupDetail) {
try {
mesPartProdGroupDetail.setOrganizeCode(AuthUtilExt.getOrganizeCode());
//查询汇总工单数量
List<MesCustomerPart> mesCustomerPartList = mesCustomerPartService.findMesCustomerPart(mesPartProdGroupDetail);
return ResultBean.success("查询成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(mesCustomerPartList);
} catch (ImppBusiException e) {
return ResultBean.fail(e).build();
} catch (Exception e) {
return ResultBean.fail(e);
}
}
} }

@ -1,11 +1,24 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.base; package cn.estsh.i3plus.ext.mes.apiservice.controller.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartProdGroupService;
import cn.estsh.i3plus.ext.mes.apiservice.config.AuthUtilExt;
import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant; import cn.estsh.i3plus.ext.mes.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup; import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.util.ResultBean;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/** /**
* *
*/ */
@ -13,4 +26,23 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
@RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPartProdGroup") @RequestMapping(MesCommonConstant.MES_YANFEN + "/mesPartProdGroup")
public class MesPartProdGroupController extends BaseMesController<MesPartProdGroup>{ public class MesPartProdGroupController extends BaseMesController<MesPartProdGroup>{
@Autowired
private IMesPartProdGroupService mesPartProdGroupService;
@GetMapping(value = "/find-mes-part-prod-group")
@ApiOperation(value = "查询零件生产组")
public ResultBean findMesPartProdGroup(MesPartProdGroupDetail mesPartProdGroupDetail) {
try {
mesPartProdGroupDetail.setOrganizeCode(AuthUtilExt.getOrganizeCode());
//查询汇总工单数量
List<MesPartProdGroup> mesPartProdGroupList = mesPartProdGroupService.findMesPartProdGroup(mesPartProdGroupDetail);
return ResultBean.success("查询成功")
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(mesPartProdGroupList);
} catch (ImppBusiException e) {
return ResultBean.fail(e).build();
} catch (Exception e) {
return ResultBean.fail(e);
}
}
} }

@ -27,9 +27,9 @@ public class MesWorkOrderDaoImpl implements IMesWorkOrderDao {
@Override @Override
public List<MesWorkOrder> sumMesWorkOrderQtyToSap(String organizeCode, List<Integer> statusList) { public List<MesWorkOrder> sumMesWorkOrderQtyToSap(String organizeCode, List<Integer> statusList) {
StringBuffer hql = new StringBuffer("select new MesWorkOrder(partNo,planStartTime,sum(qty)) from MesWorkOrder " + StringBuffer hql = new StringBuffer("select new MesWorkOrder(partNo,planStartTime,productVersion,sum(case when workOrderStatus = 40 then 0 else qty end) as sumQty) " +
"where isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode " + " from MesWorkOrder where isDeleted=:isDeleted and isValid = :isValid and organizeCode = :organizeCode " +
"and workOrderStatus not in(:statusList) group by partNo,planStartTime"); "and workOrderStatus not in(:statusList) group by partNo,planStartTime,productVersion");
Query query = entityManager.createQuery(hql.toString(), MesWorkOrder.class); Query query = entityManager.createQuery(hql.toString(), MesWorkOrder.class);
query.setParameter("organizeCode",organizeCode); query.setParameter("organizeCode",organizeCode);
query.setParameter("isValid",CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); query.setParameter("isValid",CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());

@ -6,18 +6,26 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesBom; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomer; import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelDetailRepository;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerCarModel; import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelRepository;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerRoad;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
public class MesCustomerCarModelService extends BaseMesService<MesCustomerCarModel> implements IMesCustomerCarModelService { public class MesCustomerCarModelService extends BaseMesService<MesCustomerCarModel> implements IMesCustomerCarModelService {
@Autowired
private MesCustomerCarModelDetailRepository mesCustomerCarModelDetailRDao;
protected void setPackQueryBean(MesCustomerCarModel bean, DdlPackBean packBean) { protected void setPackQueryBean(MesCustomerCarModel bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getCustomerOrganizeCode(), "customerOrganizeCode", packBean); DdlPreparedPack.getStringEqualPack(bean.getCustomerOrganizeCode(), "customerOrganizeCode", packBean);
DdlPreparedPack.getStringLikerPack(bean.getCarModelCode(), "carModelCode", packBean); DdlPreparedPack.getStringLikerPack(bean.getCarModelCode(), "carModelCode", packBean);
@ -59,4 +67,18 @@ public class MesCustomerCarModelService extends BaseMesService<MesCustomerCarMod
.build(); .build();
} }
} }
@Override
public List<MesCustomerCarModel> findMesCustomerCarModel(MesCustomerCarModelDetail mesPartProdGroupDetail) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getPartNo(),"partNo",ddlPackBean);
List<MesCustomerCarModelDetail> mesCustomerCarModelDetails = mesCustomerCarModelDetailRDao.findByHqlWhere(ddlPackBean);
if(CollectionUtils.isEmpty(mesCustomerCarModelDetails)){
return new ArrayList<>();
}
List<String> carModelCodeList = mesCustomerCarModelDetails.stream().map(MesCustomerCarModelDetail::getCarModelCode).collect(Collectors.toList());
ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode());
DdlPreparedPack.getInPackList(carModelCodeList,"carModelCode",ddlPackBean);
return baseRDao.findByHqlWhere(ddlPackBean);
}
} }

@ -1,18 +1,22 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerCarModelService;
import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerPartService; import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerPartService;
import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerService; import cn.estsh.i3plus.ext.mes.api.base.IMesCustomerService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomer; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerOriganze; import cn.estsh.i3plus.pojo.mes.repository.MesCustomerCarModelDetailRepository;
import cn.estsh.i3plus.pojo.mes.bean.MesCustomerPart;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* @Description: * @Description:
@ -23,6 +27,10 @@ import java.util.List;
@Service @Service
public class MesCustomerPartService extends BaseMesService<MesCustomerPart> implements IMesCustomerPartService { public class MesCustomerPartService extends BaseMesService<MesCustomerPart> implements IMesCustomerPartService {
@Autowired
private MesCustomerCarModelDetailRepository mesCustomerCarModelDetailRDao;
protected void setPackQueryBean(MesCustomerPart bean, DdlPackBean packBean) { protected void setPackQueryBean(MesCustomerPart bean, DdlPackBean packBean) {
DdlPreparedPack.getStringEqualPack(bean.getCustomerPartNo(), "customerPartNo", packBean); DdlPreparedPack.getStringEqualPack(bean.getCustomerPartNo(), "customerPartNo", packBean);
DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean); DdlPreparedPack.getStringLikerPack(bean.getPartNo(), "partNo", packBean);
@ -30,4 +38,19 @@ public class MesCustomerPartService extends BaseMesService<MesCustomerPart> impl
} }
@Override
public List<MesCustomerPart> findMesCustomerPart(MesCustomerCarModelDetail mesPartProdGroupDetail) {
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getPartNo(),"partNo",ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getCarModelCode(),"carModelCode",ddlPackBean);
List<MesCustomerCarModelDetail> mesCustomerCarModelDetails = mesCustomerCarModelDetailRDao.findByHqlWhere(ddlPackBean);
if(CollectionUtils.isEmpty(mesCustomerCarModelDetails)){
return new ArrayList<>();
}
List<String> customerPartNoList = mesCustomerCarModelDetails.stream().map(MesCustomerCarModelDetail::getCustomerPartNo).collect(Collectors.toList());
ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode());
DdlPreparedPack.getInPackList(customerPartNoList,"customerPartNo",ddlPackBean);
return baseRDao.findByHqlWhere(ddlPackBean);
}
} }

@ -1,13 +1,38 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.IMesEquitmentService;
import cn.estsh.i3plus.ext.mes.api.base.IMesPartProdGroupService; import cn.estsh.i3plus.ext.mes.api.base.IMesPartProdGroupService;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup; import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroup;
import cn.estsh.i3plus.pojo.mes.bean.MesPartProdGroupDetail;
import cn.estsh.i3plus.pojo.mes.repository.MesPartProdGroupDetailRepository;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
public class MesPartProdGroupService extends BaseMesService<MesPartProdGroup> implements IMesPartProdGroupService { public class MesPartProdGroupService extends BaseMesService<MesPartProdGroup> implements IMesPartProdGroupService {
@Autowired
private MesPartProdGroupDetailRepository mesPartProdGroupDetailRDao;
public List<MesPartProdGroup> findMesPartProdGroup(MesPartProdGroupDetail mesPartProdGroupDetail){
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getPartNo(),"partNo",ddlPackBean);
DdlPreparedPack.getStringEqualPack(mesPartProdGroupDetail.getWorkCenterCode(),"workCenterCode",ddlPackBean);
List<MesPartProdGroupDetail> mesPartProdGroupDetails = mesPartProdGroupDetailRDao.findByHqlWhere(ddlPackBean);
if(CollectionUtils.isEmpty(mesPartProdGroupDetails)){
return new ArrayList<>();
}
List<String> partProdGroupNoList = mesPartProdGroupDetails.stream().map(MesPartProdGroupDetail::getPartProdGroupNo).collect(Collectors.toList());
ddlPackBean = DdlPackBean.getDdlPackBean(mesPartProdGroupDetail.getOrganizeCode());
DdlPreparedPack.getInPackList(partProdGroupNoList,"partProdGroupNo",ddlPackBean);
return baseRDao.findByHqlWhere(ddlPackBean);
}
} }

@ -16,6 +16,7 @@ public class MesShiftService extends BaseMesService<MesShift> implements IMesShi
DdlPreparedPack.getNumEqualPack(bean.getIsValid(), "isValid", packBean); DdlPreparedPack.getNumEqualPack(bean.getIsValid(), "isValid", packBean);
DdlPreparedPack.getStringEqualPack(bean.getShiftCode(), "shiftCode", packBean); DdlPreparedPack.getStringEqualPack(bean.getShiftCode(), "shiftCode", packBean);
DdlPreparedPack.getStringEqualPack(bean.getWorkCenterCode(), "workCenterCode", packBean);
DdlPreparedPack.getStringLikeEqualPack(bean.getShiftName(), "shiftName", packBean); DdlPreparedPack.getStringLikeEqualPack(bean.getShiftName(), "shiftName", packBean);
} }

@ -1,13 +1,17 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base; package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.api.base.*; import cn.estsh.i3plus.ext.mes.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.api.base.IMesProductOffLineService;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderService;
import cn.estsh.i3plus.ext.mes.api.base.IMesWorkOrderToSapService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao; import cn.estsh.i3plus.ext.mes.apiservice.dao.IMesWorkOrderDao;
import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException; import cn.estsh.i3plus.ext.mes.apiservice.unit.exception.MesException;
import cn.estsh.i3plus.pojo.mes.unit.MesExtEnumUtil;
import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService; import cn.estsh.i3plus.mes.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.mes.apiservice.util.DateUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum; import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.MathOperation; import cn.estsh.i3plus.platform.common.tool.MathOperation;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
@ -16,6 +20,9 @@ import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel; import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
import cn.estsh.i3plus.pojo.mes.repository.MesBomRepository; import cn.estsh.i3plus.pojo.mes.repository.MesBomRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProductVersionRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProductVersionRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesShiftRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkCenterRepository;
import cn.estsh.i3plus.pojo.mes.unit.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ValidatorBean; import cn.estsh.impp.framework.boot.util.ValidatorBean;
@ -25,7 +32,9 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
@ -48,6 +57,10 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
private IMesProductOffLineService mesProductOffLineService; private IMesProductOffLineService mesProductOffLineService;
@Autowired @Autowired
private IMesWorkOrderDao mesWorkOrderDao; private IMesWorkOrderDao mesWorkOrderDao;
@Autowired
private MesWorkCenterRepository mesWorkCenterRDao;
@Autowired
private MesShiftRepository mesShiftRDao;
@Override @Override
public MesWorkOrder insert(MesWorkOrder bean) { public MesWorkOrder insert(MesWorkOrder bean) {
@ -80,7 +93,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
BeanUtils.copyProperties(bean, copyMesWorkOrder); BeanUtils.copyProperties(bean, copyMesWorkOrder);
copyMesWorkOrder.setProduceSeq(produceSeq + 1); copyMesWorkOrder.setProduceSeq(produceSeq + 1);
copyMesWorkOrder.setQty(1D); copyMesWorkOrder.setQty(1D);
copyMesWorkOrder.setOrderNo(resultList.get(0)+"_"+copyMesWorkOrder.getOrganizeCode()); copyMesWorkOrder.setOrderNo(resultList.get(0) + "_" + copyMesWorkOrder.getOrganizeCode());
ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser()); ConvertBean.serviceModelInitialize(copyMesWorkOrder, bean.getCreateUser());
MesWorkOrderLog workOrderLog = new MesWorkOrderLog(); MesWorkOrderLog workOrderLog = new MesWorkOrderLog();
@ -110,7 +123,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
genSerialNoModel.setPartNo(bean.getPartNo()); genSerialNoModel.setPartNo(bean.getPartNo());
List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList(); List<String> resultList = syncFuncService.syncSerialNo(genSerialNoModel, bean.getCreateUser(), bean.getOrganizeCode(), 1).getResultList();
bean.setOrderNo(resultList.get(0)+"_"+bean.getOrganizeCode()); bean.setOrderNo(resultList.get(0) + "_" + bean.getOrganizeCode());
bean.setQty(bean.getQty()); bean.setQty(bean.getQty());
ConvertBean.serviceModelInitialize(bean, bean.getCreateUser()); ConvertBean.serviceModelInitialize(bean, bean.getCreateUser());
@ -160,17 +173,20 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
result.setQty(bean.getQty()); result.setQty(bean.getQty());
//更新完成数量 //更新已汇报
if (bean.getCompleteQty() > 0) { if (bean.getReportedQty() >= 0) {
result.setCompleteQty(bean.getCompleteQty()); result.setReportedQty(bean.getReportedQty());
} }
if (bean.getUnCompleteQty() > 0) { if (bean.getUnCompleteQty() >= 0) {
result.setUnCompleteQty(bean.getUnCompleteQty()); result.setUnCompleteQty(bean.getUnCompleteQty());
} }
if (bean.getAdjustQty() > 0) {
result.setAdjustQty(bean.getAdjustQty());
}
//更新状态 //更新状态
if (bean.getWorkOrderStatus() > 0) { if (bean.getWorkOrderStatus() > 0) {
if(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue() == bean.getWorkOrderStatus()){ if (MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue() == bean.getWorkOrderStatus()) {
if(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue() != result.getWorkOrderStatus()){ if (MesExtEnumUtil.ORDER_STATUS.CREATE.getValue() != result.getWorkOrderStatus()) {
MesException.throwMesBusiException(String.format("工单状态为【%s】不为创建不允许发布", MesException.throwMesBusiException(String.format("工单状态为【%s】不为创建不允许发布",
MesExtEnumUtil.ORDER_TYPE.valueOfDescription(result.getWorkOrderStatus()))); MesExtEnumUtil.ORDER_TYPE.valueOfDescription(result.getWorkOrderStatus())));
} }
@ -222,10 +238,17 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
//ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空"); //ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean);
if (!mesWorkCenterRDao.isExitByHql(ddlPackBean)) {
MesException.throwMesBusiException("产线【%s】不存在", item.getWorkCenterCode());
}
//校验标识 //校验标识
//若工单类型为排序 //若工单类型为排序
if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) { if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.SORT.getValue()) {
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空"); ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空");
//若工单类型为排序 标识为 N E P S //若工单类型为排序 标识为 N E P S
if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue() && if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.S.getValue() &&
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() && item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() &&
@ -241,9 +264,16 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.build(); .build();
} }
//校验vin号是否重复
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getVinCode(), "vinCode", ddlPackBean);
if (baseRDao.isExitByHql(ddlPackBean)) {
MesException.throwMesBusiException("vin号【%s】重复", item.getVinCode());
}
} else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) { } else if (item.getWorkOrderType() == MesExtEnumUtil.ORDER_TYPE.UN_SORT.getValue()) {
ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空"); ValidatorBean.checkNotNull(item.getOrderFlag(), "标识不能为空");
ValidatorBean.checkNotNull(item.getProductVersion(), "生产版本不能为空");
if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() && if (item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.E.getValue() &&
item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()) { item.getOrderFlag() != MesExtEnumUtil.ORDER_TYPE_IDENTIFICATION.P.getValue()) {
throw ImppExceptionBuilder.newInstance() throw ImppExceptionBuilder.newInstance()
@ -254,6 +284,44 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode()) .setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.build(); .build();
} }
if (StringUtil.isEmpty(item.getPlanStartTime()) || StringUtil.isEmpty(item.getPlanEndTime())) {
ValidatorBean.checkNotNull(item.getPlanDate(), "计划日期不能为空");
ValidatorBean.checkNotNull(item.getShiftCode(), "班次不能为空");
//查询班次信息
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getWorkCenterCode(), "workCenterCode", ddlPackBean);
DdlPreparedPack.getStringEqualPack(item.getShiftCode(), "shiftCode", ddlPackBean);
MesShift mesShift = mesShiftRDao.getByProperty(ddlPackBean);
if (Objects.isNull(mesShift)) {
MesException.throwMesBusiException("产线【%s】班次【%s】信息不存在", item.getWorkCenterCode(), item.getShiftCode());
}
item.setShiftName(mesShift.getShiftName());
//拼接
item.setPlanStartTime(item.getPlanDate() + " " + mesShift.getStartTime());
item.setPlanEndTime(item.getPlanDate() + " " + mesShift.getEndTime());
try {
int windowStartEndTimeCompare = this.compareDateTime(DateUtil.BASE_FORMAT, item.getPlanStartTime(), item.getPlanEndTime());
if (windowStartEndTimeCompare > 0) {
item.setPlanEndTime(TimeTool.pareDateToString(DateUtil.addDays(item.getPlanEndTime(),1)));
}
} catch (Exception e) {
MesException.throwMesBusiException("时间格式异常");
}
}
//校验物料生产版本是否存在
ddlPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(item.getPartNo(), "partNo", ddlPackBean);
DdlPreparedPack.getStringEqualPack(item.getProductVersion(), "productVersion", ddlPackBean);
if (!mesProductVersionRDao.isExitByHql(ddlPackBean)) {
MesException.throwMesBusiException("物料【%s】生产版本【%s】信息不存在", item.getPartNo(), item.getProductVersion());
}
} else {
ValidatorBean.checkNotNull(item.getPlanStartTime(), "计划开始时间不能为空");
ValidatorBean.checkNotNull(item.getPlanEndTime(), "计划结束时间不能为空");
//拼接
item.setPlanStartTime(item.getPlanStartTime() + " " + "00:00:00");
item.setPlanEndTime(item.getPlanEndTime() + " " + "23:59:59");
} }
//物料名称不存在,从物料信息中获取 //物料名称不存在,从物料信息中获取
if (StringUtil.isEmpty(item.getPartNameRdd())) { if (StringUtil.isEmpty(item.getPartNameRdd())) {
@ -267,6 +335,13 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
} }
public int compareDateTime(String formatStr, String startTimeStr, String endTimeStr) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat(formatStr);
Date startTime = sdf.parse(startTimeStr);
Date endTime = sdf.parse(endTimeStr);
return startTime.compareTo(endTime);
}
@Override @Override
public void doProductReport(MesWorkOrder mesWorkOrder) { public void doProductReport(MesWorkOrder mesWorkOrder) {
//查询物料信息 //查询物料信息
@ -288,25 +363,28 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
mesWorkOrder.getPartNo(), mesProductVersion.getProductVersion()); mesWorkOrder.getPartNo(), mesProductVersion.getProductVersion());
} }
//报工类型 //报工类型
if(MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()){ if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrder.getReportType()) {
mesWorkOrder.setCompleteQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getCompleteQty())); mesWorkOrder.setReportedQty(MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getReportedQty()));
}else{ } else {
//冲销数量大于工单完成数量报错 //冲销数量大于工单完成数量报错
if(mesWorkOrder.getNum() > mesWorkOrder.getCompleteQty()){ if (mesWorkOrder.getNum() > mesWorkOrder.getReportedQty()) {
MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销", MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销",
mesWorkOrder.getNum(), mesWorkOrder.getCompleteQty()); mesWorkOrder.getNum(), mesWorkOrder.getReportedQty());
} }
mesWorkOrder.setCompleteQty(MathOperation.sub(mesWorkOrder.getCompleteQty(),mesWorkOrder.getNum())); //报工调整数量加-
mesWorkOrder.setAdjustQty((MathOperation.add(mesWorkOrder.getNum(), mesWorkOrder.getAdjustQty())));
//已汇报数量减一
mesWorkOrder.setReportedQty(MathOperation.sub(mesWorkOrder.getReportedQty(), mesWorkOrder.getNum()));
} }
//更新工单状态 //更新工单状态
double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getCompleteQty()); double unCompleteQty = MathOperation.sub(mesWorkOrder.getQty(), mesWorkOrder.getReportedQty());
mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0); mesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
if (mesWorkOrder.getCompleteQty() > mesWorkOrder.getQty()) { if (mesWorkOrder.getReportedQty() > mesWorkOrder.getQty()) {
MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工", MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工",
mesWorkOrder.getCompleteQty(), mesWorkOrder.getQty()); mesWorkOrder.getReportedQty(), mesWorkOrder.getQty());
}else if(Objects.equals(mesWorkOrder.getCompleteQty(),mesWorkOrder.getQty())){ } else if (Objects.equals(mesWorkOrder.getReportedQty(), mesWorkOrder.getQty())) {
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()); mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
}else { } else {
mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.process.getValue()); mesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.process.getValue());
} }
update(mesWorkOrder); update(mesWorkOrder);
@ -338,6 +416,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode()); newMesProductOffLine.setWorkCenterCode(mesWorkOrder.getWorkCenterCode());
newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode()); newMesProductOffLine.setWorkCellCode(mesWorkOrder.getWorkCellCode());
newMesProductOffLine.setReportType(mesWorkOrder.getReportType()); newMesProductOffLine.setReportType(mesWorkOrder.getReportType());
newMesProductOffLine.setOrganizeCode(mesWorkOrder.getOrganizeCode());
ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser()); ConvertBean.serviceModelInitialize(newMesProductOffLine, mesWorkOrder.getCreateUser());
mesProductOffLineList.add(newMesProductOffLine); mesProductOffLineList.add(newMesProductOffLine);
@ -350,7 +429,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
public List<MesWorkOrder> sumMesWorkOrderQtyToSap(String organizeCode) { public List<MesWorkOrder> sumMesWorkOrderQtyToSap(String organizeCode) {
List<Integer> statusList = new ArrayList<>(); List<Integer> statusList = new ArrayList<>();
statusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue()); statusList.add(MesExtEnumUtil.ORDER_STATUS.CREATE.getValue());
statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue()); // statusList.add(MesExtEnumUtil.ORDER_STATUS.CLOSE.getValue());
//查询汇总工单数量 //查询汇总工单数量
return mesWorkOrderDao.sumMesWorkOrderQtyToSap(organizeCode, statusList); return mesWorkOrderDao.sumMesWorkOrderQtyToSap(organizeCode, statusList);
} }

@ -1,392 +1,256 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel; //package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.excel;
//
import cn.estsh.i3plus.mes.api.iservice.busi.IExcelImportService; //import cn.estsh.i3plus.mes.api.iservice.busi.IExcelImportService;
import cn.estsh.i3plus.mes.apiservice.serviceimpl.busi.CommonService; //import cn.estsh.i3plus.mes.apiservice.serviceimpl.busi.CommonService;
import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil; //import cn.estsh.i3plus.mes.apiservice.util.MesCommonUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; //import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.mes.bean.MesPartPtr; //import cn.estsh.i3plus.pojo.mes.bean.MesPartPtr;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder; //import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportErrorModel; //import cn.estsh.i3plus.pojo.mes.model.ExcelImportErrorModel;
import cn.estsh.i3plus.pojo.mes.model.ExcelImportResultModel; //import cn.estsh.i3plus.pojo.mes.model.ExcelImportResultModel;
import cn.estsh.i3plus.pojo.mes.repository.MesPartPtrRepository; //import cn.estsh.i3plus.pojo.mes.repository.MesPartPtrRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; //import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository; //import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository;
import lombok.extern.slf4j.Slf4j; //import cn.estsh.i3plus.pojo.mes.unit.MesExtEnumUtil;
import org.apache.poi.ss.usermodel.CellType; //import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Row; //import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Sheet; //import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook; //import org.apache.poi.ss.usermodel.Sheet;
import org.springframework.beans.factory.annotation.Autowired; //import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.stereotype.Service; //import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils; //import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils; //import org.springframework.util.CollectionUtils;
//import org.springframework.util.StringUtils;
import java.util.ArrayList; //
import java.util.HashMap; //import java.util.ArrayList;
import java.util.List; //import java.util.HashMap;
import java.util.Map; //import java.util.List;
//import java.util.Map;
/** //
* @Description : MESBTO ///**
* @Reference : // * @Description : MES工单导入BTO
* @Author : junsheng.li // * @Reference :
* @CreateDate 2024/5/16 14:14 // * @Author : junsheng.li
* @Modify: // * @CreateDate 2024/5/16 14:14
**/ // * @Modify:
@Service // **/
@Slf4j //@Service
public class MesWorkOrderBtoExcelServiceImpl implements IExcelImportService { //@Slf4j
//public class MesWorkOrderBtoExcelServiceImpl implements IExcelImportService {
@Autowired //
private CommonService commonService; // @Autowired
@Autowired // private CommonService commonService;
private MesPartRepository partRepository; // @Autowired
@Autowired // private MesPartRepository partRepository;
private MesWorkOrderRepository mesWorkOrderRDao; // @Autowired
// private MesWorkOrderRepository mesWorkOrderRDao;
@Override //
public ExcelImportResultModel insertDataByExcel(Workbook workbook, String organizeCode, String userName) { // @Override
// public ExcelImportResultModel insertDataByExcel(Workbook workbook, String organizeCode, String userName) {
//读取表格 //
ExcelImportResultModel excelImportResultModel = this.sheetExtractMesWorkOrder(workbook.getSheetAt(0), organizeCode, userName); // //读取表格
//数据入库 // ExcelImportResultModel excelImportResultModel = this.sheetExtractMesWorkOrder(workbook.getSheetAt(0), organizeCode, userName);
this.insertExcelMesWorkOrder(excelImportResultModel); // //数据入库
return excelImportResultModel; // this.insertExcelMesWorkOrder(excelImportResultModel);
// return null; // return excelImportResultModel;
} //// return null;
// }
/** //
* BOM- // /**
* // * 工位BOM表导入-读取表格
* @param sheetAt // *
* @param organizeCode // * @param sheetAt
* @param userName // * @param organizeCode
* @return // * @param userName
*/ // * @return
private ExcelImportResultModel sheetExtractMesWorkOrder(Sheet sheetAt, String organizeCode, String userName) { // */
// private ExcelImportResultModel sheetExtractMesWorkOrder(Sheet sheetAt, String organizeCode, String userName) {
//从0行开始读取 //
int totalNumberOfRows = sheetAt.getLastRowNum() + 1; // //从0行开始读取
// int totalNumberOfRows = sheetAt.getLastRowNum() + 1;
//MesStationBom集合 //
List<MesPartPtr> partPtrList = new ArrayList<>(); // //MesStationBom集合
// List<MesPartPtr> partPtrList = new ArrayList<>();
//成功数量 //
Integer successRowNum = 0; // //成功数量
//失败数量 // Integer successRowNum = 0;
Integer failRowNum = 0; // //失败数量
//错误的行号 // Integer failRowNum = 0;
String errorRows = ""; // //错误的行号
// String errorRows = "";
//错误行信息集合 //
List<ExcelImportErrorModel> excelImportErrorModels = new ArrayList<>(); // //错误行信息集合
// List<ExcelImportErrorModel> excelImportErrorModels = new ArrayList<>();
// 查询物料表 //
Map<String, Object> partCodeEntityMap; // // 查询物料表
try { // Map<String, Object> partCodeEntityMap;
partCodeEntityMap = MesCommonUtil.getCodeEntityMap(partRepository, "partNo", organizeCode, "物料表"); // try {
} catch (Exception e) { // partCodeEntityMap = MesCommonUtil.getCodeEntityMap(partRepository, "partNo", organizeCode, "物料表");
partCodeEntityMap = null; // } catch (Exception e) {
} // partCodeEntityMap = null;
// }
// //查询关键件条码校验规则表 //
// List<MesPartPtr> partPtrList = partPtrRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED}, //// //查询关键件条码校验规则表
// new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()}); //// List<MesPartPtr> partPtrList = partPtrRepository.findByProperty(new String[]{MesConstWords.ORGANIZE_CODE, MesConstWords.IS_DELETED},
// Map<String, List<MesPartPtr>> preventionMap = //// new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()});
// partPtrList.stream().collect(Collectors.groupingBy(k -> k.getPreventionObjectCode() + "&" + k.getPartNo())); //// Map<String, List<MesPartPtr>> preventionMap =
//// partPtrList.stream().collect(Collectors.groupingBy(k -> k.getPreventionObjectCode() + "&" + k.getPartNo()));
//
Map<String, String> map = new HashMap<>(); //
// Map<String, String> map = new HashMap<>();
for (int i = (sheetAt.getFirstRowNum() + 1); i < totalNumberOfRows; i++) { //
Row row = sheetAt.getRow(i); // for (int i = (sheetAt.getFirstRowNum() + 1); i < totalNumberOfRows; i++) {
//空行跳过 // Row row = sheetAt.getRow(i);
if (null == row) { // //空行跳过
continue; // if (null == row) {
} // continue;
//获取总列数 // }
Short lastCellNum = row.getLastCellNum(); // //获取总列数
if (lastCellNum > 0) { // Short lastCellNum = row.getLastCellNum();
// if (lastCellNum > 0) {
int rowNum = i + 1; //当前行号 //
int errorNum = 0; //错误数量 // int rowNum = i + 1; //当前行号
String cellNum = ""; //错误列号 // int errorNum = 0; //错误数量
String errorInfo = ""; //错误信息 // String cellNum = ""; //错误列号
// String errorInfo = ""; //错误信息
//产线编号 //
String workCenterCode = row.getCell(0, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); // //生产线代码
// String workCenterCode = null;
//开始时间 // try {
String startTime = null; // row.getCell(0).setCellType(CellType.STRING);
try { // workCenterCode = row.getCell(0, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
row.getCell(1).setCellType(CellType.STRING); // } catch (Exception e) {
startTime = row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); // }
} catch (Exception e) { // //ERP总成零件号
} // String partNo = null;
//结束时间 // try {
String endTime = null; // row.getCell(1).setCellType(CellType.STRING);
try { // partNo = row.getCell(1, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
row.getCell(2).setCellType(CellType.STRING); // } catch (Exception e) {
endTime = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); // }
} catch (Exception e) { // //计划开始时间yyyy-MM-dd
} // String startTime = null;
//PTR车辆数量 // try {
String prtVehicleCount = null; // row.getCell(2).setCellType(CellType.STRING);
try { // startTime = row.getCell(2, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
row.getCell(3).setCellType(CellType.STRING); // } catch (Exception e) {
prtVehicleCount = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); // }
} catch (Exception e) { // //计划结束时间yyyy-MM-dd
} // String endTime = null;
// try {
//PTR车辆实际数量 // row.getCell(3).setCellType(CellType.STRING);
String prtVehicleActualCount = null; // endTime = row.getCell(3, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
try { // } catch (Exception e) {
row.getCell(4).setCellType(CellType.STRING); // }
prtVehicleActualCount = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); //
} catch (Exception e) { // //数量
} // String qty = null;
//原零件号 // try {
String sourcePartNo = null; // row.getCell(4).setCellType(CellType.STRING);
try { // qty = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
row.getCell(5).setCellType(CellType.STRING); // } catch (Exception e) {
sourcePartNo = row.getCell(5, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim(); // }
} catch (Exception e) { //
} // //校验产线编号
// if (StringUtils.isEmpty(workCenterCode)) {
//替换零件号
String targetPartNo = null;
try {
row.getCell(6).setCellType(CellType.STRING);
targetPartNo = row.getCell(6, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//是否客户 发送PTR信息
String isCustomerSendPrtInfo = null;
try {
row.getCell(7).setCellType(CellType.STRING);
isCustomerSendPrtInfo = row.getCell(7, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//排序信息PTR零件号
String seqInfoPrtPart = null;
try {
row.getCell(8).setCellType(CellType.STRING);
seqInfoPrtPart = row.getCell(8, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//PTR项目编号
String ptrProjectNo = null;
try {
row.getCell(9).setCellType(CellType.STRING);
ptrProjectNo = row.getCell(9, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//替换零件条码规则
String targetPartNoSnRuleCode = null;
try {
row.getCell(10).setCellType(CellType.STRING);
targetPartNoSnRuleCode = row.getCell(10, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//总成类型
String partTypeCode = null;
try {
row.getCell(11).setCellType(CellType.STRING);
partTypeCode = row.getCell(11, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//总成类型
String isInterPrt = null;
try {
row.getCell(12).setCellType(CellType.STRING);
isInterPrt = row.getCell(12, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//目视单显示项
String visualSingleDisplayItem = null;
try {
row.getCell(13).setCellType(CellType.STRING);
visualSingleDisplayItem = row.getCell(13, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//起始序号
String startSeq = null;
try {
row.getCell(14).setCellType(CellType.STRING);
startSeq = row.getCell(14, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//目视单替换位置
String visualSingleReplacePosition = null;
try {
row.getCell(14).setCellType(CellType.STRING);
visualSingleReplacePosition = row.getCell(14, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//硬件版本号
String hardwareVersionNo = null;
try {
row.getCell(15).setCellType(CellType.STRING);
hardwareVersionNo = row.getCell(15, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//软件版本号
String softwareVersionNo = null;
try {
row.getCell(16).setCellType(CellType.STRING);
softwareVersionNo = row.getCell(16, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//软件版本号
String status = null;
try {
row.getCell(17).setCellType(CellType.STRING);
status = row.getCell(17, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
//软件版本号
String memo = null;
try {
row.getCell(18).setCellType(CellType.STRING);
memo = row.getCell(18, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).getStringCellValue().trim();
} catch (Exception e) {
}
// if (!map.containsKey(preventionObjectCode + "&" + partNo)) {
// map.put(preventionObjectCode + "&" + partNo, String.valueOf(rowNum));
// } else {
// errorNum++; // errorNum++;
// cellNum += "A;C;"; // cellNum += "A;";
// errorInfo += "第A列数据:" + preventionObjectCode + ",第C列数据:" + partNo; // errorInfo += "第A列数据必填;";
// } // }
// //
// //校验物料 // //ERP总成零件号
// if (StringUtils.isEmpty(partNo)) { // if (StringUtils.isEmpty(partNo)) {
// errorNum++; // errorNum++;
// cellNum += "B;";
// errorInfo += "第B列数据必填;";
// }
// //计划开始时间yyyy-MM-dd
// if (StringUtils.isEmpty(startTime)) {
// errorNum++;
// cellNum += "C;"; // cellNum += "C;";
// errorInfo += "第C列数据必填;"; // errorInfo += "第C列数据必填;";
// }
// //校验替换零件号
// if (StringUtils.isEmpty()) {
// errorNum++;
// cellNum += "J;";
// errorInfo += "第J列数据必填;";
// }
// //校验总成类型
// if (StringUtils.isEmpty(partTypeCode)) {
// errorNum++;
// cellNum += "L;";
// errorInfo += "第L列数据必填;";
// }
//
//
// //没有错误的时候封装MesStationBom
// if (errorNum == 0) {
//
// MesPartPtr partPtr;
//// if (preventionMap.containsKey(preventionObjectCode + "&" + partNo)) {
//// itemPartErrorPrevention = preventionMap.get(partNo).get(0);
//// ConvertBean.serviceModelUpdate(itemPartErrorPrevention, userName);
//// } else {
// partPtr = new MesPartPtr();
// ConvertBean.serviceModelInitialize(partPtr, userName);
//// }
// partPtr.setWorkCenterCode(workCenterCode);
// partPtr.setStartTime(startTime);
// partPtr.setEndTime(endTime);
// partPtr.setPrtVehicleCount(Integer.parseInt(prtVehicleCount));
// partPtr.setPrtVehicleActualCount(Integer.parseInt(prtVehicleActualCount));
// partPtr.setSourcePartNo(sourcePartNo);
// partPtr.setTargetPartNo(targetPartNo);
// partPtr.setIsCustomerSendPrtInfo(Integer.parseInt(isCustomerSendPrtInfo));
// partPtr.setSeqInfoPrtPart(seqInfoPrtPart);
// partPtr.setPtrProjectNo(ptrProjectNo);
// partPtr.setTargetPartNoSnRuleCode(targetPartNoSnRuleCode);
// partPtr.setPartTypeCode(Integer.parseInt(partTypeCode));
// partPtr.setIsInterPrt(Integer.parseInt(isInterPrt));
// partPtr.setVisualSingleDisplayItem(visualSingleDisplayItem);
// partPtr.setStartSeq(startSeq);
// partPtr.setVisualSingleReplacePosition(visualSingleReplacePosition);
// partPtr.setHardwareVersionNo(hardwareVersionNo);
// partPtr.setSoftwareVersionNo(softwareVersionNo);
// partPtr.setStatus(Integer.parseInt(status));
// partPtr.setMemo(memo);
// partPtrList.add(partPtr);
// successRowNum++;
// } else { // } else {
// if (CollectionUtils.isEmpty(partCodeEntityMap) || // //封装错误行信息ExcelImportErrorModel
// (!CollectionUtils.isEmpty(partCodeEntityMap) && !partCodeEntityMap.containsKey(partNo))) { // excelImportErrorModels = commonService.getExcelImportErrorModels(excelImportErrorModels, rowNum, errorNum, cellNum, errorInfo);
// errorNum++; //
// cellNum += "C;"; // errorRows += rowNum + ";";
// errorInfo += "第C列数据无效;"; // failRowNum++;
// }
// } // }
//
//校验产线编号 // }
if (StringUtils.isEmpty(workCenterCode)) { // }
errorNum++; //
cellNum += "A;"; // //校验EXCEL数据
errorInfo += "第A列数据必填;"; // commonService.checkExcelData(failRowNum, successRowNum, errorRows);
} // //封装返回结果
// ExcelImportResultModel excelImportResultModel = commonService.getExcelImportResultModel(failRowNum, successRowNum, excelImportErrorModels, errorRows);
//校验原零件号 // excelImportResultModel.setExcelList((failRowNum > 0) ? null : partPtrList);
if (StringUtils.isEmpty(sourcePartNo)) { // return excelImportResultModel;
errorNum++; // }
cellNum += "F;"; //
errorInfo += "第F列数据必填;"; // private void insertExcelMesWorkOrder(ExcelImportResultModel excelImportResultModel) {
} // if (excelImportResultModel == null) {
//校验产线编号 // return;
if (StringUtils.isEmpty(targetPartNo)) { // }
errorNum++; // List<MesWorkOrder> partPtrList = excelImportResultModel.getExcelList();
cellNum += "G;"; // if (CollectionUtils.isEmpty(partPtrList)) {
errorInfo += "第G列数据必填;"; // return;
} // }
//校验替换零件号 //
if (StringUtils.isEmpty(ptrProjectNo)) { // partPtrList.forEach(k -> {
errorNum++; // if (StringUtils.isEmpty(k.getId())) {
cellNum += "J;"; // mesWorkOrderRDao.insert(k);
errorInfo += "第J列数据必填;"; // } else {
} // mesWorkOrderRDao.update(k);
//校验总成类型 // }
if (StringUtils.isEmpty(partTypeCode)) { // });
errorNum++; // }
cellNum += "L;"; //}
errorInfo += "第L列数据必填;";
}
//没有错误的时候封装MesStationBom
if (errorNum == 0) {
MesPartPtr partPtr;
// if (preventionMap.containsKey(preventionObjectCode + "&" + partNo)) {
// itemPartErrorPrevention = preventionMap.get(partNo).get(0);
// ConvertBean.serviceModelUpdate(itemPartErrorPrevention, userName);
// } else {
partPtr = new MesPartPtr();
ConvertBean.serviceModelInitialize(partPtr, userName);
// }
partPtr.setWorkCenterCode(workCenterCode);
partPtr.setStartTime(startTime);
partPtr.setEndTime(endTime);
partPtr.setPrtVehicleCount(Integer.parseInt(prtVehicleCount));
partPtr.setPrtVehicleActualCount(Integer.parseInt(prtVehicleActualCount));
partPtr.setSourcePartNo(sourcePartNo);
partPtr.setTargetPartNo(targetPartNo);
partPtr.setIsCustomerSendPrtInfo(Integer.parseInt(isCustomerSendPrtInfo));
partPtr.setSeqInfoPrtPart(seqInfoPrtPart);
partPtr.setPtrProjectNo(ptrProjectNo);
partPtr.setTargetPartNoSnRuleCode(targetPartNoSnRuleCode);
partPtr.setPartTypeCode(Integer.parseInt(partTypeCode));
partPtr.setIsInterPrt(Integer.parseInt(isInterPrt));
partPtr.setVisualSingleDisplayItem(visualSingleDisplayItem);
partPtr.setStartSeq(startSeq);
partPtr.setVisualSingleReplacePosition(visualSingleReplacePosition);
partPtr.setHardwareVersionNo(hardwareVersionNo);
partPtr.setSoftwareVersionNo(softwareVersionNo);
partPtr.setStatus(Integer.parseInt(status));
partPtr.setMemo(memo);
partPtrList.add(partPtr);
successRowNum++;
} else {
//封装错误行信息ExcelImportErrorModel
excelImportErrorModels = commonService.getExcelImportErrorModels(excelImportErrorModels, rowNum, errorNum, cellNum, errorInfo);
errorRows += rowNum + ";";
failRowNum++;
}
}
}
//校验EXCEL数据
commonService.checkExcelData(failRowNum, successRowNum, errorRows);
//封装返回结果
ExcelImportResultModel excelImportResultModel = commonService.getExcelImportResultModel(failRowNum, successRowNum, excelImportErrorModels, errorRows);
excelImportResultModel.setExcelList((failRowNum > 0) ? null : partPtrList);
return excelImportResultModel;
}
private void insertExcelMesWorkOrder(ExcelImportResultModel excelImportResultModel) {
if (excelImportResultModel == null) {
return;
}
List<MesWorkOrder> partPtrList = excelImportResultModel.getExcelList();
if (CollectionUtils.isEmpty(partPtrList)) {
return;
}
partPtrList.forEach(k -> {
if (StringUtils.isEmpty(k.getId())) {
mesWorkOrderRDao.insert(k);
} else {
mesWorkOrderRDao.update(k);
}
});
}
}

Loading…
Cancel
Save