Merge remote-tracking branch 'origin/master'

master
Yangwl 1 year ago
commit 10a57885f0

@ -6,6 +6,8 @@ import java.util.List;
public class UpKeepOrderDTO {
private List<String> ids;
private List<String> orderCodes;
private String inspect;
public String getInspect() {
@ -23,4 +25,12 @@ public class UpKeepOrderDTO {
public void setIds(List<String> ids) {
this.ids = ids;
}
public List<String> getOrderCodes() {
return orderCodes;
}
public void setOrderCodes(List<String> orderCodes) {
this.orderCodes = orderCodes;
}
}

@ -1,24 +1,37 @@
package com.op.device.service.impl;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.op.common.core.context.SecurityContextHolder;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.utils.StringUtils;
import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.security.utils.SecurityUtils;
import com.op.device.domain.*;
import com.op.device.domain.dto.UpKeepOrderDTO;
import com.op.device.mapper.*;
import com.op.device.service.IEquUpkeepOrderService;
import com.op.system.api.RemoteOpenService;
import com.op.system.api.domain.SysNoticeGroup;
import com.op.system.api.domain.SysUser;
import com.op.system.api.domain.dto.WechartDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static com.op.common.core.web.domain.AjaxResult.success;
@ -30,6 +43,7 @@ import static com.op.common.core.web.domain.AjaxResult.success;
*/
@Service
public class EquUpkeepOrderServiceImpl implements IEquUpkeepOrderService {
protected Logger logger = LoggerFactory.getLogger(getClass());
@Autowired
private EquOrderMapper equOrderMapper;
@Autowired
@ -45,6 +59,12 @@ public class EquUpkeepOrderServiceImpl implements IEquUpkeepOrderService {
@Autowired
private SparePartsLedgerMapper sparePartsLedgerMapper;
@Autowired
private RemoteOpenService remoteOpenService;
@Autowired
private EquRepairOrderMapper equRepairOrderMapper;
/**
*
*
@ -249,6 +269,82 @@ public class EquUpkeepOrderServiceImpl implements IEquUpkeepOrderService {
order.setOrderInspect(upKeepOrderDTO.getInspect());
equOrderMapper.updateEquOrder(order);
}
String orderCodes = "";
List<String> list = upKeepOrderDTO.getOrderCodes();
for (String orderCode : list) {
orderCodes = orderCode + "、" + orderCodes ;
}
String inspect = "";
if(upKeepOrderDTO.getInspect().equals("noPass")){
inspect = "不通过" ;
}else if(upKeepOrderDTO.getInspect().equals("pass")){
inspect = "通过" ;
}else{
inspect = "待检验" ;
}
//PDA企业微信报修审核提醒
//发企业微信--------------------开始(跟班组有关)
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); //规范时间格式
SysNoticeGroup noticeQo = new SysNoticeGroup();
noticeQo.setNoticeId(13L);
EquTeamUser equTeamUser = new EquTeamUser();
equTeamUser.setUserName(SecurityUtils.getUsername());
EquTeamUser equTeamUser1 = equRepairOrderMapper.getRepairPhoneNumber(equTeamUser);
Integer number = ids.size(); //个数
List<SysNoticeGroup> notices = equRepairOrderMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
List<String> userCodes = notices.stream()
.map(SysNoticeGroup::getUserCode)
.collect(Collectors.toList());
for (SysNoticeGroup noticeDto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticeDto.getWxId());
String contentInfo = noticeDto.getNoticeContent();
contentInfo = contentInfo
.replace("${n}", "\n")
.replace("${number}", number.toString())
.replace("${messageType}", "保养")
.replace("${result}", inspect + "\n")
.replace("${checkTime}", myFmt.format(DateUtils.getNowDate())+"\n")
;
//工单号
if(StringUtils.isNotEmpty(orderCodes)){
contentInfo = contentInfo.replace("${orderCodes}", orderCodes +"\n");
}else{
contentInfo = contentInfo.replace("${orderCodes}", "无"+"\n");
}
//检查人
if(StringUtils.isNotEmpty(equTeamUser1.getNickName())){
contentInfo = contentInfo.replace("${checkPeople}", equTeamUser1.getNickName()+"\n");
}else{
contentInfo = contentInfo.replace("${checkPeople}", "无"+"\n");
}
Pattern p= Pattern.compile("<[^>]+>");
Matcher m = p.matcher(contentInfo);
contentInfo = m.replaceAll("");
System.out.println(contentInfo);
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("保养结果检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("保养结果检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
}).start();
}
//发企业微信--------------------结束
}
return success();
}
}

@ -38,14 +38,17 @@
</select>
<select id="getNewTaskOrder" resultType="com.op.device.domain.EquOrder">
select top 1 order_code orderCode,
create_time createTime
create_time createTime
<if test="planLoopType=='day'">, DATEDIFF (day, create_time, GETDATE()) days </if>
<if test="planLoopType=='week'">, DATEDIFF (week, create_time, GETDATE()) days </if>
<if test="planLoopType=='month'">, DATEDIFF (month, create_time, GETDATE()) days </if>
<if test="planLoopType=='season'">, DATEDIFF (month, create_time, GETDATE())/3 days </if>
<if test="planLoopType=='year'">, DATEDIFF (year, create_time, GETDATE()) days </if>
from equ_order
where plan_type = #{planType} and plan_code = #{planCode} and equipment_code = #{equipmentCode}
where plan_type = #{planType}
and plan_code = #{planCode}
and equipment_code = #{equipmentCode}
and del_flag = '0'
order by create_time desc
</select>
<select id="getNewTaskOrder0" resultType="com.op.device.domain.EquOrder">
@ -57,7 +60,10 @@
<if test='planLoopType=="season"'> DATEDIFF (month, order_start, GETDATE())/3 days </if>
<if test='planLoopType=="year"'> DATEDIFF (year, order_start, GETDATE()) days </if>
from equ_order
where plan_type = #{planType} and plan_code = #{planCode} and equipment_code = #{equipmentCode}
where plan_type = #{planType}
and plan_code = #{planCode}
and equipment_code = #{equipmentCode}
and del_flag = '0'
order by create_time desc
</select>
</mapper>

@ -352,7 +352,7 @@
from sys_notice_group sng
left join sys_notice sn on sng.notice_id = sn.notice_id
left join base_team_user btu on sng.group_code = btu.team_code
where sng.notice_id = #{noticeId}
where sng.notice_id = #{noticeId} and sng.del_flag = '0'
</select>
</mapper>

@ -358,9 +358,9 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
// if(sHzWorks==null){//再去查预报工的一条数带出基本数据其它全部赋值0
// sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
// }
if(sHzWorks==null){//再去查预报工的一条数带出基本数据其它全部赋值0
sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
}
if(sHzWorks==null){
return R.fail("未查询到一层报工单");
@ -386,9 +386,9 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
// if(sHzWorks==null){//再去查预报工的一条数带出基本数据其它全部赋值0
// sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
// }
if(sHzWorks==null){//再去查预报工的一条数带出基本数据其它全部赋值0
sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
}
if(sHzWorks==null){
return R.fail("未查询到子报工单");
@ -405,9 +405,9 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
MesReportWork pHzWork = mesReportWorkMapper.getReportWorkHz(mesReportWork);
// if(pHzWork==null){//再去查预报工的一条数带出基本数据其它全部赋值0
// pHzWork = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
// }
if(pHzWork==null){//再去查预报工的一条数带出基本数据其它全部赋值0
pHzWork = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
}
if(pHzWork==null){
return R.fail("未查询到母报工单");
@ -444,9 +444,9 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
mesReportWork.setMachineCode(mesReportWork.getMachineCode());
MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork);
// if(sHzWorks==null){//再去查预报工的一条数带出基本数据其它全部赋值0
// sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
// }
if(sHzWorks==null){//再去查预报工的一条数带出基本数据其它全部赋值0
sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork);
}
if (sHzWorks == null) {
return R.fail(workOrder.getWorkorderCode()+"未查询到报工单");

@ -619,7 +619,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from
mes_report_work
where upload_status != #{uploadStatus} and prod_type = #{prodType}
and workorder_code = #{workorderCode} and del_flag='0'<!-- and attr1 != '1' attr1是预报工-->
and workorder_code = #{workorderCode} and del_flag='0' and (attr1 != '1' or attr1 is null) <!--attr1是预报工-->
<if test='machineCode!=""'>
and machine_code = #{machineCode}
</if>

@ -92,7 +92,7 @@ public class OpenController extends BaseController {
}
/**
* ( )
* ()
*/
@PostMapping(value = "/createCheckProduceTask")
public AjaxResult createCheckProduceTask(@RequestBody QcCheckTaskProduceDTO qcCheckTaskProduce) {
@ -116,6 +116,34 @@ public class OpenController extends BaseController {
return toAjax(openService.insertQcCheckTaskProduce(qcCheckTaskProduce));
}
/**
*
*/
@PostMapping(value = "/createCheckProductTask")
public AjaxResult createCheckProductTask(@RequestBody QcCheckTaskProduceDTO qcCheckTaskProduce) {
if (StringUtils.isBlank(qcCheckTaskProduce.getOrderNo())) {
return error("[orderNo]不能为空");
}
if (StringUtils.isBlank(qcCheckTaskProduce.getIncomeBatchNo())) {
return error("[incomeBatchNo]不能为空");
}
if (StringUtils.isBlank(qcCheckTaskProduce.getMaterialName())) {
return error("[materialName]不能为空");
}
if (StringUtils.isBlank(qcCheckTaskProduce.getMaterialCode())) {
return error("[materialCode]不能为空");
}
if (StringUtils.isBlank(qcCheckTaskProduce.getCheckType())) {
return error("[checkType]不能为空");
}
if (StringUtils.isBlank(qcCheckTaskProduce.getFactoryCode())) {
return error("[factoryCode]不能为空");
}
//添加检测任务
return toAjax(openService.insertQcCheckTaskProduce(qcCheckTaskProduce));
}
/**
* ===============ZL0010- :"workflowId": 26235=============
* <p>

@ -91,5 +91,7 @@ public interface OpenMapper {
List<SysNoticeGroup> getNoticesGroup(SysNoticeGroup noticeQo);
EquEquipmentDTO selectEquipmentDetailByEquipmentCode(String equipmentCode);
List<SysNoticeGroup> getNotices(SysNoticeGroup noticeQo);
}

@ -75,8 +75,7 @@ public class OpenServiceImpl implements OpenService {
@Autowired
private OpenMapper openMapper;
@Autowired
private RemoteOpenService remoteOpenService;
private static Pattern p2= Pattern.compile("<[^>]+>");
/**
*
@ -373,7 +372,7 @@ public class OpenServiceImpl implements OpenService {
logger.info("上位机报修企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts);
AjaxResult wxresult = this.sendWeChartMessage(wecharts);
logger.info("上位机报修企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
}).start();
@ -391,7 +390,7 @@ public class OpenServiceImpl implements OpenService {
// 1分钟不允许存在两条
Date lastData = openMapper.getLastTask(qcCheckTaskProduce);
if(this.oneMinHas(lastData)){
logger.info("【重复创建首检任务】orderNo:"+qcCheckTaskProduce.getOrderNo()+";"+"incomeBatchNo:"+qcCheckTaskProduce.getIncomeBatchNo());
logger.info("【重复创建任务】orderNo:"+qcCheckTaskProduce.getOrderNo()+";"+"incomeBatchNo:"+qcCheckTaskProduce.getIncomeBatchNo());
return 0;
}
@ -491,6 +490,37 @@ public class OpenServiceImpl implements OpenService {
}
int n = openMapper.addBatch(items);
logger.info(qcCheckTaskProduce.getOrderNo()+":qc_check_task_detail新增" + n + "成功");
//发企业微信--------------------开始(跟班组有关)
SysNoticeGroup noticeQo = new SysNoticeGroup();
if(qcCheckTaskProduce.getCheckType().equals("checkTypeCPPC")){
noticeQo.setNoticeId(12L);//批次成品检验
}
List<SysNoticeGroup> notices = openMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = noticedto.getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskProduce.getCheckNo()+"\n");
Matcher matcher = p2.matcher(contentInfo);
contentInfo = matcher.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = this.sendWeChartMessage(wecharts);
logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
}).start();
}
//发企业微信--------------------结束
}
return n;
}

@ -396,7 +396,7 @@
from sys_notice_group sng
left join sys_notice sn on sng.notice_id = sn.notice_id
left join base_team_user btu on sng.group_code = btu.team_code
where sng.notice_id = #{noticeId}
where sng.notice_id = #{noticeId} and sng.del_flag = '0'
</select>
<select id="selectEquipmentDetailByEquipmentCode" parameterType="String" resultType="com.op.system.api.domain.device.EquEquipmentDTO">
@ -404,5 +404,13 @@
where equipment_code = #{equipmentCode}
and del_flag = '0'
</select>
<select id="getNotices" resultType="com.op.system.api.domain.SysNoticeGroup">
select
sn.notice_title noticeTitle,
sn.notice_type noticeType,
sn.notice_content noticeContent
from sys_notice sn
where sn.notice_id = #{noticeId}
</select>
</mapper>

@ -7,9 +7,11 @@ import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson2.JSONObject;
import com.op.common.core.exception.ServiceException;
import com.op.plan.domain.ProOrder;
import com.op.plan.domain.ProOrderWorkorderBatch;
import com.op.plan.domain.dto.SplitOrderDTO;
import com.op.plan.service.IProWetMaterialPlanDetailService;
import com.op.plan.service.IProWetMaterialPlanService;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;
@ -267,4 +269,37 @@ public class ProOrderWorkorderController extends BaseController {
public List<ProOrderWorkorder> getUnReadComment(@RequestBody ProOrderWorkorder proOrderWorkorder) {
return proOrderWorkorderService.getUnReadComment(proOrderWorkorder);
}
@RequiresPermissions("mes:pro:workorder:edit")
@Log(title = "批次编辑", businessType = BusinessType.OTHER)
@GetMapping("/getWorkOrderBatch/{workOrderCode}")
public TableDataInfo getWorkOrderBatch(@PathVariable String workOrderCode) {
List<ProOrderWorkorderBatch> list = proOrderWorkorderService.getWorkOrderBatch(workOrderCode);
return getDataTable(list);
}
@RequiresPermissions("mes:pro:workorder:edit")
@GetMapping("/getWorkOrderBatchInfo")
public AjaxResult getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch) {
return success(proOrderWorkorderService.getWorkOrderBatchInfo(proOrderWorkorderBatch));
}
@RequiresPermissions("mes:pro:workorder:edit")
@PostMapping("/insertWorkOrderBatch")
public AjaxResult insertWorkOrderBatch(@RequestBody ProOrderWorkorderBatch proOrderWorkorderBatch) {
return toAjax(proOrderWorkorderService.insertWorkOrderBatch(proOrderWorkorderBatch));
}
@RequiresPermissions("mes:pro:workorder:edit")
@PutMapping("/updateWorkOrderBatch")
public AjaxResult updateWorkOrderBatch(@RequestBody ProOrderWorkorderBatch proOrderWorkorderBatch) {
return toAjax(proOrderWorkorderService.updateWorkOrderBatch(proOrderWorkorderBatch));
}
@RequiresPermissions("mes:pro:workorder:edit")
@DeleteMapping("/removeWorkOrderBatch/{batchCode}/{workOrderCode}")
public AjaxResult removeWorkOrderBatch(@PathVariable("batchCode") String batchCode,
@PathVariable("workOrderCode")String workorderCode) {
ProOrderWorkorderBatch newBatch = new ProOrderWorkorderBatch();
newBatch.setBatchCode(batchCode);
newBatch.setWorkorderCode(workorderCode);
return toAjax(proOrderWorkorderService.deleteWorkOrderBatch(newBatch));
}
}

@ -79,6 +79,11 @@ public class ProOrderWorkorderBatch extends BaseEntity {
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String factoryCode;
private String workorderCode;
private String newBatchCode;
private Long newBatchQuantity;
public void setBatchId(String batchId) {
this.batchId = batchId;
}
@ -167,6 +172,30 @@ public class ProOrderWorkorderBatch extends BaseEntity {
return factoryCode;
}
public String getWorkorderCode() {
return workorderCode;
}
public void setWorkorderCode(String workorderCode) {
this.workorderCode = workorderCode;
}
public String getNewBatchCode() {
return newBatchCode;
}
public void setNewBatchCode(String newBatchCode) {
this.newBatchCode = newBatchCode;
}
public Long getNewBatchQuantity() {
return newBatchQuantity;
}
public void setNewBatchQuantity(Long newBatchQuantity) {
this.newBatchQuantity = newBatchQuantity;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)

@ -0,0 +1,43 @@
package com.op.plan.domain.dto;
public class CheckTaskBatchDTO {
private String incomeBatchNo;
private String newIncomeBatchNo;
private String orderNo;
public CheckTaskBatchDTO(String incomeBatchNo, String newIncomeBatchNo, String orderNo) {
this.incomeBatchNo = incomeBatchNo;
this.newIncomeBatchNo = newIncomeBatchNo;
this.orderNo = orderNo;
}
public CheckTaskBatchDTO() {
}
public String getIncomeBatchNo() {
return incomeBatchNo;
}
public void setIncomeBatchNo(String incomeBatchNo) {
this.incomeBatchNo = incomeBatchNo;
}
public String getNewIncomeBatchNo() {
return newIncomeBatchNo;
}
public void setNewIncomeBatchNo(String newIncomeBatchNo) {
this.newIncomeBatchNo = newIncomeBatchNo;
}
public String getOrderNo() {
return orderNo;
}
public void setOrderNo(String orderNo) {
this.orderNo = orderNo;
}
}

@ -0,0 +1,50 @@
package com.op.plan.domain.dto;
public class MesReportWorkBatchDTO {
private String batch;
private String newBatch;
private String parentOrder;
private String workorderCode;
public MesReportWorkBatchDTO(String batch, String newBatch, String parentOrder, String workorderCode) {
this.batch = batch;
this.newBatch = newBatch;
this.parentOrder = parentOrder;
this.workorderCode = workorderCode;
}
public MesReportWorkBatchDTO() {
}
public String getBatch() {
return batch;
}
public void setBatch(String batch) {
this.batch = batch;
}
public String getNewBatch() {
return newBatch;
}
public void setNewBatch(String newBatch) {
this.newBatch = newBatch;
}
public String getParentOrder() {
return parentOrder;
}
public void setParentOrder(String parentOrder) {
this.parentOrder = parentOrder;
}
public String getWorkorderCode() {
return workorderCode;
}
public void setWorkorderCode(String workorderCode) {
this.workorderCode = workorderCode;
}
}

@ -81,5 +81,9 @@ public interface ProOrderWorkorderBatchMapper {
public int deleteBatch(String[] workorderIds);
int updateWorkorderBatch(ProOrderWorkorderBatch batch);
int deleteWorkOrderBatch(@Param("batchCode") String batchCode,@Param("workOrderIds") String[] workOrderIds);
List<String> checkBatchCodeByWorkOrderIds(@Param("workorderIds")String[] workorderIds,@Param("newbatchs") List<String> newbatchs);
}

@ -1,9 +1,8 @@
package com.op.plan.mapper;
import com.op.plan.domain.Batch;
import com.op.plan.domain.ProOrder;
import com.op.plan.domain.ProOrderWorkorder;
import com.op.plan.domain.ProWetMaterialPlanDetail;
import com.op.plan.domain.*;
import com.op.plan.domain.dto.CheckTaskBatchDTO;
import com.op.plan.domain.dto.MesReportWorkBatchDTO;
import com.op.system.api.domain.dto.BaseBomComponentDTO;
import com.op.system.api.domain.dto.MesPrepareDTO;
import com.op.system.api.domain.dto.MesPrepareDetailDTO;
@ -207,5 +206,15 @@ public interface ProOrderWorkorderMapper {
int deleteWetMaterial(@Param("orderIds")String[] workorderIds);
List<ProOrderWorkorder> getUnReadComment(ProOrderWorkorder proOrderWorkorder);
List<ProOrderWorkorderBatch> getWorkOrderBatch(@Param("workOrderCode") String workOrderCode);
ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch);
List<ProOrderWorkorder> selectWorkOrderIdByBatch(@Param("workorderCode") String workorderCode);
int updateMesReportWorkBatch(MesReportWorkBatchDTO mesReportWorkBatchDTO);
int updateCheckTaskBatch(CheckTaskBatchDTO checkTaskBatchDTO);
}

@ -3,6 +3,7 @@ package com.op.plan.service;
import com.op.common.core.web.domain.AjaxResult;
import com.op.plan.domain.ProOrderWorkorder;
import com.op.plan.domain.ProOrderWorkorderBatch;
import com.op.plan.domain.dto.SplitOrderDTO;
import java.util.List;
@ -137,4 +138,13 @@ public interface IProOrderWorkorderService {
int deleteWetMaterial(String[] workorderIds);
List<ProOrderWorkorder> getUnReadComment(ProOrderWorkorder proOrderWorkorder);
List<ProOrderWorkorderBatch> getWorkOrderBatch(String workOrderId);
ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch);
int insertWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch);
int updateWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch);
int deleteWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch);
}

@ -13,6 +13,8 @@ import com.op.common.core.utils.uuid.IdUtils;
import com.op.common.core.web.domain.AjaxResult;
import com.op.common.security.utils.SecurityUtils;
import com.op.plan.domain.*;
import com.op.plan.domain.dto.CheckTaskBatchDTO;
import com.op.plan.domain.dto.MesReportWorkBatchDTO;
import com.op.plan.domain.dto.ProOrderDTO;
import com.op.plan.domain.dto.SplitOrderDTO;
import com.op.plan.domain.vo.CascaderDTO;
@ -1133,6 +1135,147 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
return dtos;
}
@Override
@DS("#header.poolName")
public List<ProOrderWorkorderBatch> getWorkOrderBatch(String workOrderCode) {
List<ProOrderWorkorderBatch> workOrderBatch = proOrderWorkorderMapper.getWorkOrderBatch(workOrderCode);
return workOrderBatch;
}
@Override
@DS("#header.poolName")
public ProOrderWorkorderBatch getWorkOrderBatchInfo(ProOrderWorkorderBatch proOrderWorkorderBatch) {
return proOrderWorkorderMapper.getWorkOrderBatchInfo(proOrderWorkorderBatch);
}
@Override
@DS("#header.poolName")
public int insertWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) {
String workOrderCode = proOrderWorkorderBatch.getWorkorderCode();
String username = SecurityUtils.getUsername();
List<ProOrderWorkorder> workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode);
// 系数
Long coefficient = 1L;
if(workOrders.size()==2){
// 获取子母工单数量
Optional<Long> pQuantity = workOrders.stream().filter(item -> "0".equals(item.getParentOrder()))
.findFirst().map(ProOrderWorkorder::getQuantitySplit);
Optional<Long> cQuantity = workOrders.stream().filter(item -> !"0".equals(item.getParentOrder()))
.findFirst().map(ProOrderWorkorder::getQuantitySplit);
if (pQuantity.isPresent() && cQuantity.isPresent()) {
coefficient = cQuantity.get() / pQuantity.get();
}
}else if(workOrders.size()==3){
//TODO;
}
int count = 0;
for (int m=0;m<workOrders.size();m++) {
ProOrderWorkorder workOrder = workOrders.get(m);
ProOrderWorkorderBatch batch = new ProOrderWorkorderBatch();
batch.setBatchId(IdUtils.fastSimpleUUID());
batch.setWorkorderId(workOrder.getWorkorderId());
batch.setBatchCode(proOrderWorkorderBatch.getNewBatchCode());
batch.setStatus("0");
batch.setCreateBy(username);
Date nowDate = DateUtils.getNowDate();
batch.setCreateTime(nowDate);
batch.setUpdateBy(username);
batch.setUpdateTime(nowDate);
if(proOrderWorkorderBatch.getNewBatchQuantity() != null){
Long newBatchQuantity = proOrderWorkorderBatch.getNewBatchQuantity();
if(m==0){
// 设置子工单数量
batch.setBatchQuantity(newBatchQuantity);
}else{
BigDecimal pQuantity = new BigDecimal(workOrders.get(m).getQuantitySplit());
BigDecimal cQuantity = new BigDecimal(workOrders.get(m-1).getQuantitySplit());
batch.setBatchQuantity(pQuantity.divide(cQuantity)
.multiply(new BigDecimal(newBatchQuantity)).longValue());
}
}
count += proOrderWorkorderBatchMapper.insertProOrderWorkorderBatch(batch);
}
return count;
}
@Override
@Transactional(rollbackFor = Exception.class)
@DS("#header.poolName")
public int updateWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) {
String workOrderCode = proOrderWorkorderBatch.getWorkorderCode();
String username = SecurityUtils.getUsername();
String batchCode = proOrderWorkorderBatch.getBatchCode();
String newBatchCode = proOrderWorkorderBatch.getNewBatchCode();
List<ProOrderWorkorder> workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode);
int count = 0;
for (int m=0;m<workOrders.size();m++) {
ProOrderWorkorder workOrder = workOrders.get(m);
ProOrderWorkorderBatch batch = new ProOrderWorkorderBatch();
batch.setBatchId(IdUtils.fastSimpleUUID());
batch.setWorkorderId(workOrder.getWorkorderId());
// 获取新旧批次号
batch.setBatchCode(batchCode);
batch.setNewBatchCode(newBatchCode);
batch.setStatus("0");
batch.setUpdateBy(username);
batch.setUpdateTime(DateUtils.getNowDate());
if(proOrderWorkorderBatch.getNewBatchQuantity() != null){
Long newBatchQuantity = proOrderWorkorderBatch.getNewBatchQuantity();
if(m==0){
// 设置子工单数量
batch.setNewBatchQuantity(newBatchQuantity);
}else{
BigDecimal pQuantity = new BigDecimal(workOrders.get(m).getQuantitySplit());
BigDecimal cQuantity = new BigDecimal(workOrders.get(m-1).getQuantitySplit());
batch.setNewBatchQuantity(pQuantity.divide(cQuantity)
.multiply(new BigDecimal(newBatchQuantity)).longValue());
}
}
count += proOrderWorkorderBatchMapper.updateWorkorderBatch(batch);
}
// 更新质检任务表
CheckTaskBatchDTO checkTaskBatchDTO = new CheckTaskBatchDTO(batchCode,newBatchCode,workOrderCode);
logger.info("质检任务批次修改开始!");
proOrderWorkorderMapper.updateCheckTaskBatch(checkTaskBatchDTO);
logger.info("质检任务批次修改结束!");
// 更新报工表
MesReportWorkBatchDTO mesReportWorkBatchDTO = new MesReportWorkBatchDTO(batchCode,newBatchCode,workOrderCode,workOrderCode);
logger.info("报工表批次修改开始!");
proOrderWorkorderMapper.updateMesReportWorkBatch(mesReportWorkBatchDTO);
logger.info("报工表批次修改结束!");
return count;
}
@Override
@DS("#header.poolName")
public int deleteWorkOrderBatch(ProOrderWorkorderBatch proOrderWorkorderBatch) {
String workOrderCode = proOrderWorkorderBatch.getWorkorderCode();
List<ProOrderWorkorder> workOrders = proOrderWorkorderMapper.selectWorkOrderIdByBatch(workOrderCode);
String[] workOrderIds = workOrders.stream().map(ProOrderWorkorder::getWorkorderId).toArray(String[]::new);
String batchCode = proOrderWorkorderBatch.getBatchCode();
return proOrderWorkorderBatchMapper.deleteWorkOrderBatch(batchCode,workOrderIds);
}
/**
*
* 湿

@ -143,6 +143,28 @@
</trim>
where workorder_id = #{workorderId}
</update>
<update id="updateWorkorderBatch" parameterType="ProOrderWorkorderBatch">
update pro_order_workorder_batch
<trim prefix="SET" suffixOverrides=",">
<if test="batchId != null and batchId != ''">batch_id = #{batchId},</if>
<if test="newBatchCode != null">batch_code = #{newBatchCode},</if>
<if test="newBatchQuantity != null">batch_quantity = #{newBatchQuantity},</if>
<if test="status != null">status = #{status},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="attr1 != null">attr1 = #{attr1},</if>
<if test="attr2 != null">attr2 = #{attr2},</if>
<if test="attr3 != null">attr3 = #{attr3},</if>
<if test="attr4 != null">attr4 = #{attr4},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="prodType != null">prod_type = #{prodType},</if>
<if test="factoryCode != null">factory_code = #{factoryCode},</if>
</trim>
where workorder_id = #{workorderId} and batch_code = #{batchCode}
and del_flag = '0'
</update>
<delete id="deleteProOrderWorkorderBatchByWorkorderId" parameterType="String">
update pro_order_workorder_batch
@ -169,5 +191,13 @@
#{workorderId}
</foreach>
</delete>
<delete id="deleteWorkOrderBatch">
update pro_order_workorder_batch
set del_flag = '1'
where batch_code = #{batchCode} and workorder_id in
<foreach item="workOrderId" collection="workOrderIds" open="(" separator="," close=")">
#{workOrderId}
</foreach>
</delete>
</mapper>

@ -603,6 +603,38 @@
order by pow.product_date desc
</select>
<select id="getWorkOrderBatch" resultType="com.op.plan.domain.ProOrderWorkorderBatch">
select pow.workorder_code workorderCode,
powb.batch_code batchCode,
powb.batch_quantity batchQuantity
from pro_order_workorder pow
left join pro_order_workorder_batch powb on pow.workorder_id = powb.workorder_id
where powb.del_flag = '0'
and pow.workorder_code = #{workOrderCode}
order by powb.batch_code
</select>
<select id="getWorkOrderBatchInfo" resultType="com.op.plan.domain.ProOrderWorkorderBatch">
select pow.workorder_code workorderCode,
powb.batch_code batchCode,
powb.batch_quantity batchQuantity
from pro_order_workorder pow
left join pro_order_workorder_batch powb on pow.workorder_id = powb.workorder_id
where powb.del_flag = '0'
and pow.workorder_code = #{workorderCode}
and powb.batch_code = #{batchCode}
order by powb.batch_code
</select>
<select id="selectWorkOrderIdByBatch" resultType="com.op.plan.domain.ProOrderWorkorder">
select workorder_id workorderId,
quantity_split quantitySplit,
parent_order parentOrder
from pro_order_workorder
where belong_work_order = #{workorderCode} and del_flag = '0'
order by workorder_code_sap desc
</select>
<insert id="createPrepareDetails">
insert into mes_prepare_detail
(
@ -827,4 +859,15 @@
#{orderId}
</foreach>
</delete>
<update id="updateCheckTaskBatch" parameterType="com.op.plan.domain.dto.CheckTaskBatchDTO">
update qc_check_task set income_batch_no = #{newIncomeBatchNo}
where income_batch_no = #{incomeBatchNo} and order_no = #{orderNo}
and del_flag = '0'
</update>
<update id="updateMesReportWorkBatch" parameterType="com.op.plan.domain.dto.MesReportWorkBatchDTO">
update mes_report_work set batch = #{newBatch}
where batch = #{batch} and (parent_order = #{parentOrder} or workorder_code = #{workorderCode})
and del_flag = '0'
</update>
</mapper>

@ -43,15 +43,15 @@ public class QcCheckReportProductController extends BaseController {
@GetMapping("/list")
public TableDataInfo list(QcCheckReportIncome qcCheckReportIncome) {
//默认时间范围T 00:00:00~T+1 00:00:00
if (StringUtils.isEmpty(qcCheckReportIncome.getCheckTimeStart())) {
qcCheckReportIncome.setCheckTimeStart(DateUtils.getDate() + " 00:00:00");//start
LocalDate date = LocalDate.now();
LocalDate dateEnd = date.plusDays(1);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String dateEndStr = dtf.format(dateEnd) + " 00:00:00";
qcCheckReportIncome.setCheckTimeEnd(dateEndStr);//end
}
// //默认时间范围T 00:00:00~T+1 00:00:00
// if (StringUtils.isEmpty(qcCheckReportIncome.getCheckTimeStart())) {
// qcCheckReportIncome.setCheckTimeStart(DateUtils.getDate() + " 00:00:00");//start
// LocalDate date = LocalDate.now();
// LocalDate dateEnd = date.plusDays(1);
// DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// String dateEndStr = dtf.format(dateEnd) + " 00:00:00";
// qcCheckReportIncome.setCheckTimeEnd(dateEndStr);//end
// }
// if(StringUtils.isEmpty(qcCheckReportIncome.getCheckTimeStart())){
// qcCheckReportIncome.setCheckTimeStart(qcCheckReportIncome.getIncomeTimeStart());//start

@ -282,13 +282,23 @@ public class QcCheckTaskIncomeController extends BaseController {
}
/**
*
*
*/
// @RequiresPermissions("quality:qcIncome:remove")
// @Log(title = "来料检验", businessType = BusinessType.DELETE)
// @DeleteMapping("/{recordIds}")
// public AjaxResult remove(@PathVariable String[] recordIds) {
// return toAjax(qcCheckTaskIncomeService.deleteQcCheckTaskIncomeByRecordIds(recordIds));
// }
/**
*
*/
@RequiresPermissions("quality:qcIncome:remove")
@Log(title = "来料检验", businessType = BusinessType.DELETE)
@DeleteMapping("/{recordIds}")
public AjaxResult remove(@PathVariable String[] recordIds) {
return toAjax(qcCheckTaskIncomeService.deleteQcCheckTaskIncomeByRecordIds(recordIds));
@DeleteMapping("/{recordId}")
public AjaxResult remove(@PathVariable String recordId) {
return toAjax(qcCheckTaskIncomeService.deleteQcCheckTaskIncomeByRecordId(recordId));
}
/**

@ -105,12 +105,22 @@ public class QcCheckTaskInventoryController extends BaseController {
}
/**
*
*
*/
// @RequiresPermissions("quality:qcInventory:remove")
//// @Log(title = "库存检验任务", businessType = BusinessType.DELETE)
//// @DeleteMapping("/{recordIds}")
//// public AjaxResult remove(@PathVariable String[] recordIds) {
//// return toAjax(qcCheckTaskInventoryService.deleteQcCheckTaskInventoryByRecordIds(recordIds));
//// }
/**
*
*/
@RequiresPermissions("quality:qcInventory:remove")
@Log(title = "库存检验任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{recordIds}")
public AjaxResult remove(@PathVariable String[] recordIds) {
return toAjax(qcCheckTaskInventoryService.deleteQcCheckTaskInventoryByRecordIds(recordIds));
@DeleteMapping("/{recordId}")
public AjaxResult remove(@PathVariable String recordId) {
return toAjax(qcCheckTaskInventoryService.deleteQcCheckTaskInventoryByRecordId(recordId));
}
}

@ -131,13 +131,23 @@ public class QcCheckTaskProduceController extends BaseController {
}
/**
*
*
*/
// @RequiresPermissions("quality:qcProduce:remove")
// @Log(title = "生产过程检验任务", businessType = BusinessType.DELETE)
// @DeleteMapping("/{recordIds}")
// public AjaxResult remove(@PathVariable String[] recordIds) {
// return toAjax(qcCheckTaskProduceService.deleteQcCheckTaskProduceByRecordIds(recordIds));
// }
/**
*
*/
@RequiresPermissions("quality:qcProduce:remove")
@Log(title = "生产过程检验任务", businessType = BusinessType.DELETE)
@DeleteMapping("/{recordIds}")
public AjaxResult remove(@PathVariable String[] recordIds) {
return toAjax(qcCheckTaskProduceService.deleteQcCheckTaskProduceByRecordIds(recordIds));
@DeleteMapping("/{recordId}")
public AjaxResult remove(@PathVariable String recordId) {
return toAjax(qcCheckTaskProduceService.deleteQcCheckTaskProduceByRecordId(recordId));
}
/**

@ -157,7 +157,7 @@ public class QcCheckTaskWarehousingController extends BaseController {
}
/**
*
*
**/
@PostMapping("/createCPBatchTask")
public R createCPBatchTask() {

@ -121,10 +121,9 @@ public class QcCheckTypeProjectController extends BaseController {
return toAjax(qcCheckTypeProjectService.submitProjects(typeProjects));
}
//获取方案下拉
//获取方案分页
@GetMapping("/getProjectOptions")
public List<QcProjectType> getProjectOptions(QcCheckProject qcCheckProject) {
startPage();
List<QcProjectType> list = qcCheckTypeProjectService.getProjectOptions(qcCheckProject);
return list;
}

@ -177,6 +177,23 @@ public class QcCheckTaskWarehousing extends BaseEntity {
private BigDecimal bNoOkquality;
private BigDecimal cNoOkquality;
private String workorderCode;
private String checkName;
public String getWorkorderCode() {
return workorderCode;
}
public void setWorkorderCode(String workorderCode) {
this.workorderCode = workorderCode;
}
public String getCheckName() {
return checkName;
}
public void setCheckName(String checkName) {
this.checkName = checkName;
}
public BigDecimal getaNoOkquality() {
return aNoOkquality;

@ -66,4 +66,7 @@ public interface QcCheckTaskDetailMapper {
public int addBatch(@Param("list") List<QcCheckTaskDetail> items);
List<String> getProjectStatus(String belongTo);
//逻辑删除详情表
void deleteQcCheckTaskDetailByBelongTo(String recordId);
}

@ -86,4 +86,6 @@ public interface QcCheckTaskProduceMapper {
public List<QcCheckTaskProduce> getOrderWorksW2(ProOrderWorkorderDTO qoWork);
public QcCheckTaskProduce getLastXJTask(QcCheckTaskProduce productTask);
public List<QcCheckTaskProduce> getOrderWorksW3(ProOrderWorkorderDTO qoWork);
}

@ -4,6 +4,7 @@ import java.util.List;
import com.op.quality.domain.QcCheckTaskUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* --Mapper
@ -70,5 +71,7 @@ public interface QcCheckTaskUserMapper {
public QcCheckTaskUser selectQcCheckTaskUserByBelongTo(String belongTo);
public int deleteQcCheckTaskUserByBelongTos(String[] belongToArray);
public int deleteQcCheckTaskUserByBelongTos(@Param("array") String[] belongToArray);
public int deleteTaskDetailByBelongTos(@Param("array")String[] belongToArray);
}

@ -72,4 +72,5 @@ public interface IQcCheckTaskUserService {
public QcCheckTaskUser selectQcCheckTaskUserByBelongTo(String belongTo);
public int insertQcCheckTaskUserPDA(List<QcCheckTaskUser> qcCheckTaskUserList);
}

@ -70,6 +70,7 @@ public class QcCheckReportProductServiceImpl implements IQcCheckReportProductSer
public List<QcCheckReportIncome> selectQcCheckReportIncomeList(QcCheckReportIncome qcCheckReportIncome) {
qcCheckReportIncome.setDelFlag("0");
qcCheckReportIncome.setTypeCode("product");
qcCheckReportIncome.setCheckType("checkTypeCP");
return qcCheckReportIncomeMapper.selectQcCheckReportIncomeList(qcCheckReportIncome);
}

@ -89,9 +89,15 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
@Autowired
private IQcCheckUnqualifiedService qcCheckUnqualifiedService;
@Autowired
private QcProCheckService qcProCheckService;
@Autowired
private QcCheckTaskUserMapper qcCheckTaskUserMapper;
private static Pattern p2= Pattern.compile("<[^>]+>");
/**
*
*
@ -278,9 +284,9 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
//发企业微信--------------------开始(跟班组无关)
SysNoticeGroup noticeQo = new SysNoticeGroup();
noticeQo.setNoticeId(6L);
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNotices(noticeQo);
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
Pattern p0= Pattern.compile("<[^>]+>");
List<WechartDTO> wecharts = new ArrayList<>();
//去主库查微信id
DynamicDataSourceContextHolder.push("master");// 这是数据源的key
@ -293,7 +299,7 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
wechart0.setUserId(wxid);
String contentInfo = notices.get(0).getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskIncome.getCheckNo()+"\n");
Matcher m = p0.matcher(contentInfo);
Matcher m = p2.matcher(contentInfo);
contentInfo = m.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
@ -379,7 +385,13 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
@Override
@DS("#header.poolName")
public int deleteQcCheckTaskIncomeByRecordId(String recordId) {
return qcCheckTaskIncomeMapper.deleteQcCheckTaskIncomeByRecordId(recordId);
//1.逻辑删除qc_check_task表
qcCheckTaskIncomeMapper.deleteQcCheckTaskIncomeByRecordId(recordId);
//2.逻辑删除qc_check_task_detail表
qcCheckTaskDetailMapper.deleteQcCheckTaskDetailByBelongTo(recordId);
//3.逻辑删除qc_check_task_user表
qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTo(recordId);
return 1;
}
@Override
@ -830,7 +842,6 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
noticeQo.setNoticeId(9L);
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
Pattern p= Pattern.compile("<[^>]+>");
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
@ -841,7 +852,7 @@ public class QcCheckTaskIncomeServiceImpl<QcCheckUnqualifiedService> implements
.replace("${checkNo}", qcCheckTaskIncome.getCheckNo()+"\n")
.replace("${supplierName}", qcCheckTaskIncome.getSupplierName()+"\n")
.replace("${quality}", qcCheckTaskIncome.getQuality()+"\n");
Matcher m = p.matcher(contentInfo);
Matcher m = p2.matcher(contentInfo);
contentInfo = m.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);

@ -59,6 +59,9 @@ public class QcCheckTaskInventoryServiceImpl implements IQcCheckTaskInventorySer
@Autowired
private QcSampleRuleMapper qcSampleRuleMapper;
@Autowired
private QcCheckTaskUserMapper qcCheckTaskUserMapper;
/**
*
*
@ -280,6 +283,12 @@ public class QcCheckTaskInventoryServiceImpl implements IQcCheckTaskInventorySer
@Override
@DS("#header.poolName")
public int deleteQcCheckTaskInventoryByRecordId(String recordId) {
return qcCheckTaskInventoryMapper.deleteQcCheckTaskInventoryByRecordId(recordId);
//1.逻辑删除qc_check_task表
qcCheckTaskInventoryMapper.deleteQcCheckTaskInventoryByRecordId(recordId);
//2.逻辑删除qc_check_task_detail表
qcCheckTaskDetailMapper.deleteQcCheckTaskDetailByBelongTo(recordId);
//3.逻辑删除qc_check_task_user表
qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTo(recordId);
return 1;
}
}

@ -85,6 +85,9 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
@Autowired
private QcSampleRuleMapper qcSampleRuleMapper;
@Autowired
private QcCheckTaskUserMapper qcCheckTaskUserMapper;
/**
*
*
@ -336,7 +339,13 @@ public class QcCheckTaskProduceServiceImpl implements IQcCheckTaskProduceService
@Override
@DS("#header.poolName")
public int deleteQcCheckTaskProduceByRecordId(String recordId) {
return qcCheckTaskProduceMapper.deleteQcCheckTaskProduceByRecordId(recordId);
//1.逻辑删除qc_check_task表
qcCheckTaskProduceMapper.deleteQcCheckTaskProduceByRecordId(recordId);
//2.逻辑删除qc_check_task_detail表
qcCheckTaskDetailMapper.deleteQcCheckTaskDetailByBelongTo(recordId);
//3.逻辑删除qc_check_task_user表
qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTo(recordId);
return 1;
}
@Override

@ -114,6 +114,7 @@ public class QcCheckTaskUserServiceImpl implements IQcCheckTaskUserService {
@Override
@DS("#header.poolName")
public int deleteQcCheckTaskUserByBelongTos(String[] belongToArray) {
qcCheckTaskUserMapper.deleteTaskDetailByBelongTos(belongToArray);
return qcCheckTaskUserMapper.deleteQcCheckTaskUserByBelongTos(belongToArray);
}

@ -10,10 +10,13 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import ch.qos.logback.core.net.SyslogOutputStream;
import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.domain.R;
@ -27,8 +30,11 @@ import com.op.quality.domain.*;
import com.op.quality.mapper.*;
import com.op.quality.service.IQcCheckTaskDefectService;
import com.op.quality.service.IQcCheckTaskUserService;
import com.op.system.api.RemoteOpenService;
import com.op.system.api.RemoteUserService;
import com.op.system.api.domain.SysNoticeGroup;
import com.op.system.api.domain.SysUser;
import com.op.system.api.domain.dto.WechartDTO;
import com.op.system.api.domain.mes.ProOrderWorkorderDTO;
import com.op.system.api.domain.quality.QcUserMaterialDTO;
import org.slf4j.Logger;
@ -79,6 +85,10 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
private RemoteUserService remoteUserService;
@Autowired
private QcCheckTaskProduceMapper qcCheckTaskProduceMapper;
@Autowired
private RemoteOpenService remoteOpenService;
private static Pattern p2= Pattern.compile("<[^>]+>");
/**
*
*
@ -153,18 +163,18 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
qctp.setTypeId(qcCheckTaskWarehousing.getCheckType());//生产过程检验
qctp.setMaterialCode(qcCheckTaskWarehousing.getMaterialCode());//特性
/**qc_check_type_project**/
List<QcCheckTaskDetail> items = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);
if(CollectionUtils.isEmpty(items)){
/**qc_material_group_detail**/
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskWarehousing.getMaterialCode());
if(group == null){
group = new QcMaterialGroupDetail();
group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");//成品蚊香物料组
}
qctp.setGroupId(group.getGroupId());//共性
List<QcCheckTaskDetail> itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp);
items.addAll(itemsGG);
List<QcCheckTaskDetail> items = new ArrayList<>();
List<QcCheckTaskDetail> items0 = qcCheckTypeProjectMapper.getTPByTypeMaterial(qctp);//个性
items.addAll(items0);
/**qc_material_group_detail**/
QcMaterialGroupDetail group = qcMaterialGroupDetailMapper.getGroupByMaterial(qcCheckTaskWarehousing.getMaterialCode());
if(group == null){
group = new QcMaterialGroupDetail();
group.setGroupId("3dc0655fea3449c59c76a01cc5b91565");//成品蚊香物料组
}
qctp.setGroupId(group.getGroupId());//共性
List<QcCheckTaskDetail> itemsGG = qcCheckTypeProjectMapper.getTPByTypeGroup(qctp);
items.addAll(itemsGG);
/**qc_check_task_detail**/
if(CollectionUtils.isEmpty(items)){
@ -241,6 +251,7 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
qcCheckTaskWarehousing.setSampleQuality(new BigDecimal(sampNum));
}
/**qc_check_task**/
qcCheckTaskWarehousing.setIncomeTime(DateUtils.getNowDate());//检验任务日期
int n = qcCheckTaskWarehousingMapper.insertQcCheckTaskWarehousing(qcCheckTaskWarehousing);
logger.info("qc_check_task:"+n+"成功");
@ -255,9 +266,38 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
}
int s = qcCheckTaskDetailMapper.addBatch(items);
// /**pro_order_workorder**/
// qcCheckTaskWarehousing.setStatus("w6");
// qcCheckTaskWarehousingMapper.updateWorkOrderStauts(qcCheckTaskWarehousing);
//发企业微信--------------------开始(跟班组有关)
SysNoticeGroup noticeQo = new SysNoticeGroup();
if(qcCheckTaskWarehousing.getCheckType().equals("checkTypeCP")){
noticeQo.setNoticeId(7L);//成品检验
}else if(qcCheckTaskWarehousing.getCheckType().equals("checkTypeCPPC")){
noticeQo.setNoticeId(12L);//批次成品检验
}
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
for (SysNoticeGroup noticedto : notices) {
WechartDTO wechart0 = new WechartDTO();
wechart0.setUserId(noticedto.getWxId());
String contentInfo = noticedto.getNoticeContent();
contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskWarehousing.getCheckNo() + "\n");
Matcher matcher = p2.matcher(contentInfo);
contentInfo = matcher.replaceAll("");
wechart0.setText(contentInfo);
wecharts.add(wechart0);
}
logger.info("成品检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts));
if (!CollectionUtils.isEmpty(wecharts)) {
new Thread(() -> {
AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts);
logger.info("成品检验企业微信提醒结果:" + JSONObject.toJSONString(wxresult));
}).start();
}
//发企业微信--------------------结束
}
logger.info("qc_check_task_detail:"+s+"成功");
return 1;
}
@ -373,21 +413,15 @@ public class QcCheckTaskWarehousingServiceImpl implements IQcCheckTaskWarehousin
ProOrderWorkorderDTO qoWork = new ProOrderWorkorderDTO();
qoWork.setStatus("w3");
//报工的
List<QcCheckTaskProduce> w3works = qcCheckTaskProduceMapper.getOrderWorksW2(qoWork);
List<QcCheckTaskProduce> w3works = qcCheckTaskProduceMapper.getOrderWorksW3(qoWork);
for(QcCheckTaskProduce productTask:w3works){
QcCheckTaskWarehousing cpTask = new QcCheckTaskWarehousing();
productTask.setCheckType("checkTypeCP");//入库检验
productTask.setOrderNo(productTask.getWorkorderCode());
BeanUtils.copyProperties(productTask,cpTask);
//是否已经存在入库检验
QcCheckTaskProduce cpTask0 = qcCheckTaskProduceMapper.getLastXJTask(productTask);
if(cpTask0 != null){
logger.info("++++++++++++入库检验任务生成:已经存在++++++++++++++");
}else{
int m = insertQcCheckTaskWarehousing(cpTask);
logger.info("++++++++++++入库检验任务生成" + m + "++++++++++++++");
}
int m = insertQcCheckTaskWarehousing(cpTask);
logger.info("++++++++++++入库检验任务生成" + m + "++++++++++++++");
}
logger.info("++++++++++++" + poolName + "++++入库检验巡检结束++++++++++");
}

@ -177,6 +177,12 @@
delete from qc_check_task_detail where record_id = #{recordId}
</delete>
<update id="deleteQcCheckTaskDetailByBelongTo" parameterType="String">
update qc_check_task_detail
set del_flag = '1'
where belong_to = #{recordId}
</update>
<delete id="deleteQcCheckTaskDetailByRecordIds" parameterType="String">
delete from qc_check_task_detail where record_id in
<foreach item="recordId" collection="array" open="(" separator="," close=")">

@ -327,9 +327,11 @@
</foreach>
</update>
<delete id="deleteQcCheckTaskIncomeByRecordId" parameterType="String">
delete from qc_check_task where record_id = #{recordId}
</delete>
<update id="deleteQcCheckTaskIncomeByRecordId" parameterType="String">
update qc_check_task
set del_flag = '1'
where record_id = #{recordId}
</update>
<delete id="deleteQcCheckTaskIncomeByRecordIds" parameterType="String">
delete from qc_check_task where record_id in
@ -494,7 +496,7 @@
from sys_notice_group sng
left join sys_notice sn on sng.notice_id = sn.notice_id
left join base_team_user btu on sng.group_code = btu.team_code
where sng.notice_id = #{noticeId}
where sng.notice_id = #{noticeId} and sng.del_flag = '0'
</select>
<select id="getWxId" resultType="java.lang.String">
select wx_id from sys_user where del_flag = '0' and wx_id is not null

@ -221,9 +221,11 @@
where record_id = #{recordId}
</update>
<delete id="deleteQcCheckTaskInventoryByRecordId" parameterType="String">
delete from qc_check_task where record_id = #{recordId}
</delete>
<update id="deleteQcCheckTaskInventoryByRecordId" parameterType="String">
update qc_check_task
set del_flag = '1'
where record_id = #{recordId}
</update>
<delete id="deleteQcCheckTaskInventoryByRecordIds" parameterType="String">
delete from qc_check_task where record_id in

@ -321,9 +321,11 @@
where record_id = #{recordId}
</update>
<delete id="deleteQcCheckTaskProduceByRecordId" parameterType="String">
delete from qc_check_task where record_id = #{recordId}
</delete>
<update id="deleteQcCheckTaskProduceByRecordId" parameterType="String">
update qc_check_task
set del_flag = '1'
where record_id = #{recordId}
</update>
<delete id="deleteQcCheckTaskProduceByRecordIds" parameterType="String">
delete from qc_check_task where record_id in
@ -434,8 +436,31 @@
left join base_equipment be on be.equipment_code = pow.workorder_name and be.equipment_type_code = 'equ_type_bzx'
where pow.del_flag = '0'
and pow.status = #{status} and pow.parent_order = '0'
<!---->and (pow.product_date = CONVERT(varchar(10),GETDATE(), 120)
or pow.product_date = CONVERT(varchar(10),DATEADD(DAY, -1, GETDATE()), 120))
and (pow.product_date = CONVERT(varchar(10),GETDATE(), 120)
or pow.product_date = CONVERT(varchar(10),DATEADD(DAY, -1, GETDATE()), 120))
</select>
<select id="getOrderWorksW3" resultType="com.op.quality.domain.QcCheckTaskProduce">
select top 1
pow.factory_code factoryCode,
pow.workorder_code workorderCode,
pow.product_code materialCode,
pow.product_name materialName,
pow.quantity_split quality,
pow.unit,
be.workshop_code supplierCode,
be.workshop_name supplierName,
pow.product_date incomeTime,
pow.workorder_name checkLoc,
pow.prod_type productType,
qct.check_no
from pro_order_workorder pow
left join base_equipment be on be.equipment_code = pow.workorder_name and be.equipment_type_code = 'equ_type_bzx'
left join qc_check_task qct on qct.order_no = pow.workorder_code and qct.check_type='checkTypeCP' and qct.del_flag = '0'
where pow.del_flag = '0'
and pow.status = #{status} and pow.parent_order = '0'
and (pow.product_date = CONVERT(varchar(10),GETDATE(), 120)
or pow.product_date = CONVERT(varchar(10),DATEADD(DAY, -1, GETDATE()), 120))
and qct.check_no is null
</select>
<select id="getLastXJTask" resultType="com.op.quality.domain.QcCheckTaskProduce">
select top 1

@ -116,9 +116,11 @@
</foreach>
</delete>
<delete id="deleteQcCheckTaskUserByBelongTo" parameterType="String">
delete from qc_check_task_user where belong_to = #{belongTo}
</delete>
<update id="deleteQcCheckTaskUserByBelongTo" parameterType="String">
update qc_check_task_user
set del_flag = '1'
where belong_to = #{belongTo}
</update>
<insert id="insertQcCheckTaskUserList" parameterType="List">
insert into qc_check_task_user(
@ -168,11 +170,17 @@
group by belong_to
</select>
<delete id="deleteQcCheckTaskUserByBelongTos" parameterType="String">
delete from qc_check_task_user where belong_to in
<foreach item="belongTo" collection="Array" open="(" separator="," close=")">
<update id="deleteQcCheckTaskUserByBelongTos" parameterType="String">
update qc_check_task_user set del_flag = '1' where belong_to in
<foreach item="belongTo" collection="array" open="(" separator="," close=")">
#{belongTo}
</foreach>
</delete>
</update>
<update id="deleteTaskDetailByBelongTos" parameterType="String">
update qc_check_task_detail set del_flag = '1' where belong_to in
<foreach item="belongTo" collection="array" open="(" separator="," close=")">
#{belongTo}
</foreach>
</update>
</mapper>

@ -35,6 +35,8 @@
<result property="delFlag" column="del_flag"/>
<result property="checkType" column="check_type"/>
<result property="sampleQuality" column="sample_quality"/>
<result property="checkName" column="checkName"/>
</resultMap>
<sql id="selectQcCheckTaskWarehousingVo">
@ -53,7 +55,7 @@
qct.supplier_code, qct.supplier_name, qct.income_time, qct.check_loc, qct.check_status,
qct.check_man_code, qct.check_man_name,qct.check_time, qct.check_result, qct.status,
qct.create_by,qct.create_time, qct.update_by, qct.update_time,qct.check_type, qct.sample_quality,
qct.noOk_quality, q.type_code
qct.noOk_quality, q.type_code ,q.check_name checkName
from qc_check_task qct
left join qc_check_type q on q.id = qct.check_type
<where>
@ -221,10 +223,10 @@
delete from qc_check_task where record_id = #{recordId}
</delete>
<delete id="deleteQcCheckTaskWarehousingByRecordIds" parameterType="String">
delete from qc_check_task where record_id in
<update id="deleteQcCheckTaskWarehousingByRecordIds" parameterType="String">
update qc_check_task set del_flag = '1' where record_id in
<foreach item="recordId" collection="array" open="(" separator="," close=")">
#{recordId}
</foreach>
</delete>
</update>
</mapper>

@ -122,7 +122,7 @@
<!--,qcp.check_standard checkStandard-->
from qc_check_type_project qctp
left join qc_check_project qcp on qcp.id = qctp.project_id
where qctp.del_flag = '0' and qctp.status = '1'
where qctp.del_flag = '0' and qctp.status = '1' and qcp.del_flag='0'
and qctp.group_id = #{groupId}
and qctp.type_id = #{typeId}
order by qctp.sort

@ -116,9 +116,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
quantity_split quality,
unit,
product_date incomeTime,
status
status,
workorder_name checkLocName
from pro_order_workorder
where status != 'w5' and parent_order = '0' and workorder_code_sap is not null
where status != 'w6' and parent_order = '0' and workorder_code_sap is not null
and workorder_name is not null
<if test="orderNo != null">and workorder_code_sap like concat ('%',#{orderNo},'%')</if>
order by product_date desc
</select>
@ -135,7 +137,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from wms_product_put wpp
left join mes_report_work mrw on wpp.work_order = mrw.report_code
where 1=1
<if test="orderNo != null">and wpp.work_order like concat like ('%',#{orderNo})</if>
<if test="orderNo != null">and wpp.work_order like concat ('%',#{orderNo})</if>
order by wpp.create_time desc
</select>
<select id="getDefectListPDA" resultType="com.op.quality.domain.QcDefectType">

Loading…
Cancel
Save