占用管理码查询报表

tags/yfai-mes-ext-v1.0
yxw 1 year ago
parent e1ee8211d4
commit b3729c3a3b

@ -0,0 +1,24 @@
package cn.estsh.i3plus.ext.mes.api.busi.jx;
import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxManageCodeModel;
import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxManageCodeResultModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
public interface IJxManageCodeMcRecordService {
/**
*
* @param manageCodeModel
* @return
*/
ListPager<JxManageCodeResultModel> queryManageCodeMcRecordReportByPager(JxManageCodeModel manageCodeModel, Pager pager);
/**
* 线
* @param manageCodeModel
* @return
*/
void doUnbindManageCodeMcRecord(JxManageCodeModel manageCodeModel);
}

@ -0,0 +1,62 @@
package cn.estsh.i3plus.ext.mes.apiservice.controller.busi.jx;
import cn.estsh.i3plus.ext.mes.api.busi.jx.IJxManageCodeMcRecordService;
import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxManageCodeModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.util.ResultBean;
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.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @PROJECT_NAME: i3plus-mes-panasonic-jx
* @DESCRIPTION:
* @USER: xinwang.yi
* @DATE: 2023-12-21 14:12
*/
@RestController
@RequestMapping(MesExtConstWords.BASE_URL_MES_JX + "/report")
@Api(tags = "管理码占用报表")
public class JxManageCodeMcRecordController {
@Autowired
private IJxManageCodeMcRecordService manageCodeMcRecordService;
@GetMapping(value = "/manage-code-mc-record/query")
@ApiOperation(value = "管理码占用查询报表")
public ResultBean queryManageCodeMcRecordReport(JxManageCodeModel manageCodeModel, Pager pager) {
try {
manageCodeModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode())
.setListPager(manageCodeMcRecordService.queryManageCodeMcRecordReportByPager(manageCodeModel, pager));
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@PostMapping(value = "/manage-code-mc-record/unbind")
@ApiOperation(value = "强制下线管理码")
public ResultBean doUnbindManageCodeMcRecord(JxManageCodeModel manageCodeModel) {
try {
manageCodeModel.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
manageCodeMcRecordService.doUnbindManageCodeMcRecord(manageCodeModel);
return ResultBean.success("查询成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
}

@ -0,0 +1,28 @@
package cn.estsh.i3plus.ext.mes.apiservice.dao.jx;
import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxManageCodeModel;
import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxManageCodeResultModel;
import cn.estsh.i3plus.pojo.base.common.Pager;
import io.swagger.annotations.ApiOperation;
import java.util.List;
public interface IJxManageCodeReportDao {
/**
*
* @param model
* @return
*/
@ApiOperation(value = "管理码占用报表", notes = "管理码占用报表")
List<JxManageCodeResultModel> queryManageCodeMcRecordReportPager(JxManageCodeModel model, Pager pager);
/**
*
* @param model
* @return
*/
@ApiOperation(value = "管理码占用报表", notes = "管理码占用报表")
int queryManageCodeMcRecordReportPagerCount(JxManageCodeModel model);
}

@ -0,0 +1,100 @@
package cn.estsh.i3plus.ext.mes.apiservice.daoimpl.jx;
import cn.estsh.i3plus.ext.mes.apiservice.dao.jx.IJxManageCodeReportDao;
import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxManageCodeModel;
import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxManageCodeResultModel;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.util.List;
/**
* @PROJECT_NAME: i3plus-mes-panasonic-jx
* @DESCRIPTION:
* @USER: xinwang.yi
* @DATE: 2023-12-21 13:39
*/
@Service
public class JxManageCodeReportDao implements IJxManageCodeReportDao {
@Autowired
private EntityManager entityManager;
@Override
public List<JxManageCodeResultModel> queryManageCodeMcRecordReportPager(JxManageCodeModel model, Pager pager) {
StringBuffer hql = new StringBuffer();
hql.append(" select new " + JxManageCodeResultModel.class.getName() + "( mr.id, mr.workOrderNo, mr.workCenterCode, ps.workCellCode, mr.manageCode, mr.createDatetime as bindTime, ps.snStatus ) ");
packHqlForQueryManageCodeList(hql, model);
hql.append(" order by mr.workCenterCode, mr.workOrderNo, mr.manageCode ");
Query query = entityManager.createQuery(hql.toString(), JxManageCodeResultModel.class);
packParameterForQueryManageCodeList(query, model);
query.setMaxResults(pager.getPageSize());
if (pager.getCurrentPage() == 0) {
pager.setCurrentPage(1);
}
query.setFirstResult(pager.getCurrentPage() * pager.getPageSize() - pager.getPageSize());
return query.getResultList();
}
private void packHqlForQueryManageCodeList(StringBuffer hql, JxManageCodeModel model) {
hql.append(" from MesProduceSnMcRecord as mr ");
hql.append(" inner join MesProduceSn ps on ( mr.serialNumber = ps.serialNumber and ps.organizeCode = :organizeCode and ps.isValid = :isValid and ps.isDeleted = :isDeleted) ");
hql.append(" where mr.organizeCode = :organizeCode ");
hql.append(" and mr.isValid = :isValid ");
hql.append(" and mr.isDeleted = :isDeleted ");
hql.append(" and mr.snStatus = :snStatus ");
if (!StringUtils.isEmpty(model.getWorkOrderNo())) {
hql.append(" and mr.workOrderNo like :workOrderNo ");
}
if (!StringUtils.isEmpty(model.getWorkCenterCode())) {
hql.append(" and mr.workCenterCode like :workCenterCode ");
}
if (!StringUtils.isEmpty(model.getManageCode())) {
hql.append(" and mr.manageCode like :manageCode ");
}
}
private void packParameterForQueryManageCodeList(Query query, JxManageCodeModel model) {
query.setParameter(MesExtConstWords.ORGANIZE_CODE, model.getOrganizeCode());
query.setParameter(MesExtConstWords.IS_VALID, CommonEnumUtil.IS_VAILD.VAILD.getValue());
query.setParameter(MesExtConstWords.IS_DELETED, MesExtEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
query.setParameter(MesExtConstWords.SN_STATUS, MesExtEnumUtil.MC_RECORD_SN_STATUS.LINE_ON.getValue());
if (!StringUtils.isEmpty(model.getWorkOrderNo())) {
query.setParameter(MesExtConstWords.WORK_ORDER_NO, "%"+ model.getWorkOrderNo() + "%");
}
if (!StringUtils.isEmpty(model.getWorkCenterCode())) {
query.setParameter(MesExtConstWords.WORK_CENTER_CODE, "%"+ model.getWorkCenterCode() + "%");
}
if (!StringUtils.isEmpty(model.getManageCode())) {
query.setParameter(MesExtConstWords.MANAGE_CODE, "%"+ model.getManageCode() + "%" );
}
}
@Override
public int queryManageCodeMcRecordReportPagerCount(JxManageCodeModel model) {
StringBuffer hql = new StringBuffer();
hql.append(" select count(distinct mr.id) ");
packHqlForQueryManageCodeList(hql, model);
Query query = entityManager.createQuery(hql.toString(), Long.class);
packParameterForQueryManageCodeList(query, model);
return ((Long) query.getSingleResult()).intValue();
}
}

@ -0,0 +1,95 @@
package cn.estsh.i3plus.ext.mes.apiservice.serviceimpl.busi.jx;
import cn.estsh.i3plus.ext.mes.api.busi.jx.IJxManageCodeMcRecordService;
import cn.estsh.i3plus.ext.mes.apiservice.dao.jx.IJxManageCodeReportDao;
import cn.estsh.i3plus.ext.mes.pojo.bean.MesProduceSnExt;
import cn.estsh.i3plus.ext.mes.pojo.bean.MesProduceSnMcRecord;
import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxManageCodeModel;
import cn.estsh.i3plus.ext.mes.pojo.model.jx.JxManageCodeResultModel;
import cn.estsh.i3plus.ext.mes.pojo.repository.MesProduceSnExtRepository;
import cn.estsh.i3plus.ext.mes.pojo.repository.MesProduceSnMcRecordRepository;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtConstWords;
import cn.estsh.i3plus.ext.mes.pojo.util.MesExtEnumUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkOrder;
import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
* @PROJECT_NAME: i3plus-mes-panasonic-jx
* @DESCRIPTION:
* @USER: xinwang.yi
* @DATE: 2023-12-21 11:57
*/
@Service
public class JxManageCodeReportService implements IJxManageCodeMcRecordService {
@Autowired
private IJxManageCodeReportDao manageCodeReportDao;
@Autowired
private MesProduceSnMcRecordRepository produceSnMcRecordRepository;
@Autowired
private MesWorkOrderRepository workOrderRepository;
@Override
public ListPager<JxManageCodeResultModel> queryManageCodeMcRecordReportByPager(JxManageCodeModel manageCodeModel, Pager pager) {
pager = PagerHelper.getPager(pager, manageCodeReportDao.queryManageCodeMcRecordReportPagerCount(manageCodeModel));
List<JxManageCodeResultModel> resultList = manageCodeReportDao.queryManageCodeMcRecordReportPager(manageCodeModel , pager);
if (!CollectionUtils.isEmpty(resultList)) {
for (JxManageCodeResultModel model : resultList) {
model.setSnStatusName(MesExtEnumUtil.PRODUCE_SN_STATUS.valueOf(model.getSnStatus()));
}
}
return new ListPager(resultList, pager);
}
@Override
public void doUnbindManageCodeMcRecord(JxManageCodeModel manageCodeModel) {
MesProduceSnMcRecord produceSnMcRecord = produceSnMcRecordRepository.getById(manageCodeModel.getId());
if (produceSnMcRecord == null) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("当前操作资源已下线,请重新查询")
.build();
}
MesWorkOrder workOrder = workOrderRepository.getByProperty(
new String[]{MesExtConstWords.ORGANIZE_CODE, MesExtConstWords.IS_DELETED, MesExtConstWords.IS_VALID, MesExtConstWords.ORDER_NO},
new Object[]{manageCodeModel.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), produceSnMcRecord.getWorkOrderNo()});
if (MesExtEnumUtil.WORK_ORDER_STATUS.CLOSE.getValue() != workOrder.getWorkOrderStatus() && MesExtEnumUtil.WORK_ORDER_STATUS.REMOVE.getValue() != workOrder.getWorkOrderStatus()) {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode())
.setErrorDetail("管理码[%s]关联工单[%s]不为关闭或删除状态,不能强制解绑", produceSnMcRecord.getManageCode(), produceSnMcRecord.getWorkOrderNo())
.build();
}
produceSnMcRecord.setSnStatus(MesExtEnumUtil.MC_RECORD_SN_STATUS.LINE_OFF.getValue());
produceSnMcRecord.setSystemSyncStatus(MesExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
ConvertBean.serviceModelUpdate(produceSnMcRecord, manageCodeModel.getUserInfo());
produceSnMcRecordRepository.save(produceSnMcRecord);
}
}

@ -0,0 +1,38 @@
package cn.estsh.i3plus.ext.mes.pojo.model.jx;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import java.io.Serializable;
/**
* @author xinwang.yi
* @version 1.0
* @date 2023/12/21 15:32
**/
@Data
@ApiModel("管理码信息model")
public class JxManageCodeModel implements Serializable {
private static final long serialVersionUID = 1147109734364012401L;
@ApiParam("id")
private Long id;
@ApiParam("组织代码")
public String organizeCode;
@ApiParam("用户名")
public String userInfo;
@ApiParam("工单号")
private String workOrderNo;
@ApiParam("产线代码")
private String workCenterCode;
@ApiParam("管理码")
private String manageCode;
}

@ -0,0 +1,59 @@
package cn.estsh.i3plus.ext.mes.pojo.model.jx;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import java.io.Serializable;
/**
* @author xinwang.yi
* @version 1.0
* @date 2023/12/21 15:32
**/
@Data
@ApiModel("管理码信息model")
public class JxManageCodeResultModel implements Serializable {
private static final long serialVersionUID = 1147109734364012401L;
@ApiParam("组织代码")
public Long id;
@ApiParam("工单号")
private String workOrderNo;
@ApiParam("产线代码")
private String workCenterCode;
@ApiParam("产线名称")
private String workCenterName;
@ApiParam("工位代码")
private String workCellCode;
@ApiParam("工位名称")
private String workCellName;
@ApiParam("管理码")
private String manageCode;
@ApiParam("绑定时间")
private String bindTime;
@ApiParam("条码状态")
private Integer snStatus;
@ApiParam("条码状态")
private String snStatusName;
public JxManageCodeResultModel(Long id, String workOrderNo, String workCenterCode, String workCellCode, String manageCode, String bindTime, Integer snStatus) {
this.id = id;
this.workOrderNo = workOrderNo;
this.workCenterCode = workCenterCode;
this.workCellCode = workCellCode;
this.manageCode = manageCode;
this.bindTime = bindTime;
this.snStatus = snStatus;
}
}

@ -21,6 +21,8 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @Description:
@ -814,6 +816,7 @@ public class MesExtHqlPack {
if (!StringUtils.isEmpty(torqueManageTaskDetail.getCheckTimeStart()) || !StringUtils.isEmpty(torqueManageTaskDetail.getCheckTimeEnd())) {
DdlPreparedPack.timeBuilder(torqueManageTaskDetail.getCheckTimeStart(), torqueManageTaskDetail.getCheckTimeEnd(), MesExtConstWords.CHECK_TIME, packBean, true);
}
DdlPreparedPack.getInPackList(Stream.of(MesExtEnumUtil.CHECK_RESULT.OK.getValue(), MesExtEnumUtil.CHECK_RESULT.NG.getValue()).collect(Collectors.toList()), MesExtConstWords.CHECK_RESULT, packBean);
DdlPreparedPack.getNumEqualPack(torqueManageTaskDetail.getIsTeamConfirm(), MesExtConstWords.IS_TEAM_CONFIRM, packBean);
return packBean;
}

@ -5468,4 +5468,58 @@ public class MesExtEnumUtil {
}
}
/**
*
*/
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum MC_RECORD_SN_STATUS {
LINE_ON(10, "管理码上线"),
LINE_OFF(20, "管理码下线");
private int value;
private String description;
MC_RECORD_SN_STATUS(int value, String description) {
this.value = value;
this.description = description;
}
public int getValue() {
return value;
}
public String getDescription() {
return description;
}
public static String valueOfDescription(int val) {
String tmp = null;
for (int i = 0; i < values().length; i++) {
if (values()[i].value == val) {
tmp = values()[i].description;
}
}
return tmp;
}
public static String valueOf(int val) {
String tmp = null;
for (int i = 0; i < values().length; i++) {
if (values()[i].value == val) {
tmp = values()[i].description;
}
}
return tmp;
}
public static MC_RECORD_SN_STATUS getByValue(int value) {
for (MC_RECORD_SN_STATUS produceSnStatus : values()) {
if (produceSnStatus.getValue() == value) {
return produceSnStatus;
}
}
return null;
}
}
}

Loading…
Cancel
Save